shortener/shortener/api_connectors/ovh/ovh_api.py

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")