
    Smd.                         d Z ddlZddlZej        d         dk    ZerddlmZ ddlmZ ddl	m
Z
 n#ddlZddlmZ 	 ddlmZ
 n# e$ r	 ddlmZ
 Y nw xY w	 ddlZddlmZmZ  ej        ee           n# e$ r Y nw xY w G d d	          Zed
k    r eej                  dk     rdZnej        d         Z e            Ze                    e            ee                                            ed           ddlZ ej        e                                            ee                    ej                              ee                                d                    e                                  dS dS )z.A high-level interface to the pycurl extension    N   )urljoin)BytesIO)StringIO)SIGPIPESIG_IGNc                   z    e Zd ZdZddZd Zd Zd Zd Zdd	Z	dd
Z
ddZd Zd Zd Zd Zd Zd Zd Zd ZdS )Curlz)High-level interface to pycurl functions. Nc                     t          j                     _                             |           d _        |pg  _        d  _        t                       _        d _	         
                    t           j        d            
                    t           j        d            
                    t           j        d            
                    t           j        d            
                    t           j        d                                d            
                    t           j        d            
                    t           j         j        j                    fd} 
                    t           j        |           d S )	Nr   r            z	/dev/null   c                 N    xj         |                     d          z  c_         d S )Nascii)hdrdecode)xselfs    -lib/python3.11/site-packages/curl/__init__.pyheader_callbackz&Curl.__init__.<locals>.header_callback=   s#    HH)))HHHH    )pycurlr
   handleset_url	verbosityfakeheaderspayloadr   
