§
    ®eîi2  ã                   óh  — d dl Z d dlZd dlmZ d dlmZ d dlmZ d dlmZ d dl	m
Z
 d dlmZ d dlZd dlmZ 	 d d	lmZ d
Zn# e$ r dZY nw xY wd dlmZ d dlmZ d dlmZ erd dlmZ  eed¬¦  «        Z G d„ d¦  «        Z G d„ dej        j         ¦  «        Z! G d„ dej        j"        ¦  «        Z#dS )é    N)Ú
HTTPStatus)ÚPath)Úsocket)Ú
SSLContext)ÚTracebackType)ÚTYPE_CHECKING)Ú
HTTPServer)Úbind_unix_socketTF)ÚUpdate)Ú
get_logger)ÚExtBot)ÚBotÚUpdater)Ú
class_namec                   óx   — e Zd ZdZdZ	 ddededddedz  d	eez  e	z  dz  f
d
„Z
ddej        dz  ddfd„Zdd„ZdS )ÚWebhookServerz6Thin wrapper around ``tornado.httpserver.HTTPServer``.)Ú_http_serverÚ_server_lockÚ_shutdown_lockÚ
is_runningÚlistenÚportÚunixNr   r   Úwebhook_appÚWebhookAppClassÚssl_ctxr   c                 ó~  — |rt           st          d¦  «        ‚t          ||¬¦  «        | _        || _        || _        d| _        d | _        |rt          |t          ¦  «        r|| _        n#|r!t          t          |¦  «        ¦  «        | _        t          j        ¦   «         | _        t          j        ¦   «         | _        d S )Nz.This OS does not support binding unix sockets.)Ússl_optionsF)ÚUNIX_AVAILABLEÚRuntimeErrorr	   r   r   r   r   r   Ú
isinstancer   r
   ÚstrÚasyncioÚLockr   r   )Úselfr   r   r   r   r   s         úf/home/div/.hermes/hermes-agent/venv/lib/python3.11/site-packages/telegram/ext/_utils/webhookhandler.pyÚ__init__zWebhookServer.__init__A   s¶   € ð ð 	Q�ð 	QÝÐOÑPÔPÐPÝ& {ÀÐHÑHÔHˆÔØˆŒØˆŒ	ØˆŒØˆŒ	Øð 	4•J˜t¥VÑ,Ô,ð 	4ØˆDŒIˆIØð 	4Ý(­¨T©¬Ñ3Ô3ˆDŒIÝ#œL™NœNˆÔÝ%œl™nœnˆÔÐÐó    ÚreadyÚreturnc              ƒ   óv  K  — | j         4 ƒd {V —† | j        r | j                             | j        ¦  «         n&| j                             | j        | j        ¬¦  «         d| _        |�|                     ¦   «          t           	                    d¦  «         d d d ¦  «        ƒd {V —† d S # 1 ƒd {V —†swxY w Y   d S )N)ÚaddressTzWebhook Server started.)
r   r   r   Ú
add_socketr   r   r   ÚsetÚ_LOGGERÚdebug)r%   r)   s     r&   Úserve_foreverzWebhookServer.serve_foreverW   sA  è è € ØÔ$ð 
	5ð 
	5ð 
	5ð 
	5ð 
	5ð 
	5ð 
	5ð 
	5ØŒyð IØÔ!×,Ò,¨T¬YÑ7Ô7Ð7Ð7àÔ!×(Ò(¨¬¸D¼KÐ(ÑHÔHÐHà"ˆDŒOØÐ Ø—	’	‘”�å�MŠMÐ3Ñ4Ô4Ð4ð
	5ð 
	5ð 
	5ñ 
	5ô 
	5ð 
	5ð 
	5ð 
	5ð 
	5ð 
	5ð 
	5ð 
	5ð 
	5ð 
	5ð 
	5ð 
	5ð 
	5ð 
	5ð 
	5ð 
	5ð 
	5ð 
	5ð 
	5ð 
	5øøøð 
	5ð 
	5ð 
	5ð 
	5ð 
	5ð 
	5s   �BB(Â(
B2Â5B2c              ƒ   óŠ  K  — | j         4 ƒd {V —† | j        s.t                               d¦  «         	 d d d ¦  «        ƒd {V —† d S d| _        | j                             ¦   «          | j                             ¦   «         ƒ d {V —† t                               d¦  «         d d d ¦  «        ƒd {V —† d S # 1 ƒd {V —†swxY w Y   d S )Nz.Webhook Server is already shut down. ReturningFzWebhook Server stopped)r   r   r/   r0   r   ÚstopÚclose_all_connections©r%   s    r&   ÚshutdownzWebhookServer.shutdownd   s‹  è è € ØÔ&ð 	4ð 	4ð 	4ð 	4ð 	4ð 	4ð 	4ð 	4Ø”?ð Ý—’ÐNÑOÔOÐOØð	4ð 	4ð 	4ñ 	4ô 	4ð 	4ð 	4ð 	4ð 	4ð 	4ð 	4ð 	4ð 	4ð 	4ð $ˆDŒOØÔ×"Ò"Ñ$Ô$Ð$ØÔ#×9Ò9Ñ;Ô;Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ý�MŠMÐ2Ñ3Ô3Ð3ð	4ð 	4ð 	4ñ 	4ô 	4ð 	4ð 	4ð 	4ð 	4ð 	4ð 	4ð 	4ð 	4ð 	4ð 	4ð 	4ð 	4ð 	4ð 	4ð 	4ð 	4ð 	4ð 	4ð 	4øøøð 	4ð 	4ð 	4ð 	4ð 	4ð 	4s   �#B2ÁAB2Â2
B<Â?B<©N©r*   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú	__slots__r"   Úintr   r   r   r'   r#   ÚEventr1   r6   © r(   r&   r   r   4   sÄ   € € € € € Ø@Ð@ð€Ið  ,0ð-ð -àð-ð ð-ð 'ð	-ð
 ˜dÑ"ð-ð �D‰j˜6Ñ! DÑ(ð-ð -ð -ð -ð,5ð 5¨¬¸Ñ)=ð 5Èð 5ð 5ð 5ð 5ð4ð 4ð 4ð 4ð 4ð 4r(   r   c            
       ób   — e Zd ZdZ	 ddedddej        dedz  fd„Zd	ej	        j
        d
dfd„ZdS )r   z!Application used in the WebserverNÚwebhook_pathÚbotr   Úupdate_queueÚsecret_tokenc                 óŒ   — |||dœ| _         |› d�t          | j         fg}t          j        j                             | |¦  «         d S )N)rC   rD   rE   z/?)Úshared_objectsÚTelegramHandlerÚtornadoÚwebÚApplicationr'   )r%   rB   rC   rD   rE   Úhandlerss         r&   r'   zWebhookAppClass.__init__r   sZ   € ð Ø(Ø(ð
ð 
ˆÔð
 &Ð)Ð)Ð)­?¸DÔ<OÐPÐQˆÝŒÔ×(Ò(¨¨xÑ8Ô8Ð8Ð8Ð8r(   Úhandlerr*   c                 ó   — dS )zIOverrides the default implementation since we have our own logging setup.Nr@   )r%   rM   s     r&   Úlog_requestzWebhookAppClass.log_request�   s   € € € r(   r7   )r9   r:   r;   r<   r"   r#   ÚQueuer'   rI   rJ   ÚRequestHandlerrO   r@   r(   r&   r   r   o   s“   € € € € € Ø+Ð+ð $(ð9ð 9àð9ð ð9ð ”mð	9ð
 ˜D‘jð9ð 9ð 9ð 9ðX 7¤;Ô#=ð XÀ$ð Xð Xð Xð Xð Xð Xr(   r   c                   óŠ   — e Zd ZdZdZdZdddej        dedd	fd
„Z	dd„Z
dd„Zdd„Zdee         d	z  ded	z  ded	z  dd	fd„Zd	S )rH   z:BaseHandler that processes incoming requests from Telegram)rC   rE   rD   )ÚPOSTrC   r   rD   rE   r*   Nc                 ól   — || _         || _        || _        |rt                               d¦  «         dS dS )zFInitialize for each request - that's the interface provided by tornadozLThe webhook server has a secret token, expecting it in incoming requests nowN)rC   rD   rE   r/   r0   )r%   rC   rD   rE   s       r&   Ú
initializezTelegramHandler.initialize�   sP   € ð ˆŒØ(ˆÔØ(ˆÔØð 	Ý�MŠMØ^ñô ð ð ð ð	ð 	r(   c                 ó2   — |                       dd¦  «         dS )zSets default headersúContent-Typez!application/json; charset="utf-8"N)Ú
set_headerr5   s    r&   Úset_default_headersz#TelegramHandler.set_default_headers˜   s   € à�Š˜Ð(KÑLÔLÐLÐLÐLr(   c              ƒ   ó  K  — t                                d¦  «         |                      ¦   «          | j        j                             ¦   «         }t          j        |¦  «        }|                      t          j
        ¦  «         t                                d|¦  «         	 t          j        || j        ¦  «        }n[# t          $ rN}t                                d||¬¦  «         t           j                             t          j        d¬¦  «        |‚d}~ww xY w|rvt                                d|j        ¦  «         t+          | j        t,          ¦  «        r| j                             |¦  «         | j                             |¦  «        ƒ d{V —† dS dS )	zHandle incoming POST requestzWebhook triggeredzWebhook received data: %szySomething went wrong processing the data received from Telegram. Received data was *not* processed! Received data was: %r©Úexc_infozUpdate could not be processed©ÚreasonNz%Received Update with ID %d on Webhook)r/   r0   Ú_validate_postÚrequestÚbodyÚdecodeÚjsonÚloadsÚ
set_statusr   ÚOKr   Úde_jsonrC   Ú	ExceptionÚcriticalrI   rJ   Ú	HTTPErrorÚBAD_REQUESTÚ	update_idr!   r   Úinsert_callback_datarD   Úput)r%   Újson_stringÚdataÚupdateÚexcs        r&   ÚpostzTelegramHandler.postœ   s–  è è € å�ŠÐ)Ñ*Ô*Ð*Ø×ÒÑÔÐà”lÔ'×.Ò.Ñ0Ô0ˆÝŒz˜+Ñ&Ô&ˆØ�Š�
œÑ&Ô&Ð&Ý�ŠÐ1°;Ñ?Ô?Ð?ð	Ý”^ D¨$¬(Ñ3Ô3ˆFˆFøÝð 		ð 		ð 		Ý×ÒðKàØð	 ñ ô ð õ ”+×'Ò'ÝÔ&Ð/Nð (ñ ô àðøøøøð		øøøð ð 	0Ý�MŠMØ7àÔ ñô ð õ ˜$œ(¥FÑ+Ô+ð 6Ø”×-Ò-¨fÑ5Ô5Ð5àÔ#×'Ò'¨Ñ/Ô/Ð/Ð/Ð/Ð/Ð/Ð/Ð/Ð/Ð/ð	0ð 	0s   ÂB9 Â9
DÃA	DÄDc                 ó$  — | j         j                             dd¦  «        }|dk    r)t          j                             t          j        ¦  «        ‚| j        �·| j         j                             d¦  «        }|sEt           
                    d¦  «         t          j                             t          j        d¬¦  «        ‚|| j        k    rHt           
                    d|¦  «         t          j                             t          j        d¬¦  «        ‚dS dS )	z+Only accept requests with content type JSONrW   Nzapplication/jsonzX-Telegram-Bot-Api-Secret-Tokenz(Request did not include the secret tokenr]   z&Request had the wrong secret token: %sz"Request had the wrong secret token)r`   ÚheadersÚgetrI   rJ   rj   r   Ú	FORBIDDENrE   r/   r0   )r%   Ú	ct_headerÚtokens      r&   r_   zTelegramHandler._validate_postÀ   s  € à”LÔ(×,Ò,¨^¸TÑBÔBˆ	ØÐ*Ò*Ð*Ý”+×'Ò'­
