
    AHj5                        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	 	 	 	 	 	 	 ddZy)    )annotationsN)Literal)CurlHttpVersion)Response)Console)Progress	BarColumnDownloadColumnTransferSpeedColumn)Syntax)Textc                   t         j                  dt         j                  dt         j                  dt         j                  dt         j
                  dt         j                  dt         j                  di}|j                  | 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)responsemappings     L/root/tools/cai/cai_env/lib/python3.12/site-packages/curl_cffi/cli/output.py_http_ver_labelr      so    eecs**CCG ;;x,,e44    c                    | j                   r| j                   S | j                  ry| j                  ry| j                  ry| j                  ryt
        j                  j                         ryy)NHhBbhbhb)
print_specverboseheaders_only	body_onlydownloadsysstdoutisatty)argss    r   determine_print_specr-      sS    ||~~}}
zzr   c                L   |s|D ]  }t        |        y|D ]  }d|v rh|j                  d      \  }}}t               }|j                  |d       |j                  dd       |j                  |       | j                  |       o| j                  t        |d              y)z3Print HTTP headers, with rich colors when possible.N: z	bold cyanstyledim
bold green)print	partitionr   append)consolelines	use_colorlinekey_valuetexts           r   _print_headersr?   /   s     	D$K	 	:4< NN40MCE6DKK;K/KKEK*KKMM$MM$t<89	:r   c           	        |j                   j                  dd      }d|v rU	 t        j                  |j                         dd      }|r | j	                  t        |dddd	
             yt	        |       y|j                  d      r6t	        d| dt        |j                         dt        j                         y|st	        |j                         yd|v r*| j	                  t        |j                  dddd	
             yd|v r*| j	                  t        |j                  dddd	
             y| j	                  |j                  dd       y# t        j                  t        f$ r Y w xY w)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   rB   dumpsr4   r   JSONDecodeError
ValueError
startswithlencontentr)   stderrr>   )r7   r   r9   content_type	formatteds        r   _print_bodyr\   A   sc   ##'';L	

8==?15QI!)"&)2  i  x(!,r#h6F6F2G1HP	
 	hmm!!*	
 
,	!!*	
 	hmmuUCA $$j1 		s   AE *E E,+E,c                    t        |      }d| d|j                   d|j                   }|st        |       y|j                  dk  rd}n|j                  dk  rd}nd}| j                  t	        ||	             y)
zPrint the HTTP status line.zHTTP/ Ni,  r3   i  zbold yellowzbold redr0   )r   status_codereasonr4   r   )r7   r   r9   verstatus_liner1   s         r   _print_statusrc   w   s|    
(
#C#a 4 45Qx6GHKkc!				#MM${%01r   c           	     b   t         j                  j                         }t        ||       }d|v rQ| d| g}|xs i j	                         D ]  \  }	}
|j                  |	 d|
         t        |||       t                d|v r9|r7|r |j                  t        |dddd	
             nt        |       t                d|v rUt        || |       | j                  j	                         D 	
cg c]  \  }	}
|	 d|
  }}	}
t        |||       t                d|v rt        || |       y y c c}
}	w )N)force_terminalno_colorHr^   r/   BrB   rF   TrG   rH   r!   r"   )r)   r*   r+   r   itemsr6   r?   r4   r   rc   rR   r\   )r   methodurlrequest_headersrequest_bodyr$   r9   r7   r8   kvheader_liness               r   print_outputrq      sB    

!!#IYYGG j81SE"#$*113 	&DAqLLA3b%	&wy1 j\MM %"%. , jgx3080@0@0F0F0HI11#RsIIwi8 jGXy1  Js   -D+c                    | j                  dd      j                  d      d   j                  d      d   } t        j                  dd|       } | xs dS )	z2Remove or replace characters unsafe for filenames. rA   /\z[^\w.\-]r<   r(   )replacesplitresub)names    r   _sanitize_filenamer|      sQ     <<#))#.r288>rBD66+sD)D:r   c           	        |z| j                   j                  dd      }d|v r3|j                  d      d   j                  d      j                  d      }n'|j	                  d      j                  d      d   xs d	}t        |      }| j                  }t        |      }t        d
      }t        dt               t               t               |      5 }|j                  ||      }t        |d      5 }	d}
t        d||
      D ]6  }||||
z    }|	j!                  |       |j#                  |t        |             8 	 d d d        d d d        t%        d| t&        j(                         y # 1 sw Y   0xY w# 1 sw Y   4xY w)Nzcontent-dispositionrA   z	filename=   "'rt   ru   r(   T)rY   z([progress.description]{task.description})r7   )totalwbi   r   zDownloaded to rL   )rR   r   rx   striprstripr|   rX   rW   r   r   r	   r
   r   add_taskopenrangewriteadvancer4   r)   rY   )r   rk   output_pathcdrX   r   r7   progresstaskf
chunk_sizeoffsetchunks                r   handle_downloadr      sq    !!"7<"((;/288=CCCHK**S///4R8FJK$[1KGLET"G	2
 3 
  E :+t$ 	3"J5*5 3*)<=  s5z23	33 
N;-
(szz:	3 	33 3s%    E83A	E,=E8,E5	1E88F)r   r   returnzLiteral['1.0', '1.1', '2', '3'])r,   zargparse.Namespacer   str)r7   r   r8   z	list[str]r9   boolr   None)r7   r   r   r   r9   r   r   r   )r   r   rj   r   rk   r   rl   zdict[str, str] | Nonerm   
str | Noner$   r   r   r   )r{   r   r   r   )N)r   r   rk   r   r   r   r   r   )
__future__r   argparserB   ry   r)   typingr   curl_cffi.constr   curl_cffi.requestsr   rich.consoler   rich.progressr   r	   r
   r   rich.syntaxr   	rich.textr   r   r-   r?   r\   rc   rq   r|   r    r   r   <module>r      s    "   	 
  + '   R R  
5 :$3Dl2 ,2,2,2 
,2 +	,2
 ,2 ,2 
,2^ =A;; ;/9;	;r   