HEX
Server: LiteSpeed
System: Linux php-prod-1.spaceapp.ru 5.15.0-157-generic #167-Ubuntu SMP Wed Sep 17 21:35:53 UTC 2025 x86_64
User: xnsbb3110 (1041)
PHP: 8.1.33
Disabled: NONE
Upload Files
File: //usr/local/CyberCP/lib/python3.10/site-packages/starlette/__pycache__/formparsers.cpython-310.pyc
o

�h%+�@s<ddlmZddlZddlmZmZddlmZddlm	Z	ddl
mZddlm
Z
mZmZejr@ddlZddlmZmZmZn0z"zddlZdd	lmZWney`ddlZdd	lmZYnwWn
eyodZdZYnwGd
d�de�ZeGdd
�d
��Zddd�ZGdd�de�ZGdd�d�ZGdd�d�ZdS)�)�annotationsN)�	dataclass�field)�Enum)�SpooledTemporaryFile)�unquote_plus)�FormData�Headers�
UploadFile)�MultipartCallbacks�QuerystringCallbacks�parse_options_header)r
c@s eZdZdZdZdZdZdZdS)�FormMessage�����N)�__name__�
__module__�__qualname__�FIELD_START�
FIELD_NAME�
FIELD_DATA�	FIELD_END�END�rr�H/usr/local/CyberCP/lib/python3.10/site-packages/starlette/formparsers.pyrsrc@sVeZdZUdZded<dZded<eed�Zded	<dZ	d
ed<ee
d�Zded
<dS)�
MultipartPartNzbytes | None�content_disposition��str�
field_name)�default_factory�	bytearray�datazUploadFile | None�filezlist[tuple[bytes, bytes]]�item_headers)rrrr�__annotations__r"rr$r%r&�listr'rrrrr#s
r�src�bytes | bytearray�codecr!�returnc	Cs.z|�|�WSttfy|�d�YSw)N�latin-1)�decode�UnicodeDecodeError�LookupError)r*r,rrr�_user_safe_decode,s
�r2c@seZdZddd�ZdS)	�MultiPartException�messager!r-�NonecCs
||_dS�N)r4��selfr4rrr�__init__4s
zMultiPartException.__init__N)r4r!r-r5)rrrr9rrrrr33sr3c@sReZdZddd�Zdd	d
�Zddd�Zddd�Zddd�Zddd�Zddd�Z	dS) �
FormParser�headersr	�stream�"typing.AsyncGenerator[bytes, None]r-r5cCs&tdusJd��||_||_g|_dS)N�EThe `python-multipart` library must be installed to use form parsing.)�	multipartr;r<�messages)r8r;r<rrrr99s
zFormParser.__init__cC�tjdf}|j�|�dS�N�)rrr@�appendr7rrr�on_field_start?�
zFormParser.on_field_startr%�bytes�start�int�endcC�"tj|||�f}|j�|�dSr6)rrr@rD�r8r%rHrJr4rrr�
on_field_nameC�zFormParser.on_field_namecCrKr6)rrr@rDrLrrr�
on_field_dataGrNzFormParser.on_field_datacCrArB)rrr@rDr7rrr�on_field_endKrFzFormParser.on_field_endcCrArB)rrr@rDr7rrr�on_endOrFzFormParser.on_endrc�s��|j|j|j|j|jd�}t�|�}d}d}g}|j2z[3dHW}|r*|�|�n|�	�t
|j�}|j��|D]<\}}	|t
jkrHd}d}q:|t
jkrR||	7}q:|t
jkr\||	7}q:|t
jkrvt|�d��}
t|�d��}|�|
|f�q:q6t|�S)N)rErMrOrPrQrCr.)rErMrOrPrQr?�QuerystringParserr<�write�finalizer)r@�clearrrrrrrr/rDr)r8�	callbacks�parserr"�field_value�items�chunkr@�message_type�
message_bytes�name�valuerrr�parseSsB��
	







���zFormParser.parseN)r;r	r<r=r-r5�r-r5�r%rGrHrIrJrIr-r5�r-r)
rrrr9rErMrOrPrQr_rrrrr:8s





