o
    e=	                     @   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	   S/var/www/html/venv/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      d | jj|  S Nz<{} {}>)format	__class____name__r   r   r	   r	   r
   __str__      zAccessTokenGrant.__str__N)r   
__module____qualname____doc__propertyr   r   r   r	   r	   r	   r
   r      s    
r   c                       sT   e Zd ZdZdZddejd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 ResourcesHS256Ni  c
           
   	      sf   |pg }t dd |D rtd|| _|| _|| _|	| _|| _tt| j	|| j
|| 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.)
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(   secretr+   r)   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}| j rt| j tr| j |d< |S )Nctyztwilio-fpa;v=1twr)r*   r   str)r   headersr	   r	   r
   _generate_headers5   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   r2   r	   r	   r
   
<dictcomp>A   s    z1AccessToken._generate_payload.<locals>.<dictcomp>)jtir+   r+   r)   )inttimer   r(   r+   r)   )r   nowpayloadr	   r	   r
   _generate_payload=   s   zAccessToken._generate_payloadc                 C   r   r   )r   r   r   to_jwtr   r	   r	   r
   r   G   r   zAccessToken.__str__)r   r   r   r   r.   r   GENERATEr-   r3   r8   r?   r   __classcell__r	   r	   r0   r
   r      s    
r   )r<   
twilio.jwtr   objectr   r   r	   r	   r	   r
   <module>   s    