
    T>qj                         d dl Z d dlZd dlZddlmZ ddlmZmZ ddlm	Z	m
Z
 ddlmZmZmZmZ ddlmZ g dZd	e j&                  d
dfdZd	e j&                  d
dfdZddZd
e j&                  fdZddZy)    N   )print_doctor)add_pro_parsershandle_pro_command)
handle_runparse_http_file)SUPPORTED_METHODSParsedItemsparse_request_itemsprocess_url)handle_request)build_parsermainr   r   r   r   r   r   r   r   r	   r
   parserreturnc                 &   | j                         }|j                  ddddd       |j                  dddd	
       |j                  ddd
       | j                         }|j                  dddd       |j                  dddd       |j                  dddd
       |j                  dddd
       |j                  ddddd       | j                  dd dd!
       | j                  d"d#dd$%       | j                  d&d'dd(%       | j                  d)t        j                  d*d+,       | j                  d-dd.%       | j                  d/t        dd01       | j                  d2t        j                  d*d3,       | j                  d4t
        d5d61       | j                  d7d8d9d:%       | j                         }|j                  d;d<d=d>d?@       |j                  dAd<dBd>dC@       |j                  dDd<dEd>dF@       |j                  dGd<dHd>dI@       y)Jz.Add flags shared by all HTTP verb subcommands.z--jsonz-j
store_true	json_modez/(default) Serialize data items as a JSON object)actiondesthelpz--formz-fz#Serialize data items as form fields)r   r   z--multipartzForce multipart form dataz	--headersheaders_onlyzPrint response headers onlyz--body	body_onlyzPrint response body onlyz	--verbosez-vz+Print request and response headers and bodyz--quietz-qz!Suppress all output except errorsz--printz-p
print_specNzGOutput control: H(req headers) B(req body) h(resp headers) b(resp body))r   defaultr   z
--downloadz-dzDownload response body to filez--outputz-ozOutput file path)r   r   z--authz-azuser:passwordz--verifyTzSSL certificate verificationr   r   r   z--proxyz	Proxy URLz	--timeoutzRequest timeout in seconds)typer   r   z--followzFollow redirectsz--max-redirects   zMaximum number of redirectsz--impersonatez-ichromezBrowser to impersonatez	--http1.1store_constv1http_versionzUse HTTP/1.1)r   constr   r   z--http2v2z
Use HTTP/2z--http3v3z
Use HTTP/3z--http3-onlyv3onlyz3Use HTTP/3 only (no fallback to HTTP/2 or HTTP/1.1))add_mutually_exclusive_groupadd_argumentargparseBooleanOptionalActionfloatint)r   content_groupoutput_grouphttp_version_groups       U/opt/rentech/trading_bot/.venv/lib/python3.12/site-packages/curl_cffi/cli/__init__.py_add_common_flagsr1       s   779M>   2	   (   668L*	   '	   :	   0	   V   -	   
D$=OP
$?K
--+	   	4kB
)	   --	   *	   %	    <<>## $  ## $  ## $  ##B $     c                 V    | j                  ddd       | j                  dddd	       y
)z*Add URL and request items positional args.urlURLzRequest URLmetavarr   itemsITEM*zYRequest items: Header:Value, param==value, field=value, field:=json, @file, +cookie=value)r7   nargsr   N)r(   )r   s    r0   _add_request_positionalsr<      s8    
u=A
#  r2   c                      t         j                  j                  t        j                  d         } | dv rd} t        d|  d|  d       y )Nr   )z__main__.pyz-m	curl-cffizUsage: a   <command> [options]

HTTP request CLI with browser impersonation.

HTTP verbs:
  get, post, put, delete, patch    Make an HTTP request
  head, options, trace, query      (case-insensitive)

Request items (for HTTP verb commands):
  Header:Value   HTTP header
  param==value   Query parameter
  field=value    Data field
  field:=json    Raw JSON field
  @file          File upload
  +key=value     Cookie

Tools:
  run FILE                         Run requests from .http or .har file
  doctor                           Dump diagnostic information

Fingerprints:
  update                           Update local fingerprints cache
  list                             List local and native fingerprints
  config                           Configure API access for Pro fingerprints

Run 'z5 <command> --help' for details on a specific command.)ospathbasenamesysargvprint)progs    r0   _print_helprF      sT    77CHHQK(D$$	 v 2 V@5D Er2   c                     t        j                  dd      } | j                  dddd       | j                  d	
      }t	        t
              D ]X  }|j                         |fD ]A  }|j                  |d| d      }t        |       t        |       |j                  |       C Z |j                  dd      }|j                  d        t        |       |j                  ddt         j                        }|j                  ddd       |j                  dt         j                  dd       t        |       |j                  d        | S )Nr>   F)rE   add_helpz-hz--helpr   	show_help)r   r   command)r   zMake an HTTP z	 request.)description)methoddoctorz*Dump diagnostic information for debugging.runa%  Run requests from a file.

Supported formats (auto-detected by extension):
  .http / .rest   HTTP Request in Editor format
  .har            HAR (HTTP Archive) format

HTTP file format:
  ### (request separator)
  POST http://example.com/api
  Content-Type: application/json

  {"key": "value"}
  ###
  GET http://example.com

Har file:
  Chrome exported HAR files do not contain cookies and auth headers by default. To include them:

  In DevTools settings: Gear Icon -> Preferences -> Network -> select "Allow to generate HAR with sensitive data"
)rK   formatter_classfileFILEzPath to .http or .har filer6   z	--sessionTzYUse a single session for all requests, sharing cookies and connections (default: enabled)r   )r)   ArgumentParserr(   add_subparserssortedr	   lower
add_parserr<   r1   set_defaultsr   RawDescriptionHelpFormatterr*   )r   
subparsersrL   namesubs        r0   r   r      sy   $$F h|+N&&I&6J*+ ,\\^V, 	,D''+F89= ( C %S)c"F+	,, 

@   C D!J


* !<</   C2 VV2NO--!   cD!Mr2   c                  V   t               } | j                         }|j                  t        |dd      rt	                t        j                  d       |j                  dk(  rt                y t        |      ry |j                  dk(  rt        |       y t        ||j                         y )NrI   Fr   rM   rN   )r   
parse_argsrJ   getattrrF   rB   exitr   r   r   r   rL   )r   argss     r0   r   r     s    ^FD||wt[%@||x$||u44%r2   )r   N)r)   r?   rB   rM   r   pror   r   rN   r   r   parser	   r
   r   r   requestr   __all__rR   r1   r<   rF   r   r    r2   r0   <module>rf      s     	 
   4 ,  $ }h55 }$ }@X%<%<  EBAh-- AH&r2   