
    m>ho	                     D    d dl Z d dlmZ  G d de      Z G d de      Zy)    N)Jwtc                   ,    e Zd ZdZed        Zd Zd Zy)AccessTokenGrantz*A Grant giving access to a Twilio Resourcec                     t        d      )z&:rtype str Grant's twilio specific keyzGrant must have a key property.NotImplementedErrorselfs    d/var/www/html/DP/alpha_backend/venv/lib/python3.12/site-packages/twilio/jwt/access_token/__init__.pykeyzAccessTokenGrant.key	   s     ""CDD    c                     t        d      )z:return: dict somethingz Grant must implement to_payload.r   r	   s    r   
to_payloadzAccessTokenGrant.to_payload   s    !"DEEr   c                 j    dj                  | j                  j                  | j                               S Nz<{} {}>)format	__class____name__r   r	   s    r   __str__zAccessTokenGrant.__str__   s&     7 79JKKr   N)r   
__module____qualname____doc__propertyr   r   r    r   r   r   r      s%    4E EFLr   r   c                   `     e Zd ZdZdZddej                  dddf fd	Zd Zd Z	d Z
d	 Z xZS )
AccessTokenzUAccess Token containing one or more AccessTokenGrants used to access Twilio ResourcesHS256Ni  c
           	          |xs g }t        d |D              rt        d      || _        || _        || _        |	| _        || _        t        t        | '  || j                  || j                  |||       y )Nc              3   >   K   | ]  }t        |t                 y w)N)
isinstancer   ).0gs     r   	<genexpr>z'AccessToken.__init__.<locals>.<genexpr>(   s     CFq:a!122Fs   z-Grants must be instances of AccessTokenGrant.)
secret_key	algorithmissuersubjectnbfttlvalid_until)any
ValueErroraccount_sidsigning_key_sididentityregiongrantssuperr   __init__	ALGORITHM)r
   r-   r.   secretr1   r/   r(   r)   r*   r0   r   s             r   r3   zAccessToken.__init__   s     2CFCCLMM&. k4)nn"$$# 	* 	
r   c                 p    t        |t              st        d      | j                  j	                  |       y)zAdd a grant to this AccessTokenz.Grant must be an instance of AccessTokenGrant.N)r    r   r,   r1   append)r
   grants     r   	add_grantzAccessToken.add_grant:   s+    %!12MNN5!r   c                 x    ddi}| j                   r)t        | j                   t              r| j                   |d<   |S )Nctyztwilio-fpa;v=1twr)r0   r    str)r
   headerss     r   _generate_headerszAccessToken._generate_headers@   s3    *+;;:dkk37![[GENr   c                 &   t        t        j                               }dj                  | j                  |      | j                  D ci c]  }|j
                  |j                          c}d}| j                  r| j                  |d   d<   |S c c}w )Nz{}-{})jtir1   r1   r/   )inttimer   r.   r1   r   r   r/   )r
   nowr8   payloads       r   _generate_payloadzAccessToken._generate_payloadF   s|    $))+>>$"6"6<BF++N+uyy%"2"2"44+N
 ==,0MMGHj)	 Os   "Bc                 j    dj                  | j                  j                  | j                               S r   )r   r   r   to_jwtr	   s    r   r   zAccessToken.__str__P   s%     7 7GGr   )r   r   r   r   r4   r   GENERATEr3   r9   r?   rF   r   __classcell__)r   s   @r   r   r      s=    _I LL
>"Hr   r   )rC   
twilio.jwtr   objectr   r   r   r   r   <module>rM      s'     Lv L ;H# ;Hr   