Ë
    šQj‡&  ã                  óH  — d 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mZmZ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 ej.                  ej0                  ej2                  ej4                  dœZdZdZ eg d¢«      Z  G d„ de«      Z!y# e$ r	 dxZxZZY Œ'w xY w)zHTTP Client using pyCurl.é    )Úannotations)Údeque)Úpartial)ÚBytesIO)Útime)ÚREADÚWRITEÚHubÚget_event_loop)Ú	HttpError)Úbytes_to_stré   )Ú
BaseClientN)ÚCurl)ÚGETÚPOSTÚPUTÚHEAD)Ú
CurlClientz Mozilla/5.0 (compatible; pycurl))ÚDELETEÚOPTIONSÚPATCHc                  óž   ‡ — e Zd ZdZeZddˆ fd„Zd„ Zd„ Zd„ Zd„ Z	e
fd„Zd	„ Ze
fd
„Ze
fd„Ze
fd„Ze
fd„Zd„ Zd„ Zdde
fd„Ze
fd„Zˆ xZS )r   zCurl HTTP Client.Nc                óH  •— t         €t        d«      ‚|xs
 t        «       }t        ‰| �  |«       || _        t        j                  «       | _        | j                  j                  t         j                  | j                  «       | j                  j                  t         j                  | j                  «       t        |«      D �cg c]  }| j                  «       ‘Œ c}| _        | j                  d d  | _        t#        «       | _        i | _        | j                  j(                  | _        | j,                  j/                  d| j0                  «      | _        t        j                  «       }| j                  j5                  |«       | j                  j7                  |«       y c c}w )Nz,The curl client requires the pycurl library.g      ð?)ÚpycurlÚImportErrorr   ÚsuperÚ__init__Úmax_clientsÚ	CurlMultiÚ_multiÚsetoptÚM_TIMERFUNCTIONÚ_set_timeoutÚM_SOCKETFUNCTIONÚ_handle_socketÚranger   Ú_curlsÚ
_free_listr   Ú_pendingÚ_fdsÚsocket_actionÚ_socket_actionÚhubÚcall_repeatedlyÚ_timeout_checkÚ_timeout_check_trefÚ
add_handleÚremove_handle)Úselfr.   r   ÚiÚdummy_curl_handleÚ	__class__s        €úX/var/www/html/truck-me/venv/lib/python3.12/site-packages/kombu/asynchronous/http/curl.pyr   zCurlClient.__init__)   s0  ø€ Üˆ>ÜÐLÓMÐMØÒ%”^Ó%ˆÜ‰Ñ˜ÔØ&ˆÔä×&Ñ&Ó(ˆŒØ�‰×Ñœ6×1Ñ1°4×3DÑ3DÔEØ�‰×Ñœ6×2Ñ2°D×4GÑ4GÔHÜ,1°+Ó,>Ö? q�t—y‘y•{Ò?ˆŒØŸ+™+¡a˜.ˆŒÜ›ˆŒØˆŒ	à"Ÿk™k×7Ñ7ˆÔØ#'§8¡8×#;Ñ#;Ø�×$Ñ$ó$
ˆÔ ô
 #ŸK™K›MÐØ�‰×ÑÐ0Ô1Ø�‰×!Ñ!Ð"3Õ4ùò @s   ÃFc                ó®   — | j                   j                  «        | j                  D ]  }|j                  «        Œ | j                  j                  «        y ©N)r1   Úcancelr(   Úcloser!   )r4   Ú_curls     r8   r<   zCurlClient.closeB   s@   € Ø× Ñ ×'Ñ'Ô)Ø—[‘[ò 	ˆEØ�K‰K�Mð	à�‰×ÑÕó    c                ó~   — | j                   j                  |«       | j                  «        | j                  d«       |S ©Nr   )r*   ÚappendÚ_process_queuer$   )r4   Úrequests     r8   Úadd_requestzCurlClient.add_requestH   s3   € Ø�‰×Ñ˜WÔ%Ø×ÑÔØ×Ñ˜!ÔØˆr>   c                ó\   — | j                   D ]  }| j                  j                  |«       Œ y r:   )r+   r.   Úremove)r4   Úfds     r8   Ú_pop_from_hubzCurlClient._pop_from_hubQ   s%   € Ø—)‘)ò 	 ˆBØ�H‰H�O‰O˜BÕñ	 r>   c                ó
  — | j                   j                  «       D ]f  \  }}|t        z  r'| j                  j	                  || j
                  |«       |t        z  sŒ@| j                  j                  || j                  |«       Œh y r:   )	r+   Úitemsr   r.   Ú
