o
    �¨Êh_  ã                   @   s8   d dl Z d dlmZ G dd„ deƒZG dd„ deƒZdS )é    N)ÚJwtc                   @   s,   e Zd ZdZedd„ ƒZdd„ Zdd„ ZdS )	ÚAccessTokenGrantz*A Grant giving access to a Twilio Resourcec                 C   ó   t dƒ‚)z&:rtype str Grant's twilio specific keyzGrant must have a key property.©ÚNotImplementedError©Úself© r	   úR/var/www/html/env/lib/python3.10/site-packages/twilio/jwt/access_token/__init__.pyÚkey   s   zAccessTokenGrant.keyc                 C   r   )z:return: dict somethingz Grant must implement to_payload.r   r   r	   r	   r
   Ú
to_payload   s   zAccessTokenGrant.to_payloadc                 C   s   d  | jj|  ¡ ¡ d S )Nz<{} {}>)ÚformatÚ	__class__Ú__name__r   r   r	   r	   r
   Ú__str__   s   zAccessTokenGrant.__str__N)r   Ú
__module__Ú__qualname__Ú__doc__Úpropertyr   r   r   r	   r	   r	   r
   r      s    
r   c                       sN   e Zd ZdZddejddf‡ fdd„	Zdd„ Zdd	„ Zd
d„ Z	dd„ Z
‡  ZS )ÚAccessTokenzUAccess Token containing one or more AccessTokenGrants used to access Twilio ResourcesNi  c	           	   	      s^   |pg }t dd„ |D ƒƒrtdƒ‚|| _|| _|| _|| _tt| ƒj|d|| j|||d� d S )Nc                 s   s   � | ]	}t |tƒ V  qd S )N)Ú
isinstancer   )Ú.0Úgr	   r	   r
   Ú	<genexpr>   s   € z'AccessToken.__init__.<locals>.<genexpr>z-Grants must be instances of AccessTokenGrant.ÚHS256)Ú
secret_keyÚ	algorithmÚissuerÚsubjectÚnbfÚttlÚvalid_until)	ÚanyÚ
ValueErrorÚaccount_sidÚsigning_key_sidÚidentityÚgrantsÚsuperr   Ú__init__)	r   r$   r%   Úsecretr'   r&   r   r    r!   ©r   r	   r
   r)      s    

ùzAccessToken.__init__c                 C   s"   t |tƒs	tdƒ‚| j |¡ dS )zAdd a grant to this AccessTokenz.Grant must be an instance of AccessTokenGrant.N)r   r   r#   r'   Úappend)r   Úgrantr	   r	   r
   Ú	add_grant+   s   
zAccessToken.add_grantc                 C   s   ddiS )NÚctyztwilio-fpa;v=1r	   r   r	   r	   r
   Ú_generate_headers1   s   ÿzAccessToken._generate_headersc                 C   sD   t t ¡ ƒ}d | j|¡dd„ | jD ƒdœ}| jr | j|d d< |S )Nz{}-{}c                 S   s   i | ]}|j | ¡ “qS r	   )r   r   )r   r-   r	   r	   r
   Ú
<dictcomp>:   s    z1AccessToken._generate_payload.<locals>.<dictcomp>)Újtir'   r'   r&   )ÚintÚtimer   r%   r'   r&   )r   ÚnowÚpayloadr	   r	   r
   Ú_generate_payload6   s   þzAccessToken._generate_payloadc                 C   s   d  |  ¡ ¡S )Nz<AccessToken {}>)r   Úto_jwtr   r	   r	   r
   r   @   s   zAccessToken.__str__)r   r   r   r   r   ÚGENERATEr)   r.   r0   r7   r   Ú__classcell__r	   r	   r+   r
   r      s    
ÿ
r   )r4   Ú
twilio.jwtr   Úobjectr   r   r	   r	   r	   r
   Ú<module>   s    