509318396
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
3
¢báWK  ã               @   s\   d Z ddlZddlZddlZddlmZ ejjdƒZ	e	fdd„Z
e	dfd	d
„Zddd„ZdS )z‚DNS E.164 helpers

@var public_enum_domain: The DNS public ENUM domain, e164.arpa.
@type public_enum_domain: dns.name.Name object
é    Né   )Ústring_typesz
e164.arpa.c             C   s,   dd„ | D ƒ}|j ƒ  tjjdj|ƒ|d�S )au  Convert an E.164 number in textual form into a Name object whose
    value is the ENUM domain name for that number.
    @param text: an E.164 number in textual form.
    @type text: str
    @param origin: The domain in which the number should be constructed.
    The default is e164.arpa.
    @type origin: dns.name.Name object or None
    @rtype: dns.name.Name object
    c             S   s   g | ]}|j ƒ r|‘qS © )Úisdigit)Ú.0Údr   r   ú/usr/lib/python3.6/e164.pyú
<listcomp>)   s    zfrom_e164.<locals>.<listcomp>Ú.)Úorigin)ÚreverseÚdnsÚnameÚ	from_textÚjoin)Útextr   Úpartsr   r   r   Ú	from_e164   s    
r   Tc             C   sb   |dk	r| j |ƒ} dd„ | jD ƒ}t|ƒt| jƒkr@tjjdƒ‚|jƒ  dj|ƒ}|r^d| }|S )a¨  Convert an ENUM domain name into an E.164 number.
    @param name: the ENUM domain name.
    @type name: dns.name.Name object.
    @param origin: A domain containing the ENUM domain name.  The
    name is relativized to this domain before being converted to text.
    @type origin: dns.name.Name object or None
    @param want_plus_prefix: if True, add a '+' to the beginning of the
    returned number.
    @rtype: str
    Nc             S   s$   g | ]}|j ƒ rt|ƒd kr|‘qS )r   )r   Úlen)r   r   r   r   r   r	   ;   s    zto_e164.<locals>.<listcomp>z$non-digit labels in ENUM domain nameó    ó   +)Z
relativizeZlabelsr   r   Z	exceptionÚSyntaxErrorr   r   )r   r   Zwant_plus_prefixZdlabelsr   r   r   r   Úto_e164.   s    

r   c             C   s’   |dkrt jjƒ }t jjƒ }xl|D ]d}t|tƒr<t jj|ƒ}t jj	| |ƒ}y|j
|dƒS  t jjk
r„ } z||7 }W Y dd}~X q"X q"W |‚dS )z‘Look for NAPTR RRs for the specified number in the specified domains.

    e.g. lookup('16505551212', ['e164.dnspython.org.', 'e164.arpa.'])
    NZNAPTR)r   ÚresolverZget_default_resolverZNXDOMAINÚ
isinstancer   r   r   Ze164r   Úquery)ZnumberZdomainsr   Ze_nxZdomainZqnameÚer   r   r   r   E   s    



r   )N)Ú__doc__Zdns.exceptionr   Zdns.nameZdns.resolverZ_compatr   r   r   Zpublic_enum_domainr   r   r   r   r   r   r   Ú<module>   s   