o
    ùT·jJ<  ã                   @  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mZ ddlmZ ddlmZ ddlmZ ejrUd dlZd’d
d„Zd“dd„Zd”d•dd„Zd–d d!„Zd”d—d"d#„Zd˜d$d%„Zd™d&d'„Z e!e!e"e"f d(f Z#e!e#d(f Z$e%e"e"e$B e#B f Z&dšd+d,„Z'd”d›d1d2„Z(dœd5d6„Z)d�d=d>„Z*d�d?d@„Z+dždAdB„Z,ej-ddC�ej.dDe"dE�ej/dFdGdHe"dIdJ�ej/dKdLdMe"e"fdNdOdP�ej/dQdRdSe"dTdJ�ej/dUdVdWe"e"fdNdXdP�ej/dYdZd[e"ej0d\d]�fdNd^dP�ej/d_d`dae"e*dbdc�ej/dddede"e"fdNdfdP�ej/dgdhe"e"fdNdidP�ej/djdke"e"fdle+dmdn�ej/dodpe"ddqdr�ej/dsdte1dudvdr�ej/dwdxdNddydz�ej/d{dNd|d}�ej/d~de2dNddd€�ej/d�e 0d‚¡dƒdJ�ej/d„d…e2dNdd†d€�ej/d‡dNdNde,dˆd‰�dŸd�d‘„ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒZ3dS ) é    )ÚannotationsNé   )ÚClient)ÚRequestError)ÚResponse)ÚcodesÚreturnÚNonec                  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.z8Usage: [bold]httpx2[/bold] [cyan]<URL> [OPTIONS][/cyan] Úleftr   T)ÚpaddingÚpad_edgeÚ	ParameterÚbold)Úno_wrapr   ÚstyleÚDescriptionz-m, --method [cyan]METHODz‚Request method, such as GET, POST, PUT, PATCH, DELETE, OPTIONS, HEAD, QUERY.
[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]URLúISend the request via a proxy. Should be the URL giving the proxy address.z--timeout [cyan]FLOATúzTimeout value to use for network operations, such as establishing the connection, reading some data, etc... [Default: 5.0]ú--follow-redirectsúAutomatically follow redirects.z--verify / --no-verifyúEnable 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ÚtableÚTableÚgridÚ
add_columnÚadd_row)r'   r*   © r/   úO/home/dinkstrade/pdmp-scanner/venv/lib/python3.10/site-packages/httpx2/_main.pyÚ
print_help   sh   

þþþþþþþþr1   Úresponser   Ústrc                 C  s^   | j  d¡}|d ur-| d¡\}}}zt ttj | 	¡ ¡j
¡W S  tjjy,   Y dS w dS )NzContent-Typeú;Ú )ÚheadersÚgetÚ	partitionÚtypingÚcastr3   ÚpygmentsÚlexersÚget_lexer_for_mimetypeÚstripÚnameÚutilÚClassNotFound)r2   Úcontent_typeÚ	mime_typeÚ_r/   r/   r0   Úget_lexer_for_response]   s   þrE   FÚrequestúhttpcore2.RequestÚhttp2Úboolc                   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©Ú.0r?   Úvalue©rH   r/   r0   Ú
<listcomp>j   s   $ z*format_request_headers.<locals>.<listcomp>Úasciiú c                 S  ó*   g | ]\}}|  d ¡› d|  d ¡› �‘qS ©rP   ú: ©ÚdecoderK   r/   r/   r0   rO   m   ó    ÿÚ
)r6   ÚmethodrV   ÚurlÚtargetÚjoin)rF   rH   Úversionr6   rY   r[   Úlinesr/   rN   r0   Úformat_request_headersh   s   ÿ
r_   Úhttp_versionÚbytesÚstatusÚintÚreason_phraseúbytes | Noner6   úlist[tuple[bytes, bytes]]c                 C  sT   |   d¡}|d u rt |¡n|  d¡}|› d|› d|› �gdd„ |D ƒ }d |¡S )NrP   rQ   c                 S  rR   rS   rU   rK   r/   r/   r0   rO   {   rW   z+format_response_headers.<locals>.<listcomp>rX   )rV   r   Úget_reason_phraser\   )r`   rb   rd   r6   r]   Úreasonr^   r/   r/   r0   Úformat_response_headerss   s   
ÿ
ri   c                 C  sV   t j ¡ }t| |d�}t jj|dddd�}| |¡ t jjddddd�}| |¡ d S )NrN   ÚhttpÚ	ansi_darkT©ÚthemeÚ	word_wrapr5   )r&   r'   r(   r_   ÚsyntaxÚSyntaxr)   )rF   rH   r'   Ú	http_textro   r/   r/   r0   Úprint_request_headers�   s   

rr   c                 C  sX   t j ¡ }t| |||ƒ}t jj|dddd�}| |¡ t jjddddd�}| |¡ d S )Nrj   rk   Trl   r5   )r&   r'   r(   ri   ro   rp   r)   )r`   rb   rd   r6   r'   rq   ro   r/   r/   r0   Úprint_response_headersŠ   s   