add_readerÚon_readabler	   Ú
add_writerÚon_writable)r4   rG   Úeventss      r8   Ú_push_to_hubzCurlClient._push_to_hubU   sf   € ØŸ)™)Ÿ/™/Ó+ò 	>‰JˆB�ØœŠ}Ø—‘×#Ñ# B¨×(8Ñ(8¸"Ô=Øœ‹~Ø—‘×#Ñ# B¨×(8Ñ(8¸"Õ=ñ		>r>   c                óZ  — ||j                   k(  r,|| j                  v r| j                  j                  |d «       y y ||j                  k(  rt        | j                  |<   y ||j
                  k(  rt        | j                  |<   y ||j                  k(  rt        t        z  | j                  |<   y y r:   )ÚPOLL_REMOVEr+   ÚpopÚPOLL_INr   ÚPOLL_OUTr	   Ú
POLL_INOUT)r4   ÚeventrG   ÚmultiÚdataÚ_pycurls         r8   r&   zCurlClient._handle_socket\   sŒ   € Ø�G×'Ñ'Ò'Ø�T—Y‘Y‰Ø—	‘	—‘˜b $Õ'ð ð ˜Ÿ™Ò'Ü $�—	‘	˜"’Ø˜'×*Ñ*Ò*Ü %�—	‘	˜"’Ø˜'×,Ñ,Ò,Ü $¤u¡�—	‘	˜"’ð -r>   c                óP   — | j                   j                  || j                  «       y r:   )r.   Ú
call_laterr0   )r4   Úmsecss     r8   r$   zCurlClient._set_timeouth   s   € Ø�‰×Ñ˜E 4×#6Ñ#6Õ7r>   c                óP  — | j                  «        	 	 	 | j                  j                  «       \  }}||j                  k7  rnŒ/	 | j                  «        | j                  «        y # t        j                  $ r}|j
                  d   }Y d }~ŒZd }~ww xY w# | j                  «        w xY wr@   )	rH   r!   Ú
