o
    >h                     @   sn   d dl mZmZ d dlmZm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timezone)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   p/var/www/vedio/testing/chatpythonscript.ninositsolution.com/env/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   5   s   
zSimpleToken.ttlc                 C   s   | j dkrdS |  dkS )Nr/   Fr   )r-   r   r   r   r   r   r   ;   s   
zSimpleToken.is_expiredr   c                 C      | j |S r
   )r,   getr   r   r   r   r   A      zSimpleToken.try_getc                 C   r#   r
   )r)   r   r   r   r   r   D   r%   zSimpleToken.get_valuec                 C   r#   r
   )r-   r   r   r   r   r   G   r%   zSimpleToken.get_expires_at_msc                 C   r#   r
   )r.   r   r   r   r   r   J   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   sv   zdd l }W n ty } ztd| jj d|d }~ww || _|j| jddi|| jdgd| _| 	  d S )Nr   z"The PyJWT library is required for .verify_signatureFalg)options
algorithms)
jwtImportError	__class__r   _valuedecodeget_unverified_headerr5   _decoded_validate_token)r   r   r?   ier   r   r   r"   Q   s"   zJWToken.__init__r   c                 C   s8   | j d }|dkrdS | j d d ttj d kS )Nr9   r/   Fr0   rE   r   r1   r   r2   r3   r   r9   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 )Nr9   r/   r0   rH   rI   r   r   r   r   i   rJ   zJWToken.ttlr   c                 C   r4   r
   )rE   r5   r   r   r   r   r   r   r6   zJWToken.try_getc                 C   r#   r
   )rB   r   r   r   r   r   u   r%   zJWToken.get_valuec                 C   s   t | jd d S )Nr9   r0   )r   rE   r   r   r   r   r   x   s   zJWToken.get_expires_at_msc                 C   s   t tj d S )Nr0   )r   r1   r   r2   r3   r   r   r   r   r   {   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   )rE   keyslenREQUIRED_FIELDSr   )r   actual_fieldsr   r   r   rF   ~   s   zJWToken._validate_tokenN)r   r   r   rP   r   r"   r   r   r   r   r   r   r   r   rF   r   r   r   r   r8   N   s    		r8   N)abcr   r   r   r   redis.auth.errr   r   r   r(   r8   r   r   r   r   <module>   s    "