
    ei5                        d dl m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lmZmZmZmZ d dlmZ d d	lmZ d)dZd*dZd+dZd,dZd,dZd-d$Zd.d&Z	 d/d0d(ZdS )1    )annotationsN)Literal)CurlHttpVersion)Response)Console)Progress	BarColumnDownloadColumnTransferSpeedColumn)Syntax)Textresponser   returnLiteral['1.0', '1.1', '2', '3']c                    t           j        dt           j        dt           j        dt           j        dt           j        dt           j        dt           j        di}|                    | j	        d          S )Nz1.0z1.123)
r   V1_0V1_1V2_0V2TLSV2_PRIOR_KNOWLEDGEV3V3ONLYgethttp_version)r   mappings     ?/usr/local/lib/python3.11/dist-packages/curl_cffi/cli/output.py_http_ver_labelr      sZ    eecs*CCG ;;x,e444    argsargparse.Namespacestrc                    | j         r| j         S | j        rdS | j        rdS | j        rdS | j        rdS t
          j                                        rdS dS )NHhBbhbhb)
print_specverboseheaders_only	body_onlydownloadsysstdoutisatty)r!   s    r   determine_print_specr1      sq     | v s~ s} s
z t3r    consoler   lines	list[str]	use_colorboolNonec                   |s|D ]}t          |           dS |D ]}d|v r|                    d          \  }}}t                      }|                    |d           |                    dd           |                    |           |                      |           |                      t          |d                     dS )z3Print HTTP headers, with rich colors when possible.N: z	bold cyanstyledim
bold green)print	partitionr   append)r2   r3   r5   linekey_valuetexts           r   _print_headersrF   /   s      	 	D$KKKK 	: 	:4<< NN400MCE66DKK;K///KKEK***KKMM$MM$t<8889999	: 	:r    c           	        |j                             dd          }d|v r	 t          j        |                                dd          }|r(|                     t          |dddd	
                     nt	          |           dS # t          j        t          f$ r Y nw xY w|                    d          r6t	          d| dt          |j
                   dt          j                   dS |st	          |j                   dS d|v r.|                     t          |j        dddd	
                     dS d|v r.|                     t          |j        dddd	
                     dS |                     |j        dd           dS )z9Print response body, with syntax highlight when possible.zcontent-type json   F)indentensure_ascii	ansi_darkTdefaulttheme	word_wrapbackground_colorNzimage/zBinary image data (z, z bytes)filehtmlxml)	highlightmarkup)headersr   rI   dumpsr>   r   JSONDecodeError
ValueError
startswithlencontentr.   stderrrE   )r2   r   r5   content_type	formatteds        r   _print_bodyrc   A   s    #'';;L	
8==??15QQQI !!)"&)2      i   F$j1 	 	 	D	x(( P,PP#h6F2G2GPPP	
 	
 	
 	
 	 hm!!*  	
 	
 	
 	
 	
 
,		!!*  	
 	
 	
 	
 	
 	hmuUCCCCCs   A"B BBc                    t          |          }d| d|j         d|j         }|st          |           dS |j        dk     rd}n|j        dk     rd}nd}|                     t	          ||	                     dS )
zPrint the HTTP status line.zHTTP/ Ni,  r=   i  zbold yellowzbold redr:   )r   status_codereasonr>   r   )r2   r   r5   verstatus_liner;   s         r   _print_statusrj   w   s    
(
#
#CH#HH 4HHxHHK kc!!			#	#MM${%00011111r    methodurlrequest_headersdict[str, str] | Nonerequest_body
str | Noner)   c           	        t           j                                        }t          ||           }d|v r]| d| g}|pi                                 D ]\  }	}
|                    |	 d|
             t          |||           t                       d|v rI|rG|r(|                    t          |dddd	
                     nt          |           t                       d|v rSt          || |           d | j
                                        D             }t          |||           t                       d|v rt          || |           d S d S )N)force_terminalno_colorHre   r9   BrI   rM   TrN   rO   r&   c                "    g | ]\  }}| d | S )r9    ).0kvs      r   
<listcomp>z print_output.<locals>.<listcomp>   s&    III11IIIr    r'   )r.   r/   r0   r   itemsr@   rF   r>   r   rj   rY   rc   )r   rk   rl   rm   ro   r)   r5   r2   r3   ry   rz   header_liness               r   print_outputr~      s    
!!##IYYGGGG j""S""#$*1133 	& 	&DAqLLA%%%%wy111 j\ 	 MM %"%.      , jgx333II0@0F0F0H0HIIIwi888 jGXy11111 r    namec                    |                      dd                              d          d                             d          d         } t          j        dd|           } | pdS )	z2Remove or replace characters unsafe for filenames. rH   /\z[^\w.\-]rC   r-   )replacesplitresub)r   s    r   _sanitize_filenamer      s[     <<##))#..r288>>rBD6+sD))D:r    output_pathc           	        || j                             dd          }d|v rB|                    d          d                             d                              d          }n0|                    d                              d          d         pd	}t          |          }| j        }t          |          }t          d
          }t          dt                      t                      t                      |          5 }|                    ||          }t          |d          5 }	d}
t          d||
          D ]G}||||
z            }|	                    |           |                    |t          |                     H	 d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t%          d| t&          j                   d S )Nzcontent-dispositionrH   z	filename=   "'r   r   r-   T)r`   z([progress.description]{task.description})r2   )totalwbi   r   zDownloaded to rS   )rY   r   r   striprstripr   r_   r^   r   r   r	   r
   r   add_taskopenrangewriteadvancer>   r.   r`   )r   rl   r   cdr_   r   r2   progresstaskf
chunk_sizeoffsetchunks                r   handle_downloadr      sI    !!"7<<"((;//288==CCCHHKK**S////44R8FJK$[11KGLLET"""G	2
 
 
 3 
  E ::+t$$ 	3"J5*55 3 3*)< <=  s5zz22223	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	33 3 3 3 3 3 3 3 3 3 3 3 3 3 3 

(;
(
(sz::::::s7   (F))AFF)F	F)F	F))F-0F-)r   r   r   r   )r!   r"   r   r#   )r2   r   r3   r4   r5   r6   r   r7   )r2   r   r   r   r5   r6   r   r7   )r   r   rk   r#   rl   r#   rm   rn   ro   rp   r)   r#   r   r7   )r   r#   r   r#   )N)r   r   rl   r#   r   rp   r   r7   )
__future__r   argparserI   r   r.   typingr   curl_cffi.constr   curl_cffi.requestsr   rich.consoler   rich.progressr   r	   r
   r   rich.syntaxr   	rich.textr   r   r1   rF   rc   rj   r~   r   r   rw   r    r   <module>r      s   " " " " " "   				 



       + + + + + + ' ' ' ' ' '             R R R R R R R R R R R R            
5 
5 
5 
5    : : : :$3D 3D 3D 3Dl2 2 2 2 ,2 ,2 ,2 ,2^    =A; ; ; ; ; ; ;r    