Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/certbot/certbot.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdrien Ferrand <adferrand@users.noreply.github.com>2021-12-14 04:38:14 +0300
committerGitHub <noreply@github.com>2021-12-14 04:38:14 +0300
commit89ccbccff0582728faf9c48d1e055bd6d1218d1f (patch)
tree0cbf97bc038348ee706d9c469d92c28ac5016165 /certbot-dns-nsone
parentcb3e1403cdf0b1e00a384c06bdc85b70b2bf0a09 (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.py31
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}')