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