U
    ^g%io	                     @   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   s   t ddS )z&:rtype str Grant's twilio specific keyzGrant must have a key property.NNotImplementedErrorself r   _/var/www/html/api-medvista/venv/lib/python3.8/site-packages/twilio/jwt/access_token/__init__.pykey	   s    zAccessTokenGrant.keyc                 C   s   t ddS )z:return: dict somethingz Grant must implement to_payload.Nr   r   r   r   r	   
to_payload   s    zAccessTokenGrant.to_payloadc                 C   s   d | jj|  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                       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 ResourcesZ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.)Z
secret_key	algorithmZ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 )NZctyztwilio-fpa;v=1Ztwr)r$   r   str)r   headersr   r   r	   _generate_headers@   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>J   s      z1AccessToken._generate_payload.<locals>.<dictcomp>)Zjtir%   r%   r#   )inttimer   r"   r%   r#   )r   nowpayloadr   r   r	   _generate_payloadF   s    zAccessToken._generate_payloadc                 C   s   d | jj|  S r   )r   r   r   Zto_jwtr   r   r   r	   r   P   s    zAccessToken.__str__)r   r   r   r   r(   r   ZGENERATEr'   r-   r0   r6   r   __classcell__r   r   r*   r	   r      s   
r   )r3   Z
twilio.jwtr   objectr   r   r   r   r   r	   <module>   s   