rs   c                 C  sš   t j ¡ }t| ƒ}|r?| ¡ dkr+z|  ¡ }tj|dd�}W n ty*   | j}Y nw | j}t j	j
||ddd�}| |¡ d S | dt| jƒ› d�¡ d S )	NÚjsoné   )Úindentrk   Trl   ú<z bytes of binary data>)r&   r'   r(   rE   rJ   rt   ÚdumpsÚ
ValueErrorÚtextro   rp   r)   ÚlenÚcontent)r2   r'   Ú
lexer_nameÚdatarz   ro   r/   r/   r0   Úprint_response˜   s   

ÿr   .ÚcertÚ_PeerCertRetDictTypec              	   C  sÆ   g }|   ¡ D ]W\}}t|ttfƒrR| d|› d�¡ |D ]4}|dv r-| dd„ |D ƒ¡ qt|tƒrHt|ƒdkrH| d|d › d	|d
 ›�¡ q| d|›�¡ qq| d|› d	|›�¡ qd |¡S )Nz*   ú:)ÚsubjectÚissuerc                 s  s(   � | ]}d |d › d|d ›�V  qdS )ú*     r   rT   r   Nr/   )rL   Úsub_itemr/   r/   r0   Ú	<genexpr>·   s   €& z%format_certificate.<locals>.<genexpr>é   r…   r   rT   r   rX   )ÚitemsÚ
isinstanceÚlistÚtupleÚappendÚextendr{   r\   )r€   r^   ÚkeyrM   Úitemr/   r/   r0   Úformat_certificate°   s    ú
r‘   r?   Úinfoútyping.Mapping[str, typing.Any]Úverbosec                 C  s¢  t j ¡ }| dkr|r|d }| d|›�¡ d S | dkr9|r9|d }| d¡}| d|d ›d	|d
 › �¡ d S | dkr|r|d }| d¡}| ¡ }| ¡ }	| ¡ }
| ¡ }| d|›d|	d ›�¡ | d|›�¡ |
r}| d¡ | t	|
ƒ¡ d S d S | dkr‘|r‘|d }t
|dd� d S | dkr£|r£|d }t
|dd� d S | dkr¸|d \}}}}t||||ƒ d S | dkrÏ|d \}}d}d }t||||ƒ d S 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.startedrF   FrN   z"http2.send_request_headers.startedTz(http11.receive_response_headers.completez'http2.receive_response_headers.completes   HTTP/2)r&   r'   r(   r)   Úget_extra_infor]   ÚcipherÚgetpeercertÚselected_alpn_protocolr‘   rr   rs   )r?   r’   r”   r'   r•   Ústreamr—   r˜   r]   rš   Úserver_certÚalpnrF   r`   rb   rd   r6   r/   r/   r0   ÚtraceÁ   sH   

"

þür    Údownloadútyping.BinaryIOc                 C  sÆ   t j ¡ }| ¡  | j d¡}t j ddt jjd d�t j 	¡ t j 
¡ ¡�5}dt j |j¡› �}|j|t|p6dƒ|d ud�}|  ¡ D ]}| |¡ |j|| jd� qAW d   ƒ d S 1 s\w   Y  d S )	NzContent-Lengthz([progress.description]{task.description}z-[progress.percentage]{task.percentage:>3.0f}%)Ú	bar_widthzDownloading [bold]r   )ÚtotalÚstart)Ú	completed)r&   r'   r(   r)   r6   r7   ÚprogressÚProgressÚ	BarColumnÚDownloadColumnÚTransferSpeedColumnÚmarkupÚescaper?   Úadd_taskrc   Ú
iter_bytesÚwriteÚupdateÚnum_bytes_downloaded)r2   r¡   r'   Úcontent_lengthr§   ÚdescriptionÚdownload_taskÚchunkr/   r/   r0   Údownload_responseæ   s,   
û
ý
þ"ór·   Úctxúclick.ContextÚparamúclick.Option | click.ParameterrM   ú
typing.Anyc                 C  s4   |d u rd S zt  |¡W S  t jy   t d¡‚w )NzNot valid JSON)rt   ÚloadsÚJSONDecodeErrorÚclickÚBadParameter©r¸   rº   rM   r/   r/   r0   Úvalidate_jsonü   s   
ÿrÂ   c                 C  s2   |dkrd S |\}}|dkrt jddd�}||fS )N©NNú-ÚPasswordT)Ú
hide_input)r¿   Úprompt)r¸   rº   rM   ÚusernameÚpasswordr/   r/   r0   Úvalidate_auth
  s   rÊ   c                 C  s    |r| j rd S tƒ  |  ¡  d S )N)Úresilient_parsingr1   ÚexitrÁ   r/   r/   r0   Úhandle_help  s   
