o
    jìEi5  ã                   @   sv   d dl mZmZ d dlmZmZ d dlZd dlmZ G dd„ deƒZG dd„ dƒZ	G d	d
„ d
eƒZ
G dd„ deƒZdS )é    )ÚABCÚabstractmethod)ÚdatetimeÚtimezoneN)ÚInvalidTokenSchemaErrc                   @   s|   e Zd Zedefdd„ƒZedefdd„ƒZededefdd„ƒZ	edefd	d
„ƒZ
edefdd„ƒZedefdd„ƒZdS )ÚTokenInterfaceÚreturnc                 C   ó   d S ©N© ©Úselfr   r   úM/var/www/agentarbitrage/venv/lib/python3.10/site-packages/redis/auth/token.pyÚ
is_expired	   ó   zTokenInterface.is_expiredc                 C   r	   r
   r   r   r   r   r   Úttl   r   zTokenInterface.ttlÚkeyc                 C   r	   r
   r   ©r   r   r   r   r   Útry_get   r   zTokenInterface.try_getc                 C   r	   r
   r   r   r   r   r   Ú	get_value   r   zTokenInterface.get_valuec                 C   r	   r
   r   r   r   r   r   Úget_expires_at_ms   r   z TokenInterface.get_expires_at_msc                 C   r	   r
   r   r   r   r   r   Úget_received_at_ms   r   z!TokenInterface.get_received_at_msN)Ú__name__Ú
__module__Ú__qualname__r   Úboolr   Úfloatr   Ústrr   r   r   r   r   r   r   r   r      s    r   c                   @   s6   e Zd Zdefdd„Zdefdd„Zdefdd„Zd	S )
ÚTokenResponseÚtokenc                 C   s
   || _ d S r
   ©Ú_token©r   r   r   r   r   Ú__init__#   s   
zTokenResponse.__init__r   c                 C   ó   | j S r
   r    r   r   r   r   Ú	get_token&   ó   zTokenResponse.get_tokenc                 C   s   | j  ¡ | j  ¡  S r
   )r!   r   r   r   r   r   r   Ú
get_ttl_ms)   ó   zTokenResponse.get_ttl_msN)r   r   r   r   r#   r%   r   r'   r   r   r   r   r   "   s    r   c                
   @   s‚   e Zd Zdededededdf
dd„Zdefd	d
„Zdefdd„Z	dedefdd„Z
defdd„Zdefdd„Zdefdd„ZdS )ÚSimpleTokenÚvalueÚexpires_at_msÚreceived_at_msÚclaimsr   Nc                 C   s   || _ || _|| _|| _d S r
   )r*   Ú
expires_atÚreceived_atr-   )r   r*   r+   r,   r-   r   r   r   r#   .   s   
zSimpleToken.__init__c                 C   s(   | j dkrdS | j t tj¡ ¡ d  S )Néÿÿÿÿéè  )r.   r   Únowr   ÚutcÚ	timestampr   r   r   r   r   6   s   
zSimpleToken.ttlc                 C   s   | j dkrdS |  ¡ dkS )Nr0   Fr   )r.   r   r   r   r   r   r   <   s   
zSimpleToken.is_expiredr   c                 C   ó   | j  |¡S r
   )r-   Úgetr   r   r   r   r   B   ó   zSimpleToken.try_getc                 C   r$   r
   )r*   r   r   r   r   r   E   r&   zSimpleToken.get_valuec                 C   r$   r
   )r.   r   r   r   r   r   H   r&   zSimpleToken.get_expires_at_msc                 C   r$   r
   )r/   r   r   r   r   r   K   r&   zSimpleToken.get_received_at_ms)r   r   r   r   r   Údictr#   r   r   r   r   r   r   r   r   r   r   r   r)   -   s$    ÿÿÿÿ
þr)   c                   @   s€   e Zd ZdhZdefdd„Zdefdd„Zdefdd	„Z	d
edefdd„Z
defdd„Zdefdd„Zdefdd„Zdd„ ZdS )ÚJWTokenÚexpr   c                 C   s:   || _ tj| j ddit | j ¡ d¡gd| _|  ¡  d S )NÚverify_signatureFÚalg)ÚoptionsÚ
algorithms)Ú_valueÚjwtÚdecodeÚget_unverified_headerr6   Ú_decodedÚ_validate_tokenr"   r   r   r   r#   S   s   ýzJWToken.__init__r   c                 C   s8   | j d }|dkrdS | j d d t tj¡ ¡ d kS )Nr:   r0   Fr1   ©rC   r   r2   r   r3   r4   ©r   r:   r   r   r   r   \   ó
   
 ÿzJWToken.is_expiredc                 C   s8   | j d }|dkrdS | j d d t tj¡ ¡ d  S )Nr:   r0   r1   rE   rF   r   r   r   r   e   rG   zJWToken.ttlr   c                 C   r5   r
   )rC   r6   r   r   r   r   r   n   r7   zJWToken.try_getc                 C   r$   r
   )r?   r   r   r   r   r   q   r&   zJWToken.get_valuec                 C   s   t | jd d ƒS )Nr:   r1   )r   rC   r   r   r   r   r   t   s   zJWToken.get_expires_at_msc                 C   s   t  tj¡ ¡ d S )Nr1   )r   r2   r   r3   r4   r   r   r   r   r   w   r(   zJWToken.get_received_at_msc                 C   s8   dd„ | j  ¡ D ƒ}t| j| ƒdkrt| j| ƒ‚d S )Nc                 S   s   h | ]}|’qS r   r   )Ú.0Úxr   r   r   Ú	<setcomp>{   s    z*JWToken._validate_token.<locals>.<setcomp>r   )rC   ÚkeysÚlenÚREQUIRED_FIELDSr   )r   Úactual_fieldsr   r   r   rD   z   s   ÿzJWToken._validate_tokenN)r   r   r   rM   r   r#   r   r   r   r   r   r   r   r   rD   r   r   r   r   r9   O   s    			r9   )Úabcr   r   r   r   r@   Úredis.auth.errr   r   r   r)   r9   r   r   r   r   Ú<module>   s    "