U
    <æ{f£  ã                   @   s\   d Z ddlmZ ddlZdZG dd„ dejjƒZe	e
dœdd	„Zee
e	f e
d
œdd„ZdS )zDNS TTL conversion.é    )ÚUnionNl   ÿÿ c                   @   s   e Zd ZdZdS )ÚBadTTLz!DNS TTL value is not well-formed.N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__© r   r   úF/var/www/html/Darija-Ai-API/env/lib/python3.8/site-packages/dns/ttl.pyr       s   r   )ÚtextÚreturnc                 C   s  |   ¡ rt| ƒ}nèt| ƒdkr$t‚nÖd}d}d}| D ]´}|  ¡ rZ|d9 }|t|ƒ7 }d}q4|rbt‚| ¡ }|dkr€||d 7 }n`|dkr–||d 7 }nJ|d	kr¬||d
 7 }n4|dkrÂ||d 7 }n|dkrÔ||7 }ntd| ƒ‚d}d}q4|dksútdƒ‚|dk s|tkrtdƒ‚|S )zûConvert the text form of a TTL to an integer.

    The BIND 8 units syntax for TTLs (e.g. '1w6d4h3m10s') is supported.

    *text*, a ``str``, the textual TTL.

    Raises ``dns.ttl.BadTTL`` if the TTL is not well-formed.

    Returns an ``int``.
    r   Té
   FÚwi€:	 Údi€Q Úhi  Úmé<   Úszunknown unit '%s'ztrailing integerz1TTL should be between 0 and 2**32 - 1 (inclusive))ÚisdigitÚintÚlenr   ÚlowerÚMAX_TTL)r
   ÚtotalÚcurrentZ
need_digitÚcr   r   r	   Ú	from_text$   sB    

r   )Úvaluer   c                 C   s0   t | tƒr| S t | tƒr$tj | ¡S tdƒ‚d S )Nzcannot convert value to TTL)Ú
isinstancer   ÚstrÚdnsÚttlr   Ú
ValueError)r   r   r   r	   ÚmakeV   s
    

r"   )r   Útypingr   Zdns.exceptionr   r   Ú	exceptionÚSyntaxErrorr   r   r   r   r"   r   r   r   r	   Ú<module>   s   2