Module centralnicreseller.apiconnector.idnaprocessor
Classes
class IDNAProcessor
-
Expand source code
class IDNAProcessor: NON_TRANSITIONAL_TLDS = re.compile( r"\.(?:art|be|ca|de|swiss|fr|pm|re|tf|wf|yt)\.?$" ) @staticmethod def is_transitional_processing(domain_name: str) -> bool: """ Determines if the domain name's TLD should use transitional processing. """ return bool(IDNAProcessor.NON_TRANSITIONAL_TLDS.search(domain_name)) @staticmethod def to_ascii(domain_name, use_transitional=None): if use_transitional is None: use_transitional = IDNAProcessor.is_transitional_processing(domain_name) try: if use_transitional: domain_name = idna.uts46_remap(domain_name, transitional=True) return idna.encode(domain_name).decode('ascii') except idna.IDNAError as e: raise ValueError(f"Unable to translate {domain_name} to ASCII: {e}") @staticmethod def to_unicode(domain_name, use_transitional=None): if use_transitional is None: use_transitional = IDNAProcessor.is_transitional_processing(domain_name) try: if use_transitional: return idna.decode(domain_name, uts46=True) else: return idna.decode(domain_name) except idna.IDNAError as e: raise ValueError(f"Unable to translate {domain_name} to Unicode: {e}")
Class variables
var NON_TRANSITIONAL_TLDS
Static methods
def is_transitional_processing(domain_name: str) ‑> bool
-
Expand source code
@staticmethod def is_transitional_processing(domain_name: str) -> bool: """ Determines if the domain name's TLD should use transitional processing. """ return bool(IDNAProcessor.NON_TRANSITIONAL_TLDS.search(domain_name))
Determines if the domain name's TLD should use transitional processing.
def to_ascii(domain_name, use_transitional=None)
-
Expand source code
@staticmethod def to_ascii(domain_name, use_transitional=None): if use_transitional is None: use_transitional = IDNAProcessor.is_transitional_processing(domain_name) try: if use_transitional: domain_name = idna.uts46_remap(domain_name, transitional=True) return idna.encode(domain_name).decode('ascii') except idna.IDNAError as e: raise ValueError(f"Unable to translate {domain_name} to ASCII: {e}")
def to_unicode(domain_name, use_transitional=None)
-
Expand source code
@staticmethod def to_unicode(domain_name, use_transitional=None): if use_transitional is None: use_transitional = IDNAProcessor.is_transitional_processing(domain_name) try: if use_transitional: return idna.decode(domain_name, uts46=True) else: return idna.decode(domain_name) except idna.IDNAError as e: raise ValueError(f"Unable to translate {domain_name} to Unicode: {e}")