Ë
    ž…ÅjÀ  ã                  óÞ   — d dl mZ d dlZd dlZd dlZd dlmZmZ d dlm	Z	 ddl
mZmZ ddlmZ e G d„ d	«      «       Zdd
„Zdd„Z	 d	 	 	 	 	 	 	 dd„Z eh d£«      Z	 d	 	 	 	 	 	 	 dd„Zdd„Zy)é    )ÚannotationsN)Ú	dataclassÚfield)ÚSessioné   )ÚSUPPORTED_METHODSÚprocess_url)Ú_execute_requestc                  óX   — e Zd ZU dZdZded<   dZded<    ee¬«      Z	ded	<   dZ
ded
<   y)ÚHttpFileRequestz+A single request parsed from an .http file.ÚGETÚstrÚmethodÚ Úurl)Údefault_factoryzdict[str, str]ÚheadersÚbodyN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   Ú__annotations__r   r   Údictr   r   © ó    úG/opt/euro-skaner/venv/lib/python3.12/site-packages/curl_cffi/cli/run.pyr   r      s0   … á5à€FˆCÓØ€CˆƒMÙ#°DÔ9€Gˆ^Ó9Ø€Dˆ#„Nr   r   c                ó<  — g }g }| j                  «       D ]I  }|j                  «       j                  d«      r|sŒ%|j                  |«       g }Œ9|j                  |«       ŒK |r|j                  |«       g }|D ]!  }t	        |«      }|€Œ|j                  |«       Œ# |S )z€Parse 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Øò !ˆÜ Ó,ˆØ‰?Ø�O‰O˜CÕ ð!ð €Or   c                óT  — d}d}d}i }g }| D �]°  }|j                  «       }|j                  d«      s|j                  d«      rŒ7|xdk(  rt |sŒA|j                  «       }|d   j                  «       t        v s|d   j                  «       dk(  r)|d   j                  «       }t        |«      dkD  r|d   nd}n|d   }d	}Œ±xd	k(  rV |sd
}Œ¼d|v r7|j                  d«      \  }	}
}|j                  «       ||	j                  «       <   Œ÷d
}|j                  |«       �Œd
k(  s�Œ|j                  d«      s|j                  d«      r n~|j                  d«      rY|j                  «       \  }
}|j                  «       }	 t        |«      5 }|j                  |j                  «       «       ddd«       �Œ |j                  |«       �Œ³ |syt        |||dj                  |«      j                  «       ¬«      S # 1 sw Y   ŒNxY w# t        $ r" t        d|› �t        j                  ¬«       Y �Œw xY w)zôParse 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àó 0,ˆØ—:‘:“<ˆð ×Ñ˜sÔ# x×':Ñ':¸4Ô'@ØàÝÙØØ Ÿ™Ó(�à˜!‘H—N‘NÓ$Ô(9Ñ9Ø˜Q‘x—~‘~Ó'¨9Ò4à" 1™XŸ^™^Ó-�FÜ&)¨%£j°1¢n˜% š(¸"‘Cà ™(�CØ!‘åÙØ"‘EØ˜H‘_Ø%-×%7Ñ%7¸Ó%<‘N�D˜!˜UØ,1¯K©K«M�G˜DŸJ™J›LÒ)à"�EØ×%Ñ% dÖ+åØ×&Ñ& tÔ,°×0CÑ0CÀEÔ0JáØ×&Ñ& tÔ,Ø"*§.¡.Ó"2‘K�A�xØ'Ÿ~™~Ó/�HðÜ! (›^ð 8¨qØ&×-Ñ-¨a¯f©f«hÔ7÷8ùð ×%Ñ% dÖ+ða0,ñd ØäØØØØ�Y‰Y�zÓ"×(Ñ(Ó*ô	ð ÷8ð 8ûä,ò ÜØ@ÀÀ
ÐKÜ!$§¡÷ð ðús*   Å8G<Æ G0Æ#G<Ç0G9	Ç5G<Ç<'H'È&H'c           	     óÚ  — t        |«      }|s0t        dt        j                  ¬«       t        j                  d«       d}t        |d«      D ]œ  \  }}| j                  s8t        d|› d|j                  › d|j                  › �t        j                  ¬«       t        |j                  «      }t        | |j                  ||j                  |j                  xs d|¬	«      }|dk7  sŒ˜|dz  }Œž |S )
z0Execute requests parsed from .http file content.z!Error: no requests found in file.r1   r   r   ú--- [ú] ú N©r   ÚdataÚsession)r+   r;   r<   r=   ÚexitÚ	enumerateÚquietr   r   r	   r
   r   r   )	Úargsr$   rO   r(   ÚfailedÚir*   r   Úrcs	            r   Ú_run_http_filerW   †   sÎ   € ô
 ˜tÓ$€HÙÜÐ1¼¿
¹
ÕCÜ�‰�Œà€FÜ˜H aÓ(ò ‰ˆˆ3Ø�zŠzÜ�E˜!˜˜B˜sŸz™z˜l¨!¨C¯G©G¨9Ð5¼C¿J¹JÕGä˜#Ÿ'™'Ó"ˆäØØ�J‰JØØ—K‘KØ—‘Ò!˜TØô
ˆð �‹7Ø�a‰K‰Fðð" €Mr   >   ú:pathú:methodú:schemeú
:authorityúcontent-lengthútransfer-encodingc           	     ó   — 	 t        j                  |«      }j                  di «      j                  dg «      }|s0t        dt        j
                  ¬«       t	        j                  d«       d}t        |d«      D �]=  \  }}|j                  d	i «      }	|	j                  d
