
    =hN
                         d dl mZ d dlZd dlZd dlmZ d dlmZmZ  e ej                  d       ej                  d            Z
deded	efd
Z	 	 	 ddededee   dee   dee   f
dZy)    )ClientN)HTTPException)ListOptionalTWILIO_ACCOUNT_SIDTWILIO_AUTH_TOKEN	to_numbermessagefrom_numberc                    K   	 t         j                  j                  |||        y # t        $ r}t        dt	        |             d }~ww xY ww)N)bodyfrom_tozFailed to send SMS: )twilio_clientmessagescreate	Exceptionstr)r	   r
   r   es       E/var/www/html/phonemate/phone_mate_backend/services/twilio_service.pysend_smsr   
   sL     9%%7+)%T 9.s1vh7889s$   A"' A	AAAAcountrynumber_typecontainspagestatec           
      t  K   t        j                  d      }t        j                  d      }|r|st        dd      dddd}|r||d	<   |t        |      |d
<   |r
|dk7  r||d<   d| d|  d|dk(  rdndz   dz   }	 t	        j
                         4 d {   }	|	j                  ||||f       d {   }
d d d       d {    
j                  dk7  rt        |
j                  d      |
j                         }d|vrt        dd      |d   D cg c]I  }|j                  d      |d   |j                  d      |j                  d      |j                  d      dK }}g }||dS 7 7 7 # 1 d {  7  sw Y   xY wc c}w # t        $ r}t        dd t        |             d }~ww xY ww)!Nr   r   i  z"Twilio credentials not configured.)status_codedetailtrue20)VoiceEnabledExcludeAllAddressRequiredPageSizeContainsPagetollfreeInRegionz+https://api.twilio.com/2010-04-01/Accounts/z/AvailablePhoneNumbers//TollFreeLocalz.json)paramsauth   z$Failed to fetch numbers from Twilio.available_phone_numbersi  z!No available phone numbers found.friendly_namephone_numberlocalitypostal_coderegion)r0   r1   r2   r3   r   )OfferNumbersFinalNumbersListzUnexpected error: )
osgetenvr   r   httpxAsyncClientgetr   jsonr   )r   r   r   r   r   sidtokenr,   urlclientresponsedataitemfinal_numbersoffer_numbersr   s                   r   fetch_twilio_numbersrF      s     ))(
)CII)*Ee$H
 	

 %+F %zTv
*"z 6cU:QRYQZZ[\$
2:	A
	 %S$$&&&#ZZF#uZNNH '& 3&$00= 
 }}$D0(K  67	
 8 "&/!: $^ 4 HHZ0#xx6(+ 8 	 	
  * -
 	
= 'N '&&& 	
&  S6HQ4QRRSs   A;F8>F E.F E44E05E49F E2AF AF	%F -F8.F 0E42F 4F:E=;FF 	F5F00F55F8)NNN)twilio.restr   r7   r9   fastapir   typingr   r   r8   r   r   r   intrF        r   <module>rM      s     	  ! !yryy!56			BU8VW9c 9C 9c 9 #GSGSGS smGS 3-	GS
 C=GSrL   