
    .ir                         d dl Z d dlmZ d dlmZ d dlmZ d dlmZ  e j                  e
      ZdadadZdaej                   Z G d d      Zd Zd	efd
Zd	efdZded	ee   fdZy)    N)Optional)Client)settings)SecretManagerc                   L    e Zd Zed        Zed        Zed        Zed        Zy)TwilioConfigServicec                  ,    t        j                  d      S )NTWILIO_ACCOUNT_SIDr   get     C/var/www/html/dp2/backend_v2.1/server/apps/calls/services/twilio.pyaccount_sidzTwilioConfigService.account_sid         !566r   c                  ,    t        j                  d      S )NTWILIO_AUTH_TOKENr   r   r   r   
auth_tokenzTwilioConfigService.auth_token   s      !455r   c                  ,    t        j                  d      S )NTWILIO_API_KEY_SIDr   r   r   r   api_key_sidzTwilioConfigService.api_key_sid   r   r   c                  ,    t        j                  d      S )NTWILIO_API_KEY_SECRETr   r   r   r   api_key_secretz"TwilioConfigService.api_key_secret   s      !899r   N)__name__
__module____qualname__staticmethodr   r   r   r   r   r   r   r   r      sP    7 7 6 6 7 7 : :r   r   c                  R    t         j                         t         j                         fS )N)r   r   r   r   r   r   get_twilio_credentialsr    #   s     **,.A.L.L.NNNr   returnc                     t         t        t        j                         t        j	                         t        j                               a 	 t        t         j                  d      at        j                  dt                t         S t         S # t        $ r)} dat        j                  d|         Y d} ~ t         S d} ~ ww xY w)z;Return a singleton Twilio API client using Django settings.Nv2zTwilio Lookups v2 supported: Fz+Unable to detect Twilio Lookups v2 support )_twilio_api_clientr   r   r   r   r   hasattrlookups_HAS_LOOKUPS_V2loggerinfo	Exceptionwarning)excs    r   get_twilio_api_clientr-   '   s     !#++-..0++-
	P%&8&@&@$GOKK77HIJ   	P#ONNHNOO	Ps   6B 	B?B::B?c                  z    t         0t        t        j                         t        j	                               a t         S )z7Return a singleton Twilio client using Django settings.)_twilio_clientr   r   r   r   r   r   r   get_twilio_clientr0   :   s4     ++-**,
 r   phone_numberc                    | r| j                         syt               }t        r	 |j                  j                  j                  |       j                  dg      }t        |dd      }t        |t              r5|j                  d      }|r"d|j                         vr|j                         S y	 |j                  j                  |       j                  dg      }t        |dd      }t        |t              r5|j                  d      }|r"d|j                         vr|j                         S y# t        $ r"}t        j                  d|        Y d}~d}~ww xY w# t        $ r"}t        j                  d|        Y d}~yd}~ww xY w)	z
    Retrieve phone number owner name from Twilio

    Args:
        phone_number: The phone number in E.164 format

    Returns:
        A string containing name
    Ncaller_name)fieldsunknownz.Twilio Lookups v2 failed, falling back to v1: zcaller-name)typez)Twilio lookup failed for both v2 and v1: )stripr-   r'   r&   r#   phone_numbersfetchgetattr
isinstancedictr   lowerr*   r(   r+   )r1   clientlookup_resultcaller_name_datanamer,   s         r   get_caller_name_by_phone_numberrB   E   sl    |113"$F	S!!//=}o. 
  '}mTJ*D1'++M:ITZZ\9::<'
JNN((6UU( 	
 #=-F&-#''6D	5zz|#
 '  	SNNKC5QRR	S   JB3%HIIJs1   BD. /A=E .	E7EE	F%FF)loggingtypingr   twilio.restr   django.confr   !apps.core.services.secret_managerr   	getLoggerr   r(   r$   r/   _twilio_sms_clientr'   TWILIO_FROM_NUMBERr   r    r-   r0   strrB   r   r   r   <module>rL      s         ;			8	$  00 : :&Ov &6 2# 2(3- 2r   