Ô(<Ñ=Ô=Ð=àÔÐ(Ø”LÔ(×,Ò,Ð-NÑOÔOˆEØð Ý—’ÐHÑIÔIÐIÝ”k×+Ò+ÝÔ(Ð1[ð ,ñ ô ð ð ˜Ô)Ò)Ð)Ý—’ÐFÈÑNÔNÐNÝ”k×+Ò+ÝÔ(Ð1Uð ,ñ ô ð ð )Ð(ð *Ð)r(   ÚtypÚvalueÚtbc                 ól   — t                                d| j        j        d|r	|r|r|||fn|¬¦  «         dS )z@Override the default logging and instead use our custom logging.z%s - %szException in TelegramHandlerr[   N)r/   r0   r`   Ú	remote_ip)r%   rz   r{   r|   s       r&   Úlog_exceptionzTelegramHandler.log_exceptionÓ   sU   € õ 	�ŠØØŒLÔ"Ø*Ø),ÐH°ÐH¸2ÐH�c˜5 "Ð%Ð%À5ð	 	ñ 	
ô 	
ð 	
ð 	
ð 	
r(   r8   )r9   r:   r;   r<   r=   ÚSUPPORTED_METHODSr#   rP   r"   rU   rY   rs   r_   ÚtypeÚBaseExceptionr   r   r@   r(   r&   rH   rH   †   sè   € € € € € ØDÐDà7€Ià!Ðð	˜eð 	°7´=ð 	ÐPSð 	ÐX\ð 	ð 	ð 	ð 	ðMð Mð Mð Mð"0ð "0ð "0ð "0ðHð ð ð ð&
à�-Ô  4Ñ'ð
ð ˜tÑ#ð
ð ˜DÑ ð	
ð
 
ð
ð 
ð 
ð 
ð 
ð 
r(   rH   )$r#   rc   Úhttpr   Úpathlibr   r   Ússlr   Útypesr   Útypingr   Útornado.webrI   Útornado.httpserverr	   Útornado.netutilr
   r   ÚImportErrorÚtelegramr   Útelegram._utils.loggingr   Útelegram.ext._extbotr   r   r9   r/   r   rJ   rK   r   rQ   rH   r@   r(   r&   ú<module>r�      sò  ðð( €€€Ø €€€Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  ð Ð Ð Ð Ø )Ð )Ð )Ð )Ð )Ð )ðØ0Ð0Ð0Ð0Ð0Ð0à€N€NøØð ð ð Ø€N€N€Nðøøøð Ð Ð Ð Ð Ð Ø .Ð .Ð .Ð .Ð .Ð .Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'àð ØÐÐÐÐÐð ˆ*�X¨)Ð
4Ñ
4Ô
4€ð84ð 84ð 84ð 84ð 84ñ 84ô 84ð 84ðvXð Xð Xð Xð X�g”kÔ-ñ Xô Xð Xð.Y
ð Y
ð Y
ð Y
ð Y
�g”kÔ0ñ Y
ô Y
ð Y
ð Y
ð Y
s   ¸A ÁAÁ
A