U
    ^g%if                     @   s`   d dl Z d dlZd dlZd dlmZmZ d dlmZ d dlmZ d dl	m
Z
 G dd deZdS )    N)datetimetimezone)AuthType)AuthStrategy)TokenManagerc                       sN   e Zd Zed fddZedddZedddZd	d
 Z	dd Z
  ZS )TokenAuthStrategy)token_managerc                    sB   t  tj || _d | _t | _t	j
t	jd t	t| _d S )N)level)super__init__r   Z
ORGS_TOKENr   token	threadingLocklockloggingbasicConfigINFO	getLogger__name__logger)selfr   	__class__ g/var/www/html/api-medvista/venv/lib/python3.8/site-packages/twilio/auth_strategy/token_auth_strategy.pyr      s    
zTokenAuthStrategy.__init__)returnc                 C   s   |    d| j S )NzBearer )fetch_tokenr   r   r   r   r   get_auth_string   s    z!TokenAuthStrategy.get_auth_stringc                 C   s   dS )NTr   r   r   r   r   requires_authentication   s    z)TokenAuthStrategy.requires_authenticationc              	   C   sn   | j d ks | j dks | | j rj| j> | j d ksH| j dksH| | j r`| jd | j | _ W 5 Q R X d S )N z0New token fetched for accessing organization API)r   is_token_expiredr   r   infor   Zfetch_access_tokenr   r   r   r   r      s     
zTokenAuthStrategy.fetch_tokenc              
   C   s   zHt j|ddid}|d}|d kr,W dS tj|tjdttjk W S  t jk
r`   Y dS  t	k
r } zt
d|  W Y dS d }~X Y nX d S )NZverify_signatureF)optionsexpT)tzzAn error occurred: )jwtdecodegetr   fromtimestampr   utcnowDecodeError	Exceptionprint)r   r   decodedr$   er   r   r   r!   &   s    
z"TokenAuthStrategy.is_token_expired)r   
__module____qualname__r   r   strr   boolr   r   r!   __classcell__r   r   r   r   r      s
   r   )r&   r   r   r   r   Ztwilio.auth_strategy.auth_typer   Z"twilio.auth_strategy.auth_strategyr   Ztwilio.http.token_managerr   r   r   r   r   r   <module>   s   