§
    šŠtjê  ã                   ó~   — d Z ddlmZmZmZmZ ddlZddlmZ ddl	m
Z
mZmZ ddlmZ ddlmZ  G d„ d	e
¦  «        ZdS )
z%Util that sends messages via Infobip.é    )ÚAnyÚDictÚListÚOptionalN©Úget_from_dict_or_env)Ú	BaseModelÚ
ConfigDictÚmodel_validator)ÚHTTPAdapter)ÚRetryc                   ó&  — e Zd ZU dZdZee         ed<   dZee         ed<    e	d¬¦  «        Z
 ed¬	¦  «        ed
edefd„¦   «         ¦   «         Zdej        fd„Zdedee         dedefd„Zdededededef
d„Z	 	 	 	 	 ddedededededefd„ZdS )ÚInfobipAPIWrapperz&Wrapper for Infobip API for messaging.NÚinfobip_api_keyzhttps://api.infobip.comÚinfobip_base_urlÚforbid)ÚextraÚbefore)ÚmodeÚvaluesÚreturnc                 óV   — t          |dd¦  «        |d<   t          |dd¦  «        |d<   |S )z,Validate that api key exists in environment.r   ÚINFOBIP_API_KEYr   ÚINFOBIP_BASE_URLr   )Úclsr   s     úc/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/langchain_community/utilities/infobip.pyÚvalidate_environmentz&InfobipAPIWrapper.validate_environment   sI   € õ %9ØÐ%Ð'8ñ%
ô %
ˆÐ Ñ!õ &:ØÐ&Ð(:ñ&
ô &
ˆÐ!Ñ"ð ˆó    c                 óê   — t          ddg d¢¬¦  «        }t          |¬¦  «        }t          j        ¦   «         }|                     d|¦  «         |j                             d| j        › �dd	œ¦  «         |S )
z0Get a requests session with the correct headers.é   é   )i­  iô  iö  i÷  iø  )ÚtotalÚbackoff_factorÚstatus_forcelist)Úmax_retrieszhttps://zApp zinfobip-langchain-community)ÚAuthorizationz
User-Agent)r   r   ÚrequestsÚSessionÚmountÚheadersÚupdater   )ÚselfÚretry_strategyÚadapterÚsessions       r   Ú_get_requests_sessionz'InfobipAPIWrapper._get_requests_session"   s•   € å %ØØØ6Ð6Ð6ð!
ñ !
ô !
ˆõ
  +°~ÐFÑFÔFˆåÔ"Ñ$Ô$ˆØ�Š�j 'Ñ*Ô*Ð*ØŒ×Òà!>¨Ô(<Ð!>Ð!>Ø;ðð ñ	
ô 	
ð 	
ð ˆr   ÚsenderÚdestination_phone_numbersÚtextc                 ó   — dd„ |D ¦   «         ||dœgi}|                       ¦   «         }|j                             ddi¦  «         |                     | j        › d�|¬¦  «        }|                     ¦   «         }	 |j        dk    r|d	         d
         d         S n# t          $ r Y dS w xY w	 |d         d         d         S # t          $ r 	 Y dS w xY w)zSend an SMS message.Úmessagesc                 ó   — g | ]}d |i‘ŒS )Úto© )Ú.0Údestinations     r   ú
<listcomp>z/InfobipAPIWrapper._send_sms.<locals>.<listcomp><   s*   € ð %ð %ð %Ø0;˜˜{Ð+ð%ð %ð %r   )ÚdestinationsÚfromr3   úContent-Typezapplication/jsonz/sms/2/text/advanced)ÚjsonéÈ   ÚrequestErrorÚserviceExceptionr3   úFailed to send messager   Ú	messageIdúECould not get message ID from response, message was sent successfully)r0   r*   r+   Úpostr   r?   Ústatus_codeÚKeyError)r,   r1   r2   r3   r?   r/   ÚresponseÚresponse_jsons           r   Ú	_send_smszInfobipAPIWrapper._send_sms5   sM  € ð
 ð%ð %Ø?Xð%ñ %ô %ð #Ø ðð ðð

ˆð %)×$>Ò$>Ñ$@Ô$@ˆØŒ×ÒàÐ 2ðñ	
ô 	
ð 	
ð '.§l¢lØÔ$Ð:Ð:Ð:Øð '3ñ '
ô '
ˆð
 'Ÿmšm™oœoˆð	,ØÔ# sÒ*Ð*Ø$ ^Ô4Ð5GÔHÈÔPÐPð +øåð 	,ð 	,ð 	,Ø+Ð+Ð+ð	,øøøð	Ø  Ô,¨QÔ/°Ô<Ð<øÝð 	ð 	ð 	àWðð ð ð	øøøs$   Á8B Â
B&Â%B&Â*B> Â>CÃCÚ
from_emailÚto_emailÚsubjectÚbodyc                 óþ  — 	 ddl m} n"# t          $ r}t          d¦  «        |‚d}~ww xY w||||dœ} ||¬¦  «        }|                      ¦   «         }	|	j                             d|j        i¦  «         |	                     | j        › d�|¬	¦  «        }
|
 	                    ¦   «         }	 |