r:c@s�eZdZdZ	dZ	dddd�d)dd�Zd*dd�Zd+dd�Zd*dd�Zd+dd�Z	d+dd�Z
d*dd �Zd*d!d"�Zd*d#d$�Z
d,d&d'�Zd(S)-�MultiPartParserii�)�	max_files�
max_fields�
max_part_sizer;r	r<r=rd�int | floatrerfrIr-r5cCsptdusJd��||_||_||_||_g|_d|_d|_d|_d|_	t
�|_d|_g|_
g|_g|_||_dS)Nr>rrCr )r?r;r<rdrerY�_current_files�_current_fields�_current_partial_header_name�_current_partial_header_valuer�
_current_part�_charset�_file_parts_to_write�_file_parts_to_finish�_files_to_close_on_errorrf)r8r;r<rdrerfrrrr9�s 	
zMultiPartParser.__init__cCst�|_dSr6)rrl�r8rrr�
on_part_begin�szMultiPartParser.on_part_beginr%rGrHrJcCst|||�}|jjdur/t|jj�t|�|jkr&tdt|jd��d���|jj�|�dS|j�	|j|f�dS)NzPart exceeded maximum size of izKB.)
rlr&�lenr%rfr3rI�extendrnrD)r8r%rHrJr\rrr�on_part_data�szMultiPartParser.on_part_datacCsZ|jjdur|j�|jjt|jj|j�f�dS|j�|j�|j�|jj|jjf�dSr6)	rlr&rYrDr"r2r%rmrorqrrr�on_part_end�s��zMultiPartParser.on_part_endcC�|j|||�7_dSr6)rj�r8r%rHrJrrr�on_header_field��zMultiPartParser.on_header_fieldcCrwr6)rkrxrrr�on_header_value�rzzMultiPartParser.on_header_valuecCs@|j��}|dkr|j|j_|jj�||jf�d|_d|_dS)Nscontent-dispositionrC)rj�lowerrkrlrr'rD)r8rrrr�
on_header_end�s


zMultiPartParser.on_header_endcCs�t|jj�\}}zt|d|j�|j_Wntytd��wd|vr_|jd7_|j|j	kr:td|j	�d���t|d|j�}t
|jd�}|j�
|�t|d|t|jjd	�d
�|j_dS|jd7_|j|jkrutd|j�d���d|j_dS)Nsnamez=The Content-Disposition header field "name" must be provided.sfilenamerz+Too many files. Maximum number of files is �.)�max_sizer)�raw)r&�size�filenamer;z-Too many fields. Maximum number of fields is )r
rlrr2rmr"�KeyErrorr3rhrdr�spool_max_sizerprDr
r	r'r&rire)r8�disposition�optionsr��tempfilerrr�on_headers_finished�s.��z#MultiPartParser.on_headers_finishedcCsdSr6rrqrrrrQ�szMultiPartParser.on_endrc
�s`�t|jd�\}}|�dd�}t|t�r|�d�}||_z|d}Wnty.td��w|j	|j
|j|j|j
|j|j|jd�}t�||�}zF|j2z?3dHW}|�|�|jD]\}}	|jscJ�|j�|	�IdHqZ|jD]}|jswJ�|j�d�IdHqp|j��|j��qL6Wnty�}
z|jD]}|��q�|
�d}
~
ww|��t|j�S)	NzContent-Typescharsetzutf-8r.sboundaryzMissing boundary in multipart.)rrrurvryr{r}r�rQr)r
r;�get�
isinstancerGr/rmr�r3rrrurvryr{r}r�rQr?�MultipartParserr<rSrnr&ro�seekrUrp�closerTrrY)r8�_�params�charset�boundaryrVrWrZ�partr%�excr&rrrr_�sR�

��




�

��
zMultiPartParser.parseN)r;r	r<r=rdrgrergrfrIr-r5r`rarb)rrrr�rfr9rrrurvryr{r}r�rQr_rrrrrc|s$�


	




rc)r*r+r,r!r-r!) �
__future__r�typing�dataclassesrr�enumrr�r�urllib.parser�starlette.datastructuresrr	r
�
TYPE_CHECKING�python_multipartr?�python_multipart.multipartrrr
�ModuleNotFoundError�multipart.multipartrrr2�	Exceptionr3r:rcrrrr�<module>s<���
D