payload_ior   
set_optionSSL_VERIFYHOSTFOLLOWLOCATION	MAXREDIRSNOSIGNAL
COOKIEFILEset_timeoutNETRCWRITEFUNCTIONwriteHEADERFUNCTION)r   base_urlr   r   s   `   r   __init__zCurl.__init__%   s?   kmmX&,"!))-q111-q111(!,,,+++ 	);777a(((,do.CDDD	* 	* 	* 	* 	*-?????r   c                 F    |                      t          j        |           dS )z&Set timeout for a retrieving an objectN)r!   r   TIMEOUT)r   timeouts     r   r'   zCurl.set_timeoutA   s    00000r   c                 ^    || _         |                     t          j        | j                    dS )z!Set the base URL to be retrieved.N)r,   r!   r   URL)r   urls     r   r   zCurl.set_urlE   s'    
DM22222r   c                 $     | j         j        |  dS )zSet an option on the retrieval.N)r   setoptr   argss     r   r!   zCurl.set_optionJ   s    D!!!!r   c                 F    |                      t          j        |           dS )z'Set verbosity to 1 to see transactions.N)r!   r   VERBOSE)r   levels     r   set_verbosityzCurl.set_verbosityN   s    .....r   c                    | j         r%|                     t          j        | j                    |r3|                     t          j        t          | j        |                     d| _        | j        	                    d           | j        
                                 d| _        | j                                         | j                                        | _        | j        S )zPerform the pending request.Nr   r   )r   r!   r   
HTTPHEADERr2   r   r,   r   r    seektruncater   r   performgetvalue)r   relative_urls     r   	__requestzCurl.__requestR   s     	AOOF-t/?@@@ 	NOOFJ|(L(LMMMQ  """//11|r   c                     |r|dt          j        |          z   z  }|                     t          j        d           |                     |          S )z=Ship a GET request for a specified URL, capture the response.?r   )urllib_parse	urlencoder!   r   HTTPGET_Curl__requestr   r3   paramss      r   getzCurl.get`   sL     	83/7777C***~~c"""r   c                     |r|dt          j        |          z   z  }|                     t          j        d           |                     |          S )z>Ship a HEAD request for a specified URL, capture the response.rE   r   )rF   rG   r!   r   NOBODYrI   rJ   s      r   headz	Curl.headg   sL     	83/7777Cq)))~~c"""r   c                     |                      t          j        d           |                      t          j        t	          j        |                     |                     |          S )z=Ship a POST request to a specified CGI, capture the response.r   )r!   r   POST
POSTFIELDSrF   rG   rI   )r   cgirK   s      r   postz	Curl.postn   sL    Q''')<+A&+I+IJJJ~~c"""r   c                     | j         S )z'Return the body from the last response.)r   r   s    r   bodyz	Curl.bodyt   s
    |r   c                     | j         S )z)Return the header from the last response.)r   rV   s    r   headerzCurl.headerx   s	    xr   c                       | j         j        | S )z Get information about retrieval.)r   getinfor6   s     r   get_infozCurl.get_info|   s    "t{"D))r   c                 	   i }| j                             t          j                  |d<   | j                             t          j                  |d<   | j                             t          j                  |d<   | j                             t          j                  |d<   | j                             t          j                  |d<   | j                             t          j                  |d<   | j                             t          j	                  |d<   | j                             t          j
                  |d<   | j                             t          j                  |d	<   | j                             t          j                  |d
<   | j                             t          j                  |d<   | j                             t          j                  |d<   | j                             t          j                  |d<   | j                             t          j                  |d<   | j                             t          j                  |d<   | j                             t          j                  |d<   | j                             t          j                  |d<   | j                             t          j                  |d<   | j                             t          j                  |d<   | j                             t          j                  |d<   | j                             t          j                  |d<   | j                             t          j	                  |d<   | j                             t          j
                  |d<   | j                             t          j                  |d<   | j                             t          j                  |d<   | j                             t          j                  |d<   | j                             t          j                  |d<   | j                             t          j                  |d<   | j                             t          j                  |d<   | j                             t          j                  |d<   | j                             t          j                  |d<   | j                             t          j                   |d<   |S )z7Return a dictionary with all info on the last response.zeffective-urlz	http-codez
total-timeznamelookup-timezconnect-timezpretransfer-timezredirect-timezredirect-countzsize-uploadzsize-downloadzspeed-uploadzheader-sizezrequest-sizezcontent-length-downloadzcontent-length-uploadzcontent-typezresponse-codezspeed-downloadzssl-verifyresultfiletimezstarttransfer-timezhttp-connectcodezhttpauth-availzproxyauth-availos-errnoznum-connectszssl-engines
cookielist
lastsocketzftp-entry-path)!r   r[   r   EFFECTIVE_URL	HTTP_CODE
TOTAL_TIMENAMELOOKUP_TIMECONNECT_TIMEPRETRANSFER_TIMEREDIRECT_TIMEREDIRECT_COUNTSIZE_UPLOADSIZE_DOWNLOADSPEED_UPLOADHEADER_SIZEREQUEST_SIZECONTENT_LENGTH_DOWNLOADCONTENT_LENGTH_UPLOADCONTENT_TYPERESPONSE_CODESPEED_DOWNLOADSSL_VERIFYRESULTINFO_FILETIMESTARTTRANSFER_TIMEHTTP_CONNECTCODEHTTPAUTH_AVAILPROXYAUTH_AVAILOS_ERRNONUM_CONNECTSSSL_ENGINESINFO_COOKIELIST
LASTSOCKETFTP_ENTRY_PATH)r   ms     r   infoz	Curl.info   s   ![001EFF/,,V-=>>++--f.?@@,#{2263IJJ
 K//0CDD. $ 3 3F4K L L
![001EFF/"k11&2GHH
;..v/ABB-![001EFF/ K//0CDD.;..v/ABB- K//0CDD.'+{':':6;Y'Z'Z
#$%)[%8%89U%V%V
!" K//0CDD.![001EFF/"k11&2GHH
 $ 3 3F4K L L
++F,@AA*"&+"5"5f6O"P"P
![001EFF/"k11&2GHH
 $ 3 3F4K L L
"k11&2GHH
#{2263IJJ
++FO<<* K//0CDD.;..v/ABB-+--f.DEE,+--f.?@@,"k11&2GHH
r   c                 >    | j                             |          dk    S )z3Did a given check string occur in the last payload?r   )r   find)r   checks     r   answeredzCurl.answered   s    |  ''1,,r   c                 p    | j         r| j                                          d| _         d| _        d| _        dS )z#Close a session, freeing resources.Nr   )r   closer   r   rV   s    r   r   z
Curl.close   s9    ; 	 Kr   c                 .    |                                   d S N)r   rV   s    r   __del__zCurl.__del__   s    

r   )r   Nr   )__name__
__module____qualname____doc__r-   r'   r   r!   r;   rI   rL   rO   rT   rW   rY   r\   r   r   r   r    r   r   r
   r
   #   s#       //@ @ @ @81 1 13 3 3
" " "/ / /   # # # ## # # ## # #    * * *# # #J- - -      r   r
   __main__r   zhttps://curl.haxx.ser   zK==========================================================================
r_   )!r   sysr   version_infopy3urllib.parseparserF   r   ior   urlliburlparse	cStringIOr   ImportErrorsignalr   r   r
   r   lenargvr3   crL   printrW   pprintr   r\   rz   r   r   r   r   <module>r      sa   4 4        	qQ  
1''''''$$$$$$!!!!      11111111 1 1 1000000001
$MMM'''''''' FM'7####  	 	 	D	O O O O O O O Od z
s38}}q$hqkAEE#JJJ	E!&&((OOO	E-MMMFM!&&((	E!**V_
%
%&&&	E!&&((:
GGIIIII s#   A AAA3 3A;:A;