
    N j                        S SK Jr  S SKrS SKrS SKrS SKJrJr  S SKJ	r	  SSK
JrJr  SSKJr  \ " S S	5      5       rSS
 jrSS jr S       SS jjr\" 1 Sk5      r S       SS jjrSS jrg)    )annotationsN)	dataclassfield)Session   )SUPPORTED_METHODSprocess_url)_execute_requestc                  Z    \ rS rSr% SrSrS\S'   SrS\S'   \" \	S9r
S	\S
'   SrS\S'   Srg)HttpFileRequest   z+A single request parsed from an .http file.GETstrmethod url)default_factoryzdict[str, str]headersbody N)__name__
__module____qualname____firstlineno____doc__r   __annotations__r   r   dictr   r   __static_attributes__r       b/root/GenerationalWealth/GenerationalWealth/venv/lib/python3.13/site-packages/curl_cffi/cli/run.pyr   r      s0    5FCCM#D9G^9D#Nr   r   c                j   / n/ nU R                  5        HV  nUR                  5       R                  S5      (       a  U(       a  UR                  U5        / nMC  ME  UR                  U5        MX     U(       a  UR                  U5        / nU H$  n[	        U5      nUc  M  UR                  U5        M&     U$ )ztParse an .http file into a list of requests.

Supports the HTTP Request in Editor spec:
- Requests separated by ###
z###)
splitlinesstrip
startswithappend_parse_http_block)textblockscurrent_lineslinerequestsblock_linesreqs          r    parse_http_filer.      s     F!M!::<""5))m, "    & " m$H,?OOC   Or   c                   SnSnSn0 n/ nU  GH  nUR                  5       nUR                  S5      (       d  UR                  S5      (       a  MB  U=S:X  a    U(       d  MS  UR                  5       nUS   R                  5       [        ;   d  US   R                  5       S:X  a*  US   R                  5       n[        U5      S:  a  US   OSnOUS   nS	nM  =S	:X  a_    U(       d  S
nM  SU;   a7  UR                  S5      u  pnUR                  5       XIR                  5       '   GM  S
nUR                  U5        GM-  S
:X  d  GM5  UR                  S5      (       d  UR                  S5      (       a    OUR                  S5      (       aY  UR                  5       u  pUR                  5       n [        U5       nUR                  UR                  5       5        SSS5        GM  UR                  U5        GM     U(       d  g[        UUUSR                  U5      R                  5       S9$ ! , (       d  f       GM)  = f! [         a     [        SU 3[        R                  S9   GMU  f = f)zParse a single request block from an .http file.

Each block contains:
- Request line: [METHOD] URL [HTTP/version]
- Headers: Name: Value
- Body after blank line
- Comments with # or //
- File references: < filepath
requestr   r   #z//r   CONNECTr   r   r   :z> z<> z< Nz"Error: referenced file not found: file
)r   r   r   r   )r#   r$   splitupperr   len	partitionr%   openreadFileNotFoundErrorprintsysstderrr   join)linesstater   r   r   
body_linesr*   strippedpartsname_valuefilepathfs                 r    r&   r&   8   s    EF
C GJ::< s##x':':4'@'@ (!HNN$(99Qx~~'94"1X^^-F&)%j1n%("C(C!"EH_%-%7%7%<NDU,1KKMGJJL)"E%%d+&&t,,0C0CE0J0J&&t,,"*.."2KA'~~/H!(^q&--affh7 ,^ %%d+a d YYz"((*	  ,^, @
K!$s0   )H94 H&H9&
H6	0H96H99%I#"I#c           
        [        U5      nU(       d.  [        S[        R                  S9  [        R                  " S5        Sn[        US5       H  u  pV[        SU SUR                   SUR                   3[        R                  S9  [        UR                  5      n[        U UR                  UUR                  UR                  =(       d    SUS	9nUS:w  d  M  US-  nM     U$ )
z0Execute requests parsed from .http file content.z!Error: no requests found in file.r4   r   r   --- []  Nr   datasession)r.   r>   r?   r@   exit	enumerater   r   r	   r
   r   r   )	argsr'   rR   r+   failedir-   r   rcs	            r    _run_http_filerY      s    
 t$H1

CFHa(aS3::,ay1

C#''"JJKK!T
 7aKF )  Mr   >   :path:method:scheme
:authoritycontent-lengthtransfer-encodingc           
     *    [         R                  " U5      nWR                  S0 5      R                  S/ 5      nU(       d.  [        S[        R
                  S9  [        R                  " S5        Sn[        US5       GH>  u  pxUR                  S	0 5      n	U	R                  S
S5      R                  5       n
U	R                  SS5      nU(       d  [        SU S3[        R
                  S9  Mo  [        SU SU
 SU 3[        R
                  S9  0 nU	R                  S/ 5       HC  nUR                  SS5      nUR                  5       [        ;  d  M/  UR                  SS5      X'   ME     U=(       d    SnU	R                  S5      nU(       a  UR                  SS5      OSn[        U U
UUUUS9nUS:w  d  GM9  US-  nGMA     U$ ! [         R                   a<  n[        SU 3[        R
                  S9  [        R                  " S5         SnAGNSnAff = f)z.Execute requests parsed from HAR file content.zError: invalid HAR JSON: r4   r   Nlogentriesz$Error: no entries found in HAR file.r   r0   r   r   r   r   rM   z] skipping entry with no URLrN   rO   r   rG   rI   postDatar'   rP   )jsonloadsJSONDecodeErrorr>   r?   r@   rS   getrT   r8   lower_SKIP_HAR_HEADERSr
   )rU   r'   rR   harexcrb   rV   rW   entryr-   r   r   r   hrG   	post_datarQ   rX   s                     r    _run_har_filero      s   jj
 ggeR $$Y3G43::FFgq)ii	2&5)//1ggeR E!89

KaS6(!C5)

;B'A55$Dzz|#44 !gr 2 ( /TGGJ'	,5y}}VR(4
 7aKF= *@ MU  )#/cjjAs   G H1HHc                $   U R                   n [        U5       nUR                  5       nSSS5        [        U SS5      nU(       a  [        U R                  S9OSn UR                  S5      (       a  [        U WUS	9nOSUR                  S
5      (       a  [        U WUS	9nO1[	        SU 3[
        R                  S9  [
        R                  " S5        U(       a  UR                  5         WS:  a3  [	        SU S3[
        R                  S9  [
        R                  " S5        gg! , (       d  f       N= f! [         a5    [	        SU 3[
        R                  S9  [
        R                  " S5         GN?f = f! U(       a  UR                  5         f f = f)zExecute batch requests.NzError: file not found: r4   r   rR   T)impersonatez.har)rR   z.httpz Error: unsupported file format: r   r6   z request(s) failed.)r5   r;   r<   r=   r>   r?   r@   rS   getattrr   rq   endswithro   rY   close)rU   rJ   rK   r'   use_sessionrR   rV   s          r    
handle_runrv      s7   yyH(^q668D  $	40K7Bg$"2"23G
V$$"4w?Fw''#D$@F4XJ?cjjQHHQKMMOz6(-.SZZ@ + ^ 'z2D  MMO s:   D3 D"D3 A5E5 "
D0,D3 0D3 3;E21E25F)r'   r   returnzlist[HttpFileRequest])rB   z	list[str]rw   zHttpFileRequest | None)N)rU   argparse.Namespacer'   r   rR   zSession | Nonerw   int)rU   rx   rw   None)
__future__r   argparserd   r?   dataclassesr   r   curl_cffi.requestsr   parser   r	   r0   r
   r   r.   r&   rY   	frozensetri   ro   rv   r   r   r    <module>r      s    "   
 ( & 1 %   4K^ DH
$'2@D 	  DH0
0$'02@00pr   