d«      j                  «       }
|	j                  dd«      }|s t        d|› d�t        j
                  ¬«       Œm| j                  s$t        d|› d|
› d|› �t        j
                  ¬«       i }|	j                  dg «      D ]@  }|j                  dd«      }|j                  «       t        vsŒ,|j                  dd«      ||<   ŒB |xs d}|	j                  d«      }|r|j                  dd«      nd}t        | |
||||¬«      }|dk7  s�Œ9|dz  }�Œ@ |S # t         j                  $ r>}t        d|› �t        j
                  ¬«       t	        j                  d«       Y d}~�Œñd}~ww xY w)z.Execute requests parsed from HAR file content.zError: invalid HAR JSON: r1   r   NÚlogÚentriesz$Error: no entries found in HAR file.r   r-   r   r   r   r   rJ   z] skipping entry with no URLrK   rL   r   rD   rF   ÚpostDatar$   rM   )ÚjsonÚloadsÚJSONDecodeErrorr;   r<   r=   rP   ÚgetrQ   r5   rR   ÚlowerÚ_SKIP_HAR_HEADERSr
   )rS   r$   rO   ÚharÚexcr`   rT   rU   Úentryr*   r   r   r   ÚhrD   Ú	post_datarN   rV   s                     r   Ú_run_har_filerm   µ   sà  € ðÜ�j‰j˜Óˆð
 �g‰g�e˜RÓ ×$Ñ$ Y°Ó3€GÙÜÐ4¼3¿:¹:ÕFÜ�‰�Œà€FÜ˜g qÓ)ó ‰ˆˆ5Ø�i‰i˜	 2Ó&ˆØ—‘˜ 5Ó)×/Ñ/Ó1ˆØ�g‰g�e˜RÓ ˆáÜ�E˜!˜Ð8Ð9ÄÇ
Á
ÕKØà�zŠzÜ�E˜!˜˜B˜v˜h a¨ uÐ-´C·J±JÕ?àˆØ—‘˜ BÓ'ò 	3ˆAØ—5‘5˜ Ó$ˆDØ�z‰z‹|Ô#4Ò4Ø !§¡ g¨rÓ 2�˜’ð	3ð ’/˜Tˆà—G‘G˜JÓ'ˆ	Ù,5ˆy�}‰}˜V RÔ(¸4ˆäØØØØØØô
ˆð �Œ7Ø�a‰KŠFð?ðB €MøôW ×Ñò ÜÐ)¨#¨Ð/´c·j±jÕAÜ�‰��Šûðús   ‚F< Æ<HÇ3HÈHc                ó  — | j                   }	 t        |«      5 }|j                  «       }ddd«       t        | dd«      }|rt        | j                  ¬«      nd}	 |j                  d«      rt        | |¬	«      }nS|j                  d
«      rt        | |¬	«      }n3t	        d|› �t
        j                  ¬«       t        j                  d«       |r|j                  «        	 dkD  r5t	        d|› d�t
        j                  ¬«       t        j                  d«       yy# 1 sw Y   ŒòxY w# t        $ r7 t	        d|› �t
        j                  ¬«       t        j                  d«       Y �Œ4w xY w# |r|j                  «        w w xY w)zExecute batch requests.NzError: file not found: r1   r   rO   T)Úimpersonatez.har)rO   z.httpz Error: unsupported file format: r   r3   z request(s) failed.)r2   r8   r9   r:   r;   r<   r=   rP   Úgetattrr   ro   Úendswithrm   rW   Úclose)rS   rG   rH   r$   Úuse_sessionrO   rT   s          r   Ú
handle_runrt   î   s9  € à�y‰y€HðÜ�(‹^ð 	˜qØ—6‘6“8ˆD÷	ô ˜$ 	¨4Ó0€KÙ7BŒg $×"2Ñ"2Õ3È€Gð
Ø×Ñ˜VÔ$Ü" 4¨°wÔ?‰FØ×Ñ˜wÔ'Ü# D¨$¸Ô@‰FäÐ4°X°JÐ?ÄcÇjÁjÕQÜ�H‰H�QŒKáØ�M‰M�Oà�‚zÜ��6�(Ð-Ð.´S·Z±ZÕ@Ü�‰��ð ÷+	ð 	ûäò ÜÐ'¨ zÐ2¼¿¹ÕDÜ�‰��ðûñ  Ø�M‰M�Oð ús4   ŽD' ™DªD' ÁA3E* ÄD$Ä D' Ä'<E'Å&E'Å*E?)r$   r   Úreturnzlist[HttpFileRequest])r?   z	list[str]ru   zHttpFileRequest | None)N)rS   úargparse.Namespacer$   r   rO   zSession | Noneru   Úint)rS   rv   ru   ÚNone)Ú
__future__r   Úargparserb   r<   Údataclassesr   r   Úcurl_cffi.requestsr   Úparser   r	   r-   r
   r   r+   r#   rW   Ú	frozensetrg   rm   rt   r   r   r   ú<module>r      s³   ðÝ "ã Û Û 
ß (å &ç 1Ý %ð ÷ð ó ðóó4Kð^ DHðØ
ðØ$'ðØ2@ðàóñF òó	Ð ð DHð1Ø
ð1Ø$'ð1Ø2@ð1àó1ôrr   