
    pif                     f    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e      Zy)    N)datetimetimezone)AuthType)AuthStrategy)TokenManagerc                   H     e Zd Zdef fdZdefdZdefdZd Z	d Z
 xZS )TokenAuthStrategytoken_managerc                    t         |   t        j                         || _        d | _        t        j                         | _        t        j                  t        j                         t        j                  t              | _        y )N)level)super__init__r   
ORGS_TOKENr
   token	threadingLocklockloggingbasicConfigINFO	getLogger__name__logger)selfr
   	__class__s     j/opt/services/ai/voice_agent/venv/lib/python3.12/site-packages/twilio/auth_strategy/token_auth_strategy.pyr   zTokenAuthStrategy.__init__   sW    ,,-*
NN$	',,/''1    returnc                 @    | j                          d| j                   S )NzBearer )fetch_tokenr   r   s    r   get_auth_stringz!TokenAuthStrategy.get_auth_string   s    %%r   c                      y)NT r!   s    r   requires_authenticationz)TokenAuthStrategy.requires_authentication   s    r   c                    | j                   *| j                   dk(  s| j                  | j                         r| j                  5  | j                   *| j                   dk(  s| j                  | j                         r:| j                  j	                  d       | j
                  j                         | _         d d d        y y # 1 sw Y   y xY w)N z0New token fetched for accessing organization API)r   is_token_expiredr   r   infor
   fetch_access_tokenr!   s    r   r    zTokenAuthStrategy.fetch_token   s    ::r!1T5J5J4::5V IJJ&zzR',,TZZ8KK$$%WX!%!3!3!F!F!HDJI I 6WI Is   A1B>>Cc                 `   	 t        j                  |ddi      }|j                  d      }|yt        j                  |t
        j                        t        j                  t
        j                        k  S # t         j                  $ r Y yt        $ r}t        d|        Y d }~yd }~ww xY w)Nverify_signatureF)optionsexpT)tzzAn error occurred: )jwtdecodegetr   fromtimestampr   utcnowDecodeError	Exceptionprint)r   r   decodedr.   es        r   r(   z"TokenAuthStrategy.is_token_expired&   s    	jj1CU0KLG++e$C{ ))#(,,?(,,C    	 	's+,	s#   ,A8 AA8 8B-B-B((B-)r   
__module____qualname__r   r   strr"   boolr%   r    r(   __classcell__)r   s   @r   r	   r	      s2    2l 2& & 	Ir   r	   )r0   r   r   r   r   twilio.auth_strategy.auth_typer   "twilio.auth_strategy.auth_strategyr   twilio.http.token_managerr   r	   r$   r   r   <module>rC      s&    
   ' 3 ; 2, ,r   