39 lines
1.3 KiB
Python
39 lines
1.3 KiB
Python
import os
|
|
|
|
import ovh
|
|
from ovh import HTTPError, InvalidResponse
|
|
|
|
from shortener.api_connectors.base_api_connector import BaseApiConnector
|
|
from shortener.data_structures import UserInput
|
|
from shortener.exceptions import ApiException
|
|
|
|
|
|
class OvhApi(BaseApiConnector):
|
|
def __init__(self):
|
|
endpoint = os.environ["OVH_ENDPOINT"]
|
|
application_key = os.environ["OVH_APPLICATION_KEY"]
|
|
application_secret = os.environ["OVH_APPLICATION_SECRET"]
|
|
consumer_key = os.environ["OVH_CONSUMER_KEY"]
|
|
self._base_domain = os.environ["BASE_DOMAIN"]
|
|
self._client = ovh.Client(
|
|
endpoint=endpoint,
|
|
application_key=application_key,
|
|
application_secret=application_secret,
|
|
consumer_key=consumer_key,
|
|
)
|
|
|
|
def add_record(self, user_input: UserInput) -> None:
|
|
try:
|
|
self._add_record(user_input)
|
|
except (HTTPError, InvalidResponse) as e:
|
|
raise ApiException(message=str(e))
|
|
|
|
def _add_record(self, user_input: UserInput) -> None:
|
|
self._client.post(
|
|
f"/domain/zone/{self._base_domain}/record",
|
|
fieldType="TXT",
|
|
subDomain=user_input.short_code,
|
|
target=user_input.url,
|
|
)
|
|
self._client.post(f"/domain/zone/{self._base_domain}/refresh")
|