U
    	f=                  &   @  s  d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZd dlZ	d dl
Z	d dlZd dlZd dlZ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	d
dZdddddZdddddddZddddddddZdddddddZddddddd d!Zdddd"d#Zej ej e!e!f d$f Z"ej e"d$f Z#ej$e!ej%e!e#e"f f Z&d%dd&d'd(Z'ddd)ddd*d+d,Z(dd-dd.d/d0Z)d1d2d3d3d4d5d6Z*d1d2d3d3d4d7d8Z+d1d2d3dd4d9d:Z,ej-dd;ej.d<e!d=ej/d>d?d@e!dAdBej/dCdDdEe!e!fdFdGdHej/dIdJdKe!dLdBej/dMdNdOe!e!fdFdPdHej/dQdRdSe!ej0dTdUfdFdVdHej/dWdXdYe!e*dZd[ej/d\d]d^e!e!fdFd_dHej/d`dae!e!fdFdbdHej/dcdde!e!fdee+dfdgej/dhdie!ddjdkej/dldme1dndodkej/dpdqdFddrdsej/dtdudFdFdvdsej/dwdxe2dFddydzej/d{e0d|d}dBej/d~de2dFdddzej/ddFdFde,dddddddddddddddddddddddZ3dS )    )annotationsN   )Client)RequestError)Response)codesNone)returnc                  C  sT  t j } | jddd |   | jddd |   | jddd |   t jjjddd	}|jd
dddd |d |dd |dd |dd |dd |dd |dd |dd |dd |dd |d d! |d"d# |d$d% |d&d' |d(d) |d*d+ |d,d- |d.d/ | | d S )0Nz[bold]HTTPX :butterfly:center)justifyzA next generation HTTP client.z7Usage: [bold]httpx[/bold] [cyan]<URL> [OPTIONS][/cyan] leftr   T)paddingZpad_edge	Parameterbold)Zno_wrapr   styleZDescriptionz-m, --method [cyan]METHODz{Request method, such as GET, POST, PUT, PATCH, DELETE, OPTIONS, HEAD.
[Default: GET, or POST if a request body is included]z#-p, --params [cyan]<NAME VALUE> .../Query parameters to include in the request URL.z-c, --content [cyan]TEXT,Byte content to include in the request body.z!-d, --data [cyan]<NAME VALUE> ...)Form data to include in the request body.z%-f, --files [cyan]<NAME FILENAME> ...*Form files to include in the request body.z-j, --json [cyan]TEXT)JSON data to include in the request body.z$-h, --headers [cyan]<NAME VALUE> .../Include additional HTTP headers in the request.z --cookies [cyan]<NAME VALUE> ..."Cookies to include in the request.z--auth [cyan]<USER PASS>Username and password to include in the request. Specify '-' for the password to use a password prompt. Note that using --verbose/-v will expose the Authorization header, including the password encoding in a trivially reversible format.z--proxy [cyan]URLISend the request via a proxy. Should be the URL giving the proxy address.z--timeout [cyan]FLOATzTimeout value to use for network operations, such as establishing the connection, reading some data, etc... [Default: 5.0]--follow-redirectsAutomatically follow redirects.--no-verifyDisable SSL verification.--http2@Send the request using HTTP/2, if the remote server supports it.z--download [cyan]FILE?Save the response content as a file, rather than displaying it.z-v, --verbosez1Verbose output. Show request as well as response.--helpShow this message and exit.)	richconsoleConsoleprinttableZTableZgridZ
add_columnZadd_row)r%   r(    r)   N/var/www/html/apigroqsegura/apigroq/lib/python3.8/site-packages/httpx/_main.py
print_help   s    
 
    r+   r   str)responser	   c                 C  s^   | j d}|d k	rZ|d\}}}ztttj|	 j
W S  tjjk
rX   Y nX dS )NzContent-Type; )headersget	partitiontypingcastr,   pygmentsZlexersZget_lexer_for_mimetypestripnameutilZClassNotFound)r-   content_typeZ	mime_type_r)   r)   r*   get_lexer_for_responsee   s     r;   Fzhttpcore.Requestbool)requesthttp2r	   c                   sh    rdnd} fdd| j D }| jd}| jjd}| d| d| gdd |D  }d|S )	NzHTTP/2zHTTP/1.1c                   s$   g | ]\}} r|  n||fqS r)   )lower.0r7   valuer>   r)   r*   
<listcomp>t   s    z*format_request_headers.<locals>.<listcomp>ascii c                 S  s*   g | ]"\}}| d  d| d  qS rE   : decoder@   r)   r)   r*   rD   y   s    
)r0   methodrJ   urltargetjoin)r=   r>   versionr0   rL   rN   linesr)   rC   r*   format_request_headersr   s    
rR   bytesintzbytes | Nonezlist[tuple[bytes, bytes]])http_versionstatusreason_phraser0   r	   c                 C  sT   |  d}|d krt|n| d}| d| d| gdd |D  }d|S )NrE   rF   c                 S  s*   g | ]"\}}| d  d| d  qS rG   rI   r@   r)   r)   r*   rD      s    z+format_response_headers.<locals>.<listcomp>rK   )rJ   r   get_reason_phraserO   )rU   rV   rW   r0   rP   reasonrQ   r)   r)   r*   format_response_headers   s    
rZ   c                 C  sV   t j }t| |d}t jj|dddd}|| t jjddddd}|| d S )NrC   http	ansi_darkTZthemeZ	word_wrapr/   )r$   r%   r&   rR   syntaxSyntaxr'   )r=   r>   r%   	http_textr^   r)   r)   r*   print_request_headers   s    

ra   c                 C  sX   t j }t| |||}t jj|dddd}|| t jjddddd}|| d S )Nr[   r\   Tr]   r/   )r$   r%   r&   rZ   r^   r_   r'   )rU   rV   rW   r0   r%   r`   r^   r)   r)   r*   print_response_headers   s    

