o
    f>hf                     @   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def fddZdefddZdef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   
ORGS_TOKENr   token	threadingLocklockloggingbasicConfigINFO	getLogger__name__logger)selfr   	__class__ [/var/www/html/venv/lib/python3.10/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   s   | j d u s| j dks| | j rJ| j- | j d u s$| j dks$| | j r8| jd | j | _ W d    d S W d    d S 1 sCw   Y  d S d S )N z0New token fetched for accessing organization API)r   is_token_expiredr   r   infor   fetch_access_tokenr   r   r   r   r      s    


"zTokenAuthStrategy.fetch_tokenc              
   C   s   z$t j|ddid}|d}|d u rW dS tj|tjdttjk W S  t jy/   Y dS  t	yH } zt
d|  W Y d }~dS d }~ww )N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   twilio.auth_strategy.auth_typer   "twilio.auth_strategy.auth_strategyr   twilio.http.token_managerr   r   r   r   r   r   <module>   s    