
    ih.                        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
 	 ddlZddlmZmZ  ej                   ee        G d d	      Zed
k(  r eej,                        dk  rdZnej,                  d   Z e       Zej3                  e        eej7                                 ed       ddlZ ej8                  ej;                                 eej=                  ej>                                eej;                         d          ejA                          yy# e$ r
 ddlmZ
 Y 
w xY w# e$ r Y w xY w)z.A high-level interface to the pycurl extension    N   )urljoin)BytesIO)StringIO)SIGPIPESIG_IGNc                   x    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y)Curlz)High-level interface to pycurl functions.Nc                     t        j                          _         j                  |       d _        |xs g  _        d  _        t                _        d _	         j                  t         j                  d        j                  t         j                  d        j                  t         j                  d        j                  t         j                  d        j                  t         j                  d        j!                  d        j                  t         j"                  d        j                  t         j$                   j                  j&                          fd} j                  t         j(                  |       y )	Nr             z	/dev/null   c                 N    xj                   | j                  d      z  c_         y )Nascii)hdrdecode)xselfs    _/var/www/pru.catia.catastroantioquia-mas.com/tasa/lib/python3.12/site-packages/curl/__init__.pyheader_callbackz&Curl.__init__.<locals>.header_callback=   s    HH))H    )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   kkmX&,"!)--q1--q1((!,+ 	));7a(,,doo.C.CD	*--?r   c                 D    | j                  t        j                  |       y)z&Set timeout for a retrieving an objectN)r!   r   TIMEOUT)r   timeouts     r   r'   zCurl.set_timeoutA   s    0r   c                 f    || _         | j                  t        j                  | j                          y)z!Set the base URL to be retrieved.N)r,   r!   r   URL)r   urls     r   r   zCurl.set_urlE   s    

DMM2r   c                 6     | j                   j                  |  y)zSet an option on the retrieval.N)r   setoptr   argss     r   r!   zCurl.set_optionJ   s    D!r   c                 D    | j                  t        j                  |       y)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*| j                  t        j                  | j                          |r4| j                  t        j                  t        | j                  |             d| _        | j                  j                  d       | j                  j                          d| _        | j                  j                          | 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    OOF--t/?/?@OOFJJ|(LMQ  "//1||r   c                     |r|dt        j                  |      z   z  }| j                  t        j                  d       | j                  |      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`   s@    3//777C*~~c""r   c                     |r|dt        j                  |      z   z  }| j                  t        j                  d       | j                  |      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   s@    3//777Cq)~~c""r   c                     | j                  t        j                  d       | j                  t        j                  t	        j
                  |             | 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   sB    Q'))<+A+A&+I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    xxr   c                 4     | j                   j                  | S )z Get information about retrieval.)r   getinfor6   s     r   get_infozCurl.get_info|   s    "t{{""D))r   c                 
   i }| j                   j                  t        j                        |d<   | j                   j                  t        j                        |d<   | j                   j                  t        j
                        |d<   | j                   j                  t        j                        |d<   | j                   j                  t        j                        |d<   | j                   j                  t        j                        |d<   | j                   j                  t        j                        |d<   | j                   j                  t        j                        |d<   | j                   j                  t        j                        |d	<   | j                   j                  t        j                        |d
<   | j                   j                  t        j                        |d<   | j                   j                  t        j                        |d<   | j                   j                  t        j                        |d<   | j                   j                  t        j                         |d<   | j                   j                  t        j"                        |d<   | j                   j                  t        j$                        |d<   | j                   j                  t        j&                        |d<   | j                   j                  t        j(                        |d<   | j                   j                  t        j*                        |d<   | j                   j                  t        j,                        |d<   | j                   j                  t        j.                        |d<   | j                   j                  t        j                        |d<   | j                   j                  t        j                        |d<   | j                   j                  t        j0                        |d<   | j                   j                  t        j2                        |d<   | j                   j                  t        j4                        |d<   | j                   j                  t        j6                        |d<   | j                   j                  t        j8                        |d<   | j                   j                  t        j:                        |d<   | j                   j                  t        j<                        |d<   | j                   j                  t        j>                        |d<   | j                   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1E1EF/,,V-=-=>+++--f.?.?@,#{{2263I3IJ
 KK//0C0CD. $ 3 3F4K4K L
![[001E1EF/"kk11&2G2GH
;;..v/A/AB-![[001E1EF/ KK//0C0CD.;;..v/A/AB- KK//0C0CD.'+{{':':6;Y;Y'Z
#$%)[[%8%89U9U%V
!" KK//0C0CD.![[001E1EF/"kk11&2G2GH
 $ 3 3F4K4K L
++F,@,@A*"&++"5"5f6O6O"P
![[001E1EF/"kk11&2G2GH
 $ 3 3F4K4K L
"kk11&2G2GH
#{{2263I3IJ
++FOO<* KK//0C0CD.;;..v/A/AB-++--f.D.DE,++--f.?.?@,"kk11&2G2GH
r   c                 >    | j                   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                 z    | j                   r| j                   j                          d| _         d| _        d| _        y)z#Close a session, freeing resources.Nr   )r   closer   r   rV   s    r   r   z
Curl.close   s.    ;;KKr   c                 $    | j                          y 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
   #   sW    /@81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      s3   4 	qQ '$! 11$' FMM'7#O Od z
388}q$hhqkAEE#J	!&&(O	-FMM!&&(	!**V__
%&	!&&(:
GGI A  1001  		s#   D? E ?EEEE