rb   c                 C  s   t j }t| }|r| dkrZz|  }tj|dd}W q` tk
rV   | j}Y q`X n| j}t j	j
||ddd}|| n|dt| j d d S )	Njson   )indentr\   Tr]   <z bytes of binary data>)r$   r%   r&   r;   r?   rc   dumps
ValueErrortextr^   r_   r'   lencontent)r-   r%   Z
lexer_namedatari   r^   r)   r)   r*   print_response   s    
rm   ._PeerCertRetDictType)certr	   c              
   C  s   g }|   D ]\}}t|ttfr|d| d |D ]|}|dkrn|D ]"}|d|d  d|d  qHq8t|trt|dkr|d|d  d|d  q8|d| q8q|d| d| qd	|S )
Nz*   :)subjectZissuerz*     r   rH   r      rK   )items
isinstancelisttupleappendrj   rO   )ro   rQ   keyrB   itemZsub_itemr)   r)   r*   format_certificate   s    " rz   ztyping.Mapping[str, typing.Any])r7   infoverboser	   c                 C  s  t j }| dkr2|r2|d }|d| nh| dkrr|rr|d }|d}|d|d d	|d
   n(| dkr|r|d }|d}| }| }	| }
| }|d|d|	d  |d| |
r|d |t	|
 n| dkr|r|d }t
|dd n|| dkrD|rD|d }t
|dd nV| dkrn|d \}}}}t|||| n,| dkr|d \}}d}d }t|||| d S )Nzconnection.connect_tcp.startedhostz* Connecting to zconnection.connect_tcp.completereturn_valueserver_addrz* Connected to r   z	 on port r   zconnection.start_tls.complete
ssl_objectz* SSL established using z / z* Selected ALPN protocol: z* Server certificate:z#http11.send_request_headers.startedr=   FrC   z"http2.send_request_headers.startedTz(http11.receive_response_headers.completez'http2.receive_response_headers.completes   HTTP/2)r$   r%   r&   r'   get_extra_inforP   ciphergetpeercertselected_alpn_protocolrz   ra   rb   )r7   r{   r|   r%   r}   streamr   r   rP   r   Zserver_certZalpnr=   rU   rV   rW   r0   r)   r)   r*   trace   sD    

