
    Mg                     T    S r SSKJr  SSKrSSKJr  \" S5       " S S\5      5       rg)z
This plugin generates curl request for the user. The user needs to specify the parameters
HTTP Method, Content Type, Data, Endpoint. The output is the curl request.
The plugin also validates the user input before generating the curl output.
    )pluginN)Forezgenerate curlc                   D    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
rg)GenerateCurl   c                 x    0 U l         U R                  U5        U R                  U5        U R                  U5        g )N)_input_params_collect_parameters_validate_parameters_generate_curl_request)selfjarvisss      :/Users/admin/workspace/ai/Jarvis/jarviscli/plugins/curl.py__call__GenerateCurl.__call__   s4      (!!&)##F+    c                 T   UR                  S[        R                  S9nUR                  SS9  UR	                  S[        R                  [
        SSS9nUR                  S	[        R                  S9nUR                  S
[        R                  S9nUR                  5       UUUS.U l        g )NzHTTP Method: )promptcolorz(Select Content Type

1. JSON
2. No Data
)textzEnter you choice:       )r   r   rtyperminrmaxzEnter / copy the data: zSpecify the HTTP endpoint: )methodcontent_typedataendpoint)inputr   BLUEsayinput_numberintupperr	   )r   r   http_methodr   r   r    s         r   r
    GenerateCurl._collect_parameters   s    ll/lK

F
G**2Fdii_bijqr*s||#<DII|N<<'DDII<V "'')( 	
r   c                    SU R                   ;  a.  UR                  S[        R                  S9  UR	                  5         SU R                   ;  a.  UR                  S[        R                  S9  UR	                  5         SU R                   ;  a.  UR                  S[        R                  S9  UR	                  5         SU R                   ;  a.  UR                  S	[        R                  S9  UR	                  5         U R                  U5      (       aC  U R                  U5      (       a-  U R                  U5      (       a  U R                  U5      (       a  g UR	                  5         g )
Nr   zHTTP Method missing.r   r   r   zContent Type missing.r   z3Data missing. Could be empty but should be present.r    zEndpoint missing.)	r	   r#   r   REDexit_valid_method_valid_content_type_valid_data_valid_endpointr   r   s     r   r   !GenerateCurl._validate_parameters$   s   4---JJ2$((JCKKM!3!33JJ3488JDKKM+++JJQY]YaYaJbKKMT///JJ/txxJ@KKMf%%$*B*B6*J*JF##(<(<V(D(DKKMr   c                 p    / SQnU R                   S   U;  a  UR                  S[        R                  S9  gg)N)GETPOSTPUTPATCHDELETEr   zInvalid HTTP method provided.r*   FT)r	   r#   r   r+   )r   r   valid_methodss      r   r-   GenerateCurl._valid_method<   s5    Ah'}<JJ;488JLr   c                     gNT r1   s     r   r.    GenerateCurl._valid_content_typeE       r   c                     U R                   S   nU R                   S   nUS:X  a  gUS:X  a   [        R                  " U5        gg ! [         a(  nUR	                  S[
        R                  S9   S nAgS nAff = f)	Nr   r   r   Tr   z*Invalid data format based on content type.r*   F)r	   jsonloads
ValueErrorr#   r   r+   )r   r   r   r   es        r   r/   GenerateCurl._valid_dataH   s{    !!&))).911

4    

 LTXT\T\
]s   A 
A7A22A7c                     gr<   r=   r1   s     r   r0   GenerateCurl._valid_endpointX   r?   r   c                 `   SnUSR                  U R                  S   5      -  nU R                  S   S:X  a  US-  nU R                  S   S:w  a!  USR                  U R                  S	   5      -  nUS
R                  U R                  S   5      -  nUR                  U[        R                  S9  g )Nzcurl z-X{} r   r   r   z$-H "Content-type: application/json" r   z -d '{}'r   z '{}'r    r*   )formatr	   r#   r   GREEN)r   r   curl_strings      r   r   #GenerateCurl._generate_curl_request[   s    w~~d&8&8&BCCn-2AAKn-2:,,T-?-?-GHHKw~~d&8&8&DEE

4::
6r   )r	   N)__name__
__module____qualname____firstlineno__r   r
   r   r-   r.   r/   r0   r   __static_attributes__r=   r   r   r   r      s*    ,
0 7r   r   )__doc__r   rA   coloramar   objectr   r=   r   r   <module>rU      s8       Z76 Z7 Z7r   