diff options
author | Adrien Ferrand <adferrand@users.noreply.github.com> | 2021-12-14 04:38:14 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-12-14 04:38:14 +0300 |
commit | 89ccbccff0582728faf9c48d1e055bd6d1218d1f (patch) | |
tree | 0cbf97bc038348ee706d9c469d92c28ac5016165 /certbot-dns-nsone | |
parent | cb3e1403cdf0b1e00a384c06bdc85b70b2bf0a09 (diff) |
Fully type all DNS plugins (#9125)
* Add types in all DNS plugins
* Order imports
* Fix type
* Update certbot-dns-route53/certbot_dns_route53/_internal/dns_route53.py
Co-authored-by: alexzorin <alex@zor.io>
* Clean up imports
Co-authored-by: alexzorin <alex@zor.io>
Diffstat (limited to 'certbot-dns-nsone')
-rw-r--r-- | certbot-dns-nsone/certbot_dns_nsone/_internal/dns_nsone.py | 31 |
1 files changed, 18 insertions, 13 deletions
diff --git a/certbot-dns-nsone/certbot_dns_nsone/_internal/dns_nsone.py b/certbot-dns-nsone/certbot_dns_nsone/_internal/dns_nsone.py index a66e09868..ebc7f5fef 100644 --- a/certbot-dns-nsone/certbot_dns_nsone/_internal/dns_nsone.py +++ b/certbot-dns-nsone/certbot_dns_nsone/_internal/dns_nsone.py @@ -1,8 +1,11 @@ """DNS Authenticator for NS1 DNS.""" import logging +from typing import Any +from typing import Callable from typing import Optional from lexicon.providers import nsone +from requests import HTTPError from certbot import errors from certbot.plugins import dns_common @@ -23,20 +26,21 @@ class Authenticator(dns_common.DNSAuthenticator): description = 'Obtain certificates using a DNS TXT record (if you are using NS1 for DNS).' ttl = 60 - def __init__(self, *args, **kwargs): + def __init__(self, *args: Any, **kwargs: Any) -> None: super().__init__(*args, **kwargs) self.credentials: Optional[CredentialsConfiguration] = None @classmethod - def add_parser_arguments(cls, add): # pylint: disable=arguments-differ - super().add_parser_arguments(add, default_propagation_seconds=30) + def add_parser_arguments(cls, add: Callable[..., None], + default_propagation_seconds: int = 30) -> None: + super().add_parser_arguments(add, default_propagation_seconds) add('credentials', help='NS1 credentials file.') - def more_info(self): # pylint: disable=missing-function-docstring + def more_info(self) -> str: return 'This plugin configures a DNS TXT record to respond to a dns-01 challenge using ' + \ 'the NS1 API.' - def _setup_credentials(self): + def _setup_credentials(self) -> None: self.credentials = self._configure_credentials( 'credentials', 'NS1 credentials file', @@ -45,13 +49,13 @@ class Authenticator(dns_common.DNSAuthenticator): } ) - def _perform(self, domain, validation_name, validation): + def _perform(self, domain: str, validation_name: str, validation: str) -> None: self._get_nsone_client().add_txt_record(domain, validation_name, validation) - def _cleanup(self, domain, validation_name, validation): + def _cleanup(self, domain: str, validation_name: str, validation: str) -> None: self._get_nsone_client().del_txt_record(domain, validation_name, validation) - def _get_nsone_client(self): + def _get_nsone_client(self) -> "_NS1LexiconClient": if not self.credentials: # pragma: no cover raise errors.Error("Plugin has not been prepared.") return _NS1LexiconClient(self.credentials.conf('api-key'), self.ttl) @@ -62,7 +66,7 @@ class _NS1LexiconClient(dns_common_lexicon.LexiconClient): Encapsulates all communication with the NS1 via Lexicon. """ - def __init__(self, api_key, ttl): + def __init__(self, api_key: str, ttl: int) -> None: super().__init__() config = dns_common_lexicon.build_lexicon_config('nsone', { @@ -73,13 +77,14 @@ class _NS1LexiconClient(dns_common_lexicon.LexiconClient): self.provider = nsone.Provider(config) - def _handle_http_error(self, e, domain_name): - if domain_name in str(e) and (str(e).startswith('404 Client Error: Not Found for url:') or \ + def _handle_http_error(self, e: HTTPError, domain_name: str) -> Optional[errors.PluginError]: + if domain_name in str(e) and (str(e).startswith('404 Client Error: Not Found for url:') or str(e).startswith("400 Client Error: Bad Request for url:")): return None # Expected errors when zone name guess is wrong hint = None if str(e).startswith('401 Client Error: Unauthorized for url:'): hint = 'Is your API key correct?' - return errors.PluginError('Error determining zone identifier: {0}.{1}' - .format(e, ' ({0})'.format(hint) if hint else '')) + hint_disp = f' ({hint})' if hint else '' + + return errors.PluginError(f'Error determining zone identifier: {e}.{hint_disp}') |