"



r   ztyping.BinaryIO)r-   downloadr	   c              	   C  s   t j }|  | jd}t jddt jjd dt j	 t j
 ^}dt j|j }|j|t|pld|d k	d}|  D ]}|| |j|| jd qW 5 Q R X d S )	NzContent-Lengthz([progress.description]{task.description}z-[progress.percentage]{task.percentage:>3.0f}%)Z	bar_widthzDownloading [bold]r   )totalstart)	completed)r$   r%   r&   r'   r0   r1   progressZProgressZ	BarColumnZDownloadColumnZTransferSpeedColumnZmarkupescaper7   add_taskrT   
iter_byteswriteupdatenum_bytes_downloaded)r-   r   r%   content_lengthr   descriptionZdownload_taskchunkr)   r)   r*   download_response   s(    


r   zclick.Contextzclick.Option | click.Parameterz
typing.Any)ctxparamrB   r	   c                 C  s>   |d krd S zt |W S  t jk
r8   tdY nX d S )NzNot valid JSON)rc   loadsJSONDecodeErrorclickBadParameterr   r   rB   r)   r)   r*   validate_json  s    r   c                 C  s2   |dkrd S |\}}|dkr*t jddd}||fS )NNN-ZPasswordT)
hide_input)r   prompt)r   r   rB   usernamepasswordr)   r)   r*   validate_auth  s    r   c                 C  s    |r
| j rd S t  |   d S )N)resilient_parsingr+   exitr   r)   r)   r*   handle_help+  s    
r   )add_help_optionrM   )typez--methodz-mrL   z{Request method, such as GET, POST, PUT, PATCH, DELETE, OPTIONS, HEAD. [Default: GET, or POST if a request body is included])r   helpz--paramsz-pparamsTr   )r   multipler   z	--contentz-crk   r   z--dataz-drl   r   z--filesz-ffilesrb)moder   z--jsonz-jrc   r   )r   callbackr   z	--headersz-hr0   r   z	--cookiescookiesr   z--authauthr   r   )r   defaultr   r   z--proxyproxyr   )r   r   r   z	--timeouttimeoutg      @r   r   follow_redirectsr   )is_flagr   r   r   verifyr   r   r>   r    )r   r   r   r   z
--downloadwbr!   z	--verbosez-vz*Verbose. Show request as well as response.r"   r#   )r   is_eagerexpose_valuer   r   zlist[tuple[str, str]]zlist[tuple[str, click.File]]ztuple[str, str] | Nonefloatztyping.BinaryIO | None)rM   rL   r   rk   rl   r   rc   r0   r   r   r   r   r   r   r>   r   r|   r	   c                 C  s  |s|s|s|s|rdnd}zt |
|||dx}|j|| t||t||||t||	|dtjt|did0}|dk	rt|| n|  |j	rt
| W 5 Q R X W 5 Q R X W nT tk
r } z4tj }|dt|j d	|  td
 W 5 d}~X Y nX t|jrdnd
 dS )zU
    An HTTP command line client.
    Sends a request and displays the response.
    POSTGET)r   r   r   r>   r   )r|   )
r   rk   rl   r   rc   r0   r   r   r   
extensionsNz[red]z[/red]: r   r   )r   r   ru   dict	functoolspartialr   r   readrk   rm   r   r$   r%   r&   r'   r   __name__sysr   
is_success)rM   rL   r   rk   rl   r   rc   r0   r   r   r   r   r   r   r>   r   r|   clientr-   excr%   r)   r)   r*   main7  sH     # 
r   )F)F)F)4
__future__r   r   rc   r   r3   r   httpcoreZpygments.lexersr5   Zpygments.utilZrich.consoler$   Zrich.markupZrich.progressZrich.syntaxZ
rich.table_clientr   _exceptionsr   _modelsr   _status_codesr   r+   r;   rR   rZ   ra   rb   rm   Tupler,   _PCTRTT_PCTRTTTDictUnionrn   rz   r   r   r   r   r   commandargumentoptionFiler   r<   r   r)   r)   r)   r*   <module>   sF  M	 '