rÍ   )Úadd_help_optionrZ   )Útypez--methodz-mrY   z‚Request method, such as GET, POST, PUT, PATCH, DELETE, OPTIONS, HEAD, QUERY. [Default: GET, or POST if a request body is included])rÏ   Úhelpz--paramsz-pÚparamsTr   )rÏ   ÚmultiplerÐ   z	--contentz-cr|   r   z--dataz-dr~   r   z--filesz-fÚfilesÚrb)Úmoder   z--jsonz-jrt   r   )rÏ   ÚcallbackrÐ   z	--headersz-hr   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Ð   z--verify/--no-verifyr    )rÙ   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Ð   úlist[tuple[str, str]]úlist[tuple[str, click.File]]útuple[str, str] | NoneÚfloatÚverifyútyping.BinaryIO | Nonec                 C  sJ  |s|s
|s
|s
|rdnd}z]t |
|||d��K}|j|| t|ƒ|t|ƒ|||t|ƒ|	|dtjt|d�id��}|durAt||ƒ n| ¡  |j	rLt
|ƒ W d  ƒ n1 sVw   Y  W d  ƒ n1 sew   Y  W n* ty• } ztj ¡ }| dt|ƒj› d	|› �¡ t d
¡ W Y d}~nd}~ww t |jr d¡ dS d
¡ dS )zU
    An HTTP command line client.
    Sends a request and displays the response.
    ÚPOSTÚGET)rÚ   rÛ   rH   rå   r    )r”   )
rÑ   r|   r~   rÓ   rt   r6   r×   rØ   rÜ   Ú
extensionsNz[red]z[/red]: r   r   )r   r�   r‹   ÚdictÚ	functoolsÚpartialr    r·   Úreadr|   r   r   r&   r'   r(   r)   rÏ   Ú__name__ÚsysrÌ   Ú
is_success)rZ   rY   rÑ   r|   r~   rÓ   rt   r6   r×   rØ   rÚ   rÛ   rÜ   rå   rH   r¡   r”   Úclientr2   Úexcr'   r/   r/   r0   Úmain$  sJ    !ô€í€ÿ€
€ýró   )r   r	   )r2   r   r   r3   )F)rF   rG   rH   rI   r   r3   )
r`   ra   rb   rc   rd   re   r6   rf   r   r3   )rF   rG   rH   rI   r   r	   )
r`   ra   rb   rc   rd   re   r6   rf   r   r	   )r2   r   r   r	   )r€   r�   r   r3   )r?   r3   r’   r“   r”   rI   r   r	   )r2   r   r¡   r¢   r   r	   )r¸   r¹   rº   r»   rM   r¼   r   r¼   )r¸   r¹   rº   r»   rM   r¼   r   r	   )$rZ   r3   rY   r3   rÑ   rá   r|   r3   r~   rá   rÓ   râ   rt   r3   r6   rá   r×   rá   rØ   rã   rÚ   r3   rÛ   rä   rÜ   rI   rå   rI   rH   rI   r¡   ræ   r”   rI   r   r	   )4Ú
__future__r   rë   rt   rï   r9   r¿   Úpygments.lexersr;   Úpygments.utilÚrich.consoler&   Úrich.markupÚrich.progressÚrich.syntaxÚ
rich.tableÚ_clientr   Ú_exceptionsr   Ú_modelsr   Ú_status_codesr   ÚTYPE_CHECKINGÚ	httpcore2r1   rE   r_   ri   rr   rs   r   rŒ   r3   Ú_PCTRTTÚ_PCTRTTTrê   r�   r‘   r    r·   rÂ   rÊ   rÍ   ÚcommandÚargumentÚoptionÚFilerä   rI   ró   r/   r/   r/   r0   Ú<module>   sD   

C

	


%



ú
úûúúúúûùûú
ûýúýúú4