
    Ih                         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
y)    )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y	)
TokenInterfacereturnc                      y N selfs    I/var/www/html/planif/env/lib/python3.12/site-packages/redis/auth/token.py
is_expiredzTokenInterface.is_expired           c                      y r   r   r   s    r   ttlzTokenInterface.ttl   r   r   keyc                      y r   r   r   r   s     r   try_getzTokenInterface.try_get   r   r   c                      y r   r   r   s    r   	get_valuezTokenInterface.get_value   r   r   c                      y r   r   r   s    r   get_expires_at_msz TokenInterface.get_expires_at_ms   r   r   c                      y 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                   0    e Zd ZdefdZdefdZdefdZy)TokenResponsetokenc                     || _         y 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                 l    | j                   j                         | j                   j                         z
  S r   )r+   r   r   r   s    r   
get_ttl_mszTokenResponse.get_ttl_ms(   s'    {{,,.1O1O1QQQr   N)r    r!   r"   r	   r,   r.   r$   r1   r   r   r   r'   r'   !   s(    n > RE Rr   r'   c            
       t    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y)SimpleTokenvalueexpires_at_msreceived_at_msclaimsr
   Nc                 <    || _         || _        || _        || _        y r   )r4   
expires_atreceived_atr7   )r   r4   r5   r6   r7   s        r   r,   zSimpleToken.__init__-   s!     
')r   c                     | j                   dk(  ry| j                   t        j                  t        j                        j                         dz  z
  S )N  )r9   r   nowr   utc	timestampr   s    r   r   zSimpleToken.ttl5   s;    ??b (,,x||"<"F"F"H4"OPPr   c                 H    | j                   dk(  ry| j                         dk  S )Nr<   Fr   )r9   r   r   s    r   r   zSimpleToken.is_expired;   s!    ??b xxzQr   r   c                 8    | j                   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    zz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D $3 $3 $3 5  E  r   r3   c                   p    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y)JWTokenexpr(   c                 B   	 dd l }|| _        |j                  | j                  ddi|j                  | j                        j                  d      g      | _        | j                          y # t        $ r)}t        d| j                  j                   d      |d }~ww xY w)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    	
 

KK'/11$++>BB5IJ # 

 	  	4T^^5L5L4MQO	s   A, ,	B5$BBr
   c                     | j                   d   }|dk(  ry| j                   d   dz  t        j                  t        j                        j                         dz  k  S )NrJ   r<   Fr=   rW   r   r>   r   r?   r@   r   rJ   s     r   r   zJWToken.is_expired`   sS    mmE""9 MM% 4'8<<+E+O+O+QTX+XX	
r   c                     | j                   d   }|dk(  ry| j                   d   dz  t        j                  t        j                        j                         dz  z
  S )NrJ   r<   r=   r[   r\   s     r   r   zJWToken.ttli   sS    mmE""9 MM% 4'(,,x||*D*N*N*PSW*WW	
r   r   c                 8    | j                   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                 8    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1r   c                 j    t        j                  t        j                        j	                         dz  S )Nr=   )r   r>   r   r?   r@   r   s    r   r   zJWToken.get_received_at_ms{   s#    ||HLL)335<<r   c                     | j                   j                         D ch c]  }| }}t        | j                  |z
        dk7  rt	        | j                  |z
        y c c}w )Nr   )rW   keyslenREQUIRED_FIELDSr   )r   xactual_fieldss      r   rX   zJWToken._validate_token~   sZ    $(MM$6$6$89q99t##m349'(<(<}(LMM : :s   	AN)r    r!   r"   re   r%   r,   r#   r   r$   r   r   r   r   r   rX   r   r   r   rI   rI   N   sj    gOc 
D 

U 
&3 &3 &3 25 2=E =Nr   rI   N)abcr   r   r   r   redis.auth.errr   r	   r'   r3   rI   r   r   r   <module>rj      sA    # ' 0S 4R R .  D4Nn 4Nr   