
    h                         d dl mZmZ d dlmZmZ d dlmZ  G d de          Z G d d          Z G d d	e          Z	 G d
 de          Z
dS )    )ABCabstractmethod)datetimetimezone)InvalidTokenSchemaErrc                       e Zd Zedefd            Zedefd            Zededefd            Z	edefd            Z
edefd            Zedefd            Zd	S )
TokenInterfacereturnc                     d S N selfs    P/var/www/html/auto_sub_bot/venv/lib/python3.11/site-packages/redis/auth/token.py
is_expiredzTokenInterface.is_expired           c                     d S r   r   r   s    r   ttlzTokenInterface.ttl   r   r   keyc                     d S r   r   r   r   s     r   try_getzTokenInterface.try_get   r   r   c                     d S r   r   r   s    r   	get_valuezTokenInterface.get_value   r   r   c                     d S r   r   r   s    r   get_expires_at_msz TokenInterface.get_expires_at_ms   r   r   c                     d S r   r   r   s    r   get_received_at_msz!TokenInterface.get_received_at_ms   r   r   N)__name__
__module____qualname__r   boolr   floatr   strr   r   r   r   r   r   r   r	   r	      s       D    ^ U    ^ 3 3    ^ 3    ^ 5    ^ E    ^  r   r	   c                   2    e Zd ZdefdZdefdZdefdZdS )TokenResponsetokenc                     || _         d S r   _token)r   r(   s     r   __init__zTokenResponse.__init__"   s    r   r
   c                     | j         S r   r*   r   s    r   	get_tokenzTokenResponse.get_token%   
    {r   c                 h    | j                                         | j                                         z
  S r   )r+   r   r   r   s    r   
get_ttl_mszTokenResponse.get_ttl_ms(   s)    {,,..1O1O1Q1QQQr   N)r    r!   r"   r	   r,   r.   r$   r1   r   r   r   r'   r'   !   sl        n    >    RE R R R R R Rr   r'   c            
       v    e Zd Zdededededdf
dZdefdZdefd	Z	d
edefdZ
defdZdefdZdefdZdS )SimpleTokenvalueexpires_at_msreceived_at_msclaimsr
   Nc                 >    || _         || _        || _        || _        d S r   )r4   
expires_atreceived_atr7   )r   r4   r5   r6   r7   s        r   r,   zSimpleToken.__init__-   s%     
')r   c                     | j         dk    rdS | j         t          j        t          j                                                  dz  z
  S )N  )r9   r   nowr   utc	timestampr   s    r   r   zSimpleToken.ttl5   s>    ?b  2(,x|"<"<"F"F"H"H4"OPPr   c                 L    | j         dk    rdS |                                 dk    S )Nr<   Fr   )r9   r   r   s    r   r   zSimpleToken.is_expired;   s&    ?b  5xxzzQr   r   c                 6    | j                             |          S r   )r7   getr   s     r   r   zSimpleToken.try_getA   s    {s###r   c                     | j         S r   )r4   r   s    r   r   zSimpleToken.get_valueD   s
    zr   c                     | j         S r   )r9   r   s    r   r   zSimpleToken.get_expires_at_msG   s
    r   c                     | j         S r   )r:   r   s    r   r   zSimpleToken.get_received_at_msJ   s    r   )r    r!   r"   r%   r$   dictr,   r   r#   r   r   r   r   r   r   r   r   r3   r3   ,   s        ).@EOS	   QU Q Q Q QD    $3 $3 $ $ $ $3    5     E            r   r3   c                   r    e Zd ZdhZdefdZdefdZdefdZ	dedefdZ
defd	Zdefd
ZdefdZd ZdS )JWTokenexpr(   c                 H   	 dd l }n0# t          $ r#}t          d| j        j         d          |d }~ww xY w|| _        |                    | j        ddi|                    | j                                      d          g          | _        | 	                                 d S )Nr   z"The PyJWT library is required for .verify_signatureFalg)options
algorithms)
jwtImportError	__class__r    _valuedecodeget_unverified_headerrC   _decoded_validate_token)r   r(   rQ   ies       r   r,   zJWToken.__init__Q   s    	JJJJ 	 	 	OT^5LOOO 	 

K'/11$+>>BB5IIJ # 
 

 	s    
4/4r
   c                     | j         d         }|dk    rdS | j         d         dz  t          j        t          j                                                  dz  k    S )NrJ   r<   Fr=   rW   r   r>   r   r?   r@   r   rJ   s     r   r   zJWToken.is_expired`   sU    mE""995 M% 4'8<+E+E+O+O+Q+QTX+XX	
r   c                     | j         d         }|dk    rdS | j         d         dz  t          j        t          j                                                  dz  z
  S )NrJ   r<   r=   r[   r\   s     r   r   zJWToken.ttli   sU    mE""992 M% 4'(,x|*D*D*N*N*P*PSW*WW	
r   r   c                 6    | j                             |          S r   )rW   rC   r   s     r   r   zJWToken.try_getr   s    }  %%%r   c                     | j         S r   )rT   r   s    r   r   zJWToken.get_valueu   r/   r   c                 <    t          | j        d         dz            S )NrJ   r=   )r$   rW   r   s    r   r   zJWToken.get_expires_at_msx   s    T]5)D0111r   c                 h    t          j        t          j                                                  dz  S )Nr=   )r   r>   r   r?   r@   r   s    r   r   zJWToken.get_received_at_ms{   s%    |HL))3355<<r   c                     d | j                                         D             }t          | j        |z
            dk    rt	          | j        |z
            d S )Nc                     h | ]}|S r   r   ).0xs     r   	<setcomp>z*JWToken._validate_token.<locals>.<setcomp>   s    999q999r   r   )rW   keyslenREQUIRED_FIELDSr   )r   actual_fieldss     r   rX   zJWToken._validate_token~   s\    99DM$6$6$8$8999t#m34499'(<}(LMMM :9r   N)r    r!   r"   ri   r%   r,   r#   r   r$   r   r   r   r   r   rX   r   r   r   rI   rI   N   s        gOc    
D 
 
 
 

U 
 
 
 
&3 &3 & & & &3    25 2 2 2 2=E = = = =N N N N Nr   rI   N)abcr   r   r   r   redis.auth.errr   r	   r'   r3   rI   r   r   r   <module>rm      s
   # # # # # # # # ' ' ' ' ' ' ' ' 0 0 0 0 0 0    S   4R R R R R R R R         .      D4N 4N 4N 4N 4Nn 4N 4N 4N 4N 4Nr   