j
        d
k    r|d         d         d         S n# t          $ r Y dS w xY w	 |d         d         d         S # t          $ r 	 Y dS w xY w)zSend an email message.r   )ÚMultipartEncoderz^Unable to import requests_toolbelt, please install it with `pip install -U requests-toolbelt`.N)r=   r7   rN   r3   )Úfieldsr>   z/email/3/send)Údatar@   rA   rB   r3   rC   r5   rD   rE   )Úrequests_toolbeltrQ   ÚImportErrorr0   r*   r+   Úcontent_typerF   r   r?   rG   rH   )r,   rL   rM   rN   rO   rQ   ÚeÚ	form_datarS   r/   rI   rJ   s               r   Ú_send_emailzInfobipAPIWrapper._send_email_   s’  € ð
	Ø:Ð:Ð:Ð:Ð:Ð:Ð:øÝð 	ð 	ð 	Ýð6ñô ð ðøøøøð	øøøð ØØØð	
ð 
ˆ	ð  Ð yÐ1Ñ1Ô1ˆà$(×$>Ò$>Ñ$@Ô$@ˆØŒ×Òà Ô 1ðñ	
ô 	
ð 	
ð '.§l¢lØÔ$Ð3Ð3Ð3Øð '3ñ '
ô '
ˆð
 'Ÿmšm™oœoˆð	,ØÔ# sÒ*Ð*Ø$ ^Ô4Ð5GÔHÈÔPÐPð +øåð 	,ð 	,ð 	,Ø+Ð+Ð+ð	,øøøð	Ø  Ô,¨QÔ/°Ô<Ð<øÝð 	ð 	ð 	àWðð ð ð	øøøs4   ‚	 ‰
(“#£(Â'C Ã
CÃCÃC- Ã-C<Ã;C<Ú Úsmsr7   Úchannelc                 óÊ  — |dk    rX|dk    rt          d¦  «        ‚|dk    rt          d¦  «        ‚|dk    rt          d¦  «        ‚|                      ||g|¬¦  «        S |dk    rm|dk    rt          d¦  «        ‚|dk    rt          d	¦  «        ‚|dk    rt          d
¦  «        ‚|dk    rt          d¦  «        ‚|                      ||||¬¦  «        S t          d|› d�¦  «        ‚)Nr[   rZ   z)Sender must be specified for SMS messagesz.Destination must be specified for SMS messagesz'Body must be specified for SMS messages)r1   r2   r3   Úemailz+Sender must be specified for email messagesz0Destination must be specified for email messagesz,Subject must be specified for email messagesz)Body must be specified for email messages)rL   rM   rN   rO   zChannel z is not supported)Ú
ValueErrorrK   rY   )r,   rO   r7   r1   rN   r\   s         r   ÚrunzInfobipAPIWrapper.run�   s/  € ð �eÒÐØ˜Š|ˆ|Ý Ð!LÑMÔMÐMà�RŠxˆxÝ Ð!QÑRÔRÐRà�rŠzˆzÝ Ð!JÑKÔKÐKà—>’>ØØ+-¨$Øð "ñ ô ð ð
 ˜ÒÐØ˜Š|ˆ|Ý Ð!NÑOÔOÐOà�RŠxˆxÝ Ð!SÑTÔTÐTà˜"Š}ˆ}Ý Ð!OÑPÔPÐPà�rŠzˆzÝ Ð!LÑMÔMÐMà×#Ò#Ø!ØØØð	 $ñ ô ð õ ÐB¨ÐBÐBÐBÑCÔCÐCr   )rZ   rZ   rZ   rZ   r[   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   ÚstrÚ__annotations__r   r
   Úmodel_configr   Úclassmethodr   r   r   r'   r(   r0   r   rK   rY   r`   r8   r   r   r   r      s©  € € € € € € Ø0Ð0à%)€O�X˜c”]Ð)Ð)Ñ)Ø&?Ð�h˜s”mÐ?Ð?Ñ?à�:Øðñ ô €Lð €_˜(Ð#Ñ#Ô#Øð¨$ð °3ð ð ð ñ „[ñ $Ô#ðð xÔ'7ð ð ð ð ð&(Øð(Ø6:¸3´ið(ØGJð(à	ð(ð (ð (ð (ðT.Øð.Ø),ð.Ø7:ð.ØBEð.à	ð.ð .ð .ð .ðd ØØØØð+Dð +Dàð+Dð ð+Dð ð	+Dð
 ð+Dð ð+Dð 
ð+Dð +Dð +Dð +Dð +Dð +Dr   r   )rd   Útypingr   r   r   r   r'   Úlangchain_core.utilsr   Úpydanticr	   r
   r   Úrequests.adaptersr   Úurllib3.utilr   r   r8   r   r   ú<module>rn      sÔ   ðØ +Ð +à ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,à €€€Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ø )Ð )Ð )Ð )Ð )Ð )Ø Ð Ð Ð Ð Ð ðnDð nDð nDð nDð nD˜	ñ nDô nDð nDð nDð nDr   