socket_allr   ÚerrorÚargsÚE_CALL_MULTI_PERFORMrP   Ú_process_pending_requests)r4   rZ   ÚretÚ_Úexcs        r8   r0   zCurlClient._timeout_checkk   s˜   € Ø×ÑÔð		 Øð&Ø!Ÿ[™[×3Ñ3Ó5‘F�C˜ð ˜'×6Ñ6Ò6Øð ð à×ÑÔØ×&Ñ&Õ(øô —|‘|ò &ØŸ(™( 1™+•Cûð&ûð
 ×ÑÕús3   ’B ”A$ ±B Á$BÁ7BÂB ÂBÂB ÂB%c                ó:   — | j                  ||j                  «      S r:   )Ú	_on_eventÚ
CSELECT_IN©r4   rG   rZ   s      r8   rL   zCurlClient.on_readabley   s   € Ø�~‰~˜b '×"4Ñ"4Ó5Ð5r>   c                ó:   — | j                  ||j                  «      S r:   )rh   ÚCSELECT_OUTrj   s      r8   rN   zCurlClient.on_writable|   s   € Ø�~‰~˜b '×"5Ñ"5Ó6Ð6r>   c                ó@  — | j                  «        	 	 	 | j                  ||«      \  }}||j
                  k7  rnŒ'	 | j                  «        | j                  «        y # t        j                  $ r}|j                  d   }Y d }~ŒZd }~ww xY w# | j                  «        w xY wr@   )rH   r-   r   r`   ra   rb   rP   rc   )r4   rG   rW   rZ   rd   re   rf   s          r8   rh   zCurlClient._on_event   s˜   € Ø×ÑÔð		 Øð&Ø!×0Ñ0°°UÓ;‘F�C˜ð ˜'×6Ñ6Ò6Øð ð à×ÑÔØ×&Ñ&Õ(øô —|‘|ò &ØŸ(™( 1™+•Cûð&ûð
 ×ÑÕús3   ’B ”A ©B ÁBÁ/BÁ>B ÂBÂB ÂBc                óÜ   — 	 | j                   j                  «       \  }}}|D ]  }| j                  |«       Œ |D ]  \  }}}| j                  |||«       Œ |dk(  rnŒ[| j                  «        y r@   )r!   Ú	info_readÚ_processrB   )r4   ÚqÚ	succeededÚfailedÚcurlÚerrnoÚreasons          r8   rc   z$CurlClient._process_pending_requests�   s|   € ØØ#'§;¡;×#8Ñ#8Ó#:Ñ ˆAˆy˜&Ø!ò $�Ø—‘˜dÕ#ð$à'-ò 3Ñ#��e˜VØ—‘˜d E¨6Õ2ð3à�AŠvØð ð 	×ÑÕr>   c                óž  — 	 d}| j                   r»| j                  r¯|dz  }| j                   j                  «       }| j                  j                  «       }| j	                  «       }t        «       }|||t        «       dœ|_        | j                  ||||«       | j                  j                  |«       | j                   r| j                  rŒ¯|sy ŒÍ)Nr   r   )ÚheadersÚbufferrC   Úcurl_start_time)r)   r*   rS   ÚpopleftÚHeadersr   r   ÚinfoÚ_setup_requestr!   r2   )r4   Ústartedrt   rC   rx   Úbufs         r8   rB   zCurlClient._process_queue˜   s±   € ØØˆGØ—/’/ d§m¢mØ˜1‘�Ø—‘×*Ñ*Ó,�ØŸ-™-×/Ñ/Ó1�ØŸ,™,›.�Ü“i�à&Ø!Ø&Ü'+£vñ	�”	ð ×#Ñ# D¨'°3¸Ô@Ø—‘×&Ñ& tÔ,ð —/’/ d§m£mñ Øð# r>   c           
     óè  — |j                   d c}|_         | j                  j                  |«       | j                  j	                  |«       |d   }|r*d}t        ||«      }||_        d }	|j                  «        d }nId }|j                  |j                  «      }|j                  |j                  «      }	|j                  d«       |d   }
|
j                  | j                  |
||d   ||	|¬«      «       y )Nry   iW  r   rC   rx   )rC   Úcoderx   ry   Úeffective_urlr`   )r}   r!   r3   r)   rA   r   ru   r<   ÚgetinfoÚ	HTTP_CODEÚEFFECTIVE_URLÚseekÚon_readyÚResponse)r4   rt   ru   rv   rZ   r}   ry   r‚   r`   rƒ   rC   s              r8   rp   zCurlClient._process¬   sß   € ØŸ)™) TˆˆˆdŒiØ�‰×!Ñ! $Ô'Ø�‰×Ñ˜tÔ$Ø�h‘ˆÙØˆDÜ˜d FÓ+ˆEØˆEŒKØ ˆMØ�L‰LŒNØ‰FàˆEØ—<‘< × 1Ñ 1Ó2ˆDØ ŸL™L¨×)>Ñ)>Ó?ˆMØ�K‰K˜ŒNà�y‘/ˆØ×Ñ˜Ÿ™Ø $°°Y±Ø¨¸eð 'ó 
õ 	r>   c           	     ó  ‡‡— |j                   } |‰j                  t        |j                  «      «       |j                  j                  dd«       |j                  j                  dd«        |‰j                  |j                  j                  «       D �cg c]  } dj                  |Ž ‘Œ c}«        |‰j                  t        |j                  xs | j                  |j                  «      «        |‰j                  |j                  xs |j                  «        |‰j                  |j                   «        |‰j"                  t        |j$                  xs t&        «      «       |j(                  r |‰j*                  |j(                  «        |‰j,                  |j.                  rdnd«       |j0                  r˜|j2                  st5        d«      ‚ |‰j6                  |j0                  «        |‰j8                  |j2                  «       |j:                  r; |‰j<                  dj                  |j:                  |j>                  xs d«      «        |‰j@                  |jB                  rd	nd
«        |‰jD                  |jB                  rdnd
«       |jF                  � |‰jH                  |jF                  «        |‰jJ                  tL        jN                  «       tP        jS                  «       D ]  } ||d«       Œ 	 tP        |jT                     }|jW                  ‰jX                  «        ||d«       |jT                  dv rÚ|j\                  sd}	nAt_        |j\                  t`        «      r|j\                  n|j\                  jc                  d«      }	te        |	«      Š |‰jf                  ‰jh                  «       |jT                  dk(  r6ˆˆfd„}
 |‰jj                  |
«        |‰jl                  to        |	«      «       n: |‰jp                  to        |	«      «       n|jT                  dk(  r|j\                  rJ ‚|jr                  �{‰jt                  ‰jv                  dœ|jx                  xs d   } |‰jz                  |«       dj                  |jr                  |j|                  xs d«      } |‰j~                  |«       n|jW                  ‰j~                  «       |j€                  � |‰j‚                  |j€                  «       |j„                  � |‰j†                  |j„                  «       |jˆ                  �|j‰                  |«       y y c c}w # tZ        $ r* |j                  ‰jX                  |jT                  «       Y �ŒOw xY w)NÚExpectÚ ÚPragmaz{}: {}zgzip,deflateÚnonez)Request with proxy_host but no proxy_portz{}:{}r   r   é   FT)r   r   r>   zutf-8r   c                óH   •— | ‰j                   k(  r‰j                  d«       y y r@   )ÚIOCMD_RESTARTREADr‡   )ÚcmdrZ   Ú	reqbuffers    €€r8   Úioctlz(CurlClient._setup_request.<locals>.ioctl  s"   ø€ Ø˜g×7Ñ7Ò7Ø!Ÿ™ qÕ)ð 8r>   r   )ÚbasicÚdigestr•   )Er"   ÚURLr   Úurlrx   Ú
setdefaultÚ
HTTPHEADERrJ   ÚformatÚHEADERFUNCTIONr   Ú	on_headerÚWRITEFUNCTIONÚ	on_streamÚwriteÚFOLLOWLOCATIONÚfollow_redirectsÚ	USERAGENTÚ
user_agentÚDEFAULT_USER_AGENTÚnetwork_interfaceÚ	INTERFACEÚENCODINGÚuse_gzipÚ
proxy_hostÚ
proxy_portÚ
ValueErrorÚPROXYÚ	PROXYPORTÚproxy_usernameÚPROXYUSERPWDÚproxy_passwordÚSSL_VERIFYPEERÚvalidate_certÚSSL_VERIFYHOSTÚca_certsÚCAINFOÚ	IPRESOLVEr   ÚIPRESOLVE_WHATEVERÚMETH_TO_CURLÚvaluesÚmethodÚunsetoptÚCUSTOMREQUESTÚKeyErrorÚbodyÚ
isinstanceÚbytesÚencoder   ÚREADFUNCTIONÚreadÚIOCTLFUNCTIONÚPOSTFIELDSIZEÚlenÚ
INFILESIZEÚauth_usernameÚHTTPAUTH_BASICÚHTTPAUTH_DIGESTÚ	auth_modeÚHTTPAUTHÚauth_passwordÚUSERPWDÚclient_certÚSSLCERTÚ
client_keyÚSSLKEYÚ
on_prepare)r4   rt   rC   ry   rx   rZ   r"   ÚhÚmethr¿   r”   rÌ   Úuserpwdr“   s        `       @r8   r~   zCurlClient._setup_requestÄ   s~  ù€ Ø—‘ˆÙˆw�{‰{œL¨¯©Ó5Ô6ð 	�‰×"Ñ" 8¨RÔ0Ø�‰×"Ñ" 8¨RÔ0áØ×ÑØ*1¯/©/×*?Ñ*?Ó*AÖB Qˆ_ˆX�_‰_˜aÒ ÒBô	
ñ
 	Ø×"Ñ"Ü�G×%Ñ%Ò7¨¯©¸¿¹ÓIô	
ñ 	Ø×!Ñ! 7×#4Ñ#4Ò#D¸¿¹ô	
ñ 	Ø×"Ñ" G×$<Ñ$<ô	
ñ 	Ø×ÑÜ˜×+Ñ+ÒAÔ/AÓBô	
ð ×$Ò$Ù�7×$Ñ$ g×&?Ñ&?Ô@ÙØ×Ñ°×0@Ò0@™nÀfô	
ð ×ÒØ×%Ò%Ü Ð!LÓMÐMÙ�7—=‘= '×"4Ñ"4Ô5Ù�7×$Ñ$ g×&8Ñ&8Ô9Ø×%Ò%Ù�w×+Ñ+¨W¯^©^Ø×*Ñ*¨G×,BÑ,BÒ,HÀbó.Jô Kñ 	ˆw×%Ñ%¨G×,AÒ,A¡qÀqÔIÙˆw×%Ñ%¨G×,AÒ,A¡qÀqÔIØ×ÑÐ'Ù�7—>‘> 7×#3Ñ#3Ô4áˆw× Ñ ¤&×";Ñ";Ô<ä ×'Ñ'Ó)ò 	 ˆDÙ�4˜Õð	 ð	Ü §¡Ñ/ˆDð �M‰M˜'×/Ñ/Ô0Ù�4˜Ôà�>‰>˜_Ñ,Ø—<’<Ø‘ä'1°'·,±,ÄÔ'F�w—|’|ÈGÏLÉL×L_ÑL_Ð`gÓLh�ä ›ˆIÙ�7×'Ñ'¨¯©Ô8Ø�~‰~ Ò'õ*ñ �w×,Ñ,¨eÔ4Ù�w×,Ñ,¬c°$«iÕ8á�w×)Ñ)¬3¨t«9Õ5Ø�^‰^˜uÒ$Ø—|’|Ð#Ð#à× Ñ Ð,à ×/Ñ/Ø!×1Ñ1ñð ×ÑÒ* 7ñ,ˆIñ �7×#Ñ# YÔ/Ø—n‘nØ×%Ñ% w×'<Ñ'<Ò'BÀóˆGñ �7—?‘? GÕ,à�M‰M˜'Ÿ/™/Ô*à×ÑÐ*Ù�7—?‘? G×$7Ñ$7Ô8Ø×ÑÐ)Ù�7—>‘> 7×#5Ñ#5Ô6à×ÑÐ)Ø×Ñ˜tÕ$ð *ùòm CøôT ò 	?Ø�K‰K˜×-Ñ-¨w¯~©~×>ð	?ús   ÂU
ÌU Õ/VÖV)Né
   )r.   z
Hub | Noner   Úint)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r<   rD   rH   rP   r   r&   r$   r0   rL   rN   rh   rc   rB   rp   r~   Ú__classcell__)r7   s   @r8   r   r   $   s�   ø„ Ùà€Dö5ò2òò ò>ð >Dó 
-ò8ð &,ó )ð '-ó 6ð '-ó 7ð ,2ó )ò	òð( $(°¸fó ð0 FL÷ a%r>   r   )"rÝ   Ú
__future__r   Úcollectionsr   Ú	functoolsr   Úior   r   Úkombu.asynchronous.hubr   r	   r
   r   Úkombu.exceptionsr   Úkombu.utils.encodingr   Úbaser   r   r   ÚHTTPGETr   ÚUPLOADÚNOBODYr¹   r   Ú__all__r¥   Ú	frozensetÚEXTRA_METHODSr   © r>   r8   ú<module>rî      sž   ðÙ å "å Ý Ý Ý ç CÓ CÝ &Ý -å ðÛõ ð �~‰~Ø—‘Ø�}‰}Ø—‘ñ	€Lð €à7Ð ÙÒ8Ó9€ôA%�õ A%øð% ò (Ø#'Ð'€FÐ'ˆT’Lð(ús   Á B ÂB!Â B!