HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux spn-python 5.15.0-89-generic #99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023 x86_64
User: arjun (1000)
PHP: 8.1.2-1ubuntu2.20
Disabled: NONE
Upload Files
File: //usr/local/lib/python3.10/dist-packages/aiohttp/__pycache__/http_parser.cpython-310.pyc
o

���g��@s$UddlZddlZddlZddlZddlmZddlmZddlm	Z	m
Z
mZmZm
Z
mZmZmZmZmZmZmZmZmZddlmZmZmZddlmZddlmZdd	lm Z dd
l!m"Z"m#Z#m$Z$ddl%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,ddl-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6dd
l7m8Z8m9Z9ddl:m;Z;m<Z<ddl=m>Z>dZ?edZ@eAejB�ZCeeeDeEd<e�Fd�ZGeeDeEd<e�HdeG�d��ZIeeeDeEd<e�HdejJ�ZKeeeDeEd<e�HdejJ�ZLeeeDeEd<e�Hd�ZMeeeNeEd<Gdd�de�ZOGd d!�d!e�ZPed"eOeP�ZQGd#d$�d$e�ZRGd%d&�d&e�ZSGd'd(�d(�ZTd)eeDd*eUfd+d,�ZVGd-d.�d.ejWeeQ�ZXGd/d0�d0eXeO�ZYGd1d2�d2eXeP�ZZGd3d4�d4�Z[Gd5d6�d6�Z\eYZ]eZZ^eOZ_ePZ`ze*�s�dd7lamYZYmZZZmOZOmPZPeYZbeZZceOZdePZeWdSWdSef�y�YdSw)8�N)�suppress)�IntEnum)�Any�ClassVar�Final�Generic�List�Literal�
NamedTuple�Optional�Pattern�Set�Tuple�Type�TypeVar�Union)�CIMultiDict�CIMultiDictProxy�istr)�URL�)�hdrs)�BaseProtocol)�
HAS_BROTLI�BrotliDecompressor�ZLibDecompressor)�
_EXC_SENTINEL�DEBUG�EMPTY_BODY_METHODS�EMPTY_BODY_STATUS_CODES�
NO_EXTENSIONS�BaseTimerContext�
set_exception)	�BadHttpMessage�
BadHttpMethod�
BadStatusLine�ContentEncodingError�ContentLengthError�
InvalidHeader�InvalidURLError�LineTooLong�TransferEncodingError)�HttpVersion�
HttpVersion10)�
EMPTY_PAYLOAD�StreamReader)�
RawHeaders)�
HeadersParser�
HttpParser�HttpRequestParser�HttpResponseParser�RawRequestMessage�RawResponseMessage)�
�
�ASCIISETz!#$%&'*+-.^_`|~�_TCHAR_SPECIALSz
[0-9A-Za-zz]+�TOKENREzHTTP/(\d)\.(\d)�VERSREz\d+�DIGITSs[0-9a-fA-F]+�	HEXDIGITSc@sbeZdZUeed<eed<eed<ded<eed<eed<eeed<eed	<eed
<e	ed<dS)
r5�method�path�version�CIMultiDictProxy[str]�headers�raw_headers�should_close�compression�upgrade�chunked�urlN)
�__name__�
__module__�__qualname__�str�__annotations__r,r0�boolrr�rPrP�>/usr/local/lib/python3.10/dist-packages/aiohttp/http_parser.pyr5Qs
r5c@s^eZdZUeed<eed<eed<eeed<eed<e	ed<e
eed<e	ed<e	ed	<d
S)r6rA�code�reasonrCrDrErFrGrHN)rJrKrLr,rN�intrMrr0rOrrPrPrPrQr6^s
r6�_MsgTc@seZdZdZdZdZdZdS)�
ParseStaterr��N)rJrKrL�
PARSE_NONE�PARSE_LENGTH�
PARSE_CHUNKED�PARSE_UNTIL_EOFrPrPrPrQrVms
rVc@s eZdZdZdZdZdZdZdS)�
ChunkStaterrrWrX�N)rJrKrL�PARSE_CHUNKED_SIZE�PARSE_CHUNKED_CHUNK�PARSE_CHUNKED_CHUNK_EOF�PARSE_MAYBE_TRAILERS�PARSE_TRAILERSrPrPrPrQr]usr]c@sReZdZ				ddededededd	f
d
d�Zdeeded
e	ffdd�Z
d	S)r1���F�
max_line_size�max_headers�max_field_size�lax�returnNcCs||_||_||_||_dS�N)rfrgrh�_lax)�selfrfrgrhrirPrPrQ�__init__~s
zHeadersParser.__init__�linesrBcCs<t�}g}d}|d}t|�}|�rz
|�dd�\}}Wnty(t|�d�wt|�dkr3t|��|d|dhddh@rCt|��|�d�}t|�|jkrctd�|�	d	d
��t
|j�t
t|����|�	dd�}	t�|	�srt|��t|�}
|d7}||}|j
o�|o�|dd
v}|r�|g}|r�|
t|�7}
|
|jkr�td�|�	d	d
��t
|j�t
|
���|�|�|d7}||kr�||}|r�|dd
v}nd}n|s�d�|�}n|
|jkr�td�|�	d	d
��t
|j�t
|
���|�d�}|�	dd�}
d|
v�sd|
v�sd|
v�rt|��|�|	|
�|�||f�|st|�t|�fS)Nr�:r���� �	s 	zrequest header name {}�utf8�backslashreplace�utf-8�surrogateescape)rrrszrequest header field {}��
�
�)r�len�split�
ValueErrorr(�lstriprhr*�format�decoderMr;�	fullmatchrl�append�join�strip�addr�tuple)rmrorCrD�	lines_idx�line�
line_count�bname�bvalue�name�
header_length�continuation�
bvalue_lst�valuerPrPrQ�
parse_headers�s�
�

�
�


��
��

��
�QzHeadersParser.parse_headers)rdrerdF)rJrKrLrTrOrnr�bytesrr0r�rPrPrPrQr1}s*�����
��
�r1rCrjcCs|�tjd���dvS)z)Check if the upgrade header is supported.�>�tcp�	websocket)�getr�UPGRADE�lower�rCrPrPrQ�_is_supported_upgrade�sr�c@sneZdZUdZeeed<													d0deed	ee	j
d
ededed
edeedeedee
deeededededdfdd�Zejdeedefdd��Zejde
defdd��Zdeefdd�Zd d!ejejejfd"ed#ed$ed%ed&e
d'edeeeee feeffd(d)�Z!deeded*e"eeee
eeffd+d,�Z#d-eddfd.d/�Z$dS)1r2FriN�rdreT�protocol�loop�limitrfrgrh�timerrRr?�payload_exception�response_with_body�read_until_eof�auto_decompressrjcCs�||_||_||_||_||_||_||_|	|_|
|_||_	||_
g|_d|_d|_
d|_d|_|
|_||_t||||j�|_dS)NrxF)r�r�rfrgrhr�rRr?r�r�r��_lines�_tail�	_upgraded�_payload�_payload_parser�_auto_decompress�_limitr1ri�_headers_parser)rmr�r�r�rfrgrhr�rRr?r�r�r�r�rPrPrQrn�s*

�zHttpParser.__init__rocC�dSrkrP)rmrorPrPrQ�
parse_message�zHttpParser.parse_message�tecCr�rkrP�rmr�rPrPrQ�_is_chunked_ter�zHttpParser._is_chunked_tecCs�|jdur|j��d|_dS|jr|j�|j�|jrC|jddkr)|j�d�tt��|�|j�Wd�S1s>wYdS)Nrqz
rx)r��feed_eofr�r�r�r�	Exceptionr��rmrPrPrQr�s

�

 �zHttpParser.feed_eofr7rx�data�SEP�EMPTY�CONTENT_LENGTH�METH_CONNECT�SEC_WEBSOCKET_KEY1cs�g}|jr|j|d}|_t|�}d}	|j}
d}|	|k�r�|jdu�rg|j�sg|�||	�}||	kr<|js<|t|�}	q||	k�r]|rGtd��||	|�}
|dkrV|
�d�}
|j�	|
�|t|�}	|jd|k�r\z
|�
|j��W|j��n|j��wdtt
f��fd	d
�}|�}|�jvr�t|���jo�t�j�|_t�d|j�}t�dd�}|jdus�J�|tvp�t|o�|tv�}|s�|dur�|dks̈jr�|js�t|j|j|
|jd
�}t||�j|�j|j|j|j |j!d�	}|j"s�||_n^||k�rt#�t$��sJ�t|j|j|
|jd
�}d|_t|�j�j|j |j!d�|_n4|�sP|du�rP|j%�rPt|j|j|
|jd
�}t||�j|�j|j|j|j |j!d�	}|j"�sO||_nt&}|�	�|f��j'}n~||	d�|_|}nx|jdu�rx|j�rx|j�rwJ�ng|�r�|	|k�r�|j�r�J�|jdu�s�J�z|j�(||	d�|�\}}Wn.t)�y�}z!|}|j*du�r�|�*t+|��}t,|jj-||�d}d}WYd}~nd}~ww|�r�d}	t|�}d|_qnn|	|ks|�r�|	|k�r�||	d�}n|}||j|fS)NrxrFzData after `Connection: close`r8�
rqrjcs2�j���}|durdSt�|�st���t|�Srk)rCr�r=r�r(rT)�
length_hdr�r��msgrPrQ�get_content_length_s
z0HttpParser.feed_data.<locals>.get_content_lengthr?rR)r�r�r�)�lengthrHr?rFrRr�r�riT)r?rFr�ri).r�r|r�r�r��findr�r#�rstripr�r��clearrrTrCr(rGr��getattrr?r�rrOrrHr/r�r��HttpPayloadParserrFrRr�r�ri�done�
isinstancer5r�r.rE�	feed_data�
BaseExceptionr�rMr"�payload)rmr�r�r�r�r�r��messages�data_len�	start_posr�rE�posr�r�r�r?rR�
empty_bodyr��payload_parser�eof�underlying_exc�reraised_excrPr�rQr�.s




�

�����
�
�����������$zHttpParser.feed_datarBc

s0|j�|�\�}d}d}d}d}tjtjtjtjtjtjtj	tj
tjtjf
}t
�fdd�|D�d�}|dur>td|�d�����tj�}	|	rd|	��}
|
dkrQd}n|
d	krXd}n|
d
krd��tj�rdd}��tj�}|rv|��}|dvrv|}��tj�}|dur�|�|�r�d}tj�vr�td���|||||fS)
z�Parses RFC 5322 headers from a stream.

        Line continuations are supported. Returns list of header name
        and value pairs. Header name is in upper case.
        NFc3s(�|]}t��|d��dkr|VqdS)rPrN)r|�getall)�.0�hr�rPrQ�	<genexpr>
s�&z+HttpParser.parse_headers.<locals>.<genexpr>zDuplicate 'z' header found.�closeTz
keep-aliverG)�gzip�deflate�brz6Transfer-Encoding can't be present with Content-Length)r�r�rr��CONTENT_LOCATION�
CONTENT_RANGE�CONTENT_TYPE�ETAG�HOST�MAX_FORWARDS�SERVER�TRANSFER_ENCODING�
USER_AGENT�nextr#r��
CONNECTIONr�r��CONTENT_ENCODINGr�)
rmrorD�
close_conn�encodingrGrH�
singletons�bad_hdr�conn�v�encr�rPr�rQr��sT
�

�zHttpParser.parse_headers�valcCs
||_dS)zZSet connection upgraded (to websocket) mode.

        :param bool val: new state.
        N)r�)rmr�rPrPrQ�set_upgraded.s
zHttpParser.set_upgraded)
NNr�rdrerdNNNNTFT)%rJrKrLrirrOrNrr�asyncio�AbstractEventLooprTr!rMrr�rn�abc�abstractmethodrr�rUr�r�r�rr�r�r��_SEPrrr/r�r0r�r�rPrPrPrQr2�s�
��������	�
�
��
��
�'�������
�?��
�Br2c@s8eZdZdZdeedefdd�Zdede	fdd�Z
d	S)
r3z�Read request status line.

    Exception .http_exceptions.BadStatusLine
    could be raised in case of any errors in status line.
    Returns RawRequestMessage.
    rorjcCs�|d�dd�}z|jddd�\}}}Wnty t|�d�wt|�|jkr5tdt|j�tt|����t�	|�s>t|��t
�	|�}|durKt|��tt
|�d��t
|�d���}|d	krftj|d
d�}nD|�d�r�|�d
�\}	}
}|	�d�\}	}}
tj|	|
|d
d�}n%|dkr�|dkr�t|d
d�}nt|d
d�}|jdkr�t|jdd��d���|�|�\}}}}}}|dur�|tkr�d
}nd}t||||||||||�
S)Nrrvrw� rW��maxsplit�Status line is too longr�CONNECTT)�	authority�encoded�/�#�?)r@�query_string�fragmentr��*�OPTIONS)r�r�)�errors�latin1F)r�r}r~r$r|rfr*rMr;r�r<r%r,rT�groupr�build�
startswith�	partition�schemer)�encoder�r-r5)rmror�r?r@rA�match�	version_orI�	path_part�_hash_separator�url_fragment�_question_mark_separator�qs_partrCrDr�rFrGrHrPrPrQr�>st
��


�
���zHttpRequestParser.parse_messager�cCs,|jddd�d�d���dkrdStd��)	N�,rr�rq� 	rHTz'Request has invalid `Transfer-Encoding`)�rsplitr�r�r#r�rPrPrQr��s z HttpRequestParser._is_chunked_teN)rJrKrL�__doc__rr�r5r�rMrOr�rPrPrPrQr36sUr3cs�eZdZdZeZ	ddedeede	de	de
ee
ee
feeff
�fdd	�
Zd
eedefdd�Zd
edefdd�Z�ZS)r4z�Read response status line and headers.

    BadStatusLine could be raised in case of any errors in status line.
    Returns RawResponseMessage.
    Nr�r��args�kwargsrjcs0|dur
trdnd}t�j||g|�Ri|��S)Nr7r8)r�superr�)rmr�r�rr��	__class__rPrQr��szHttpResponseParser.feed_dataroc
Cs�|d�dd�}z
|jdd�\}}Wntyt|�d�wz
|jdd�\}}Wnty8|��}d}Ynwt|�|jkrMtdt|j�tt|����t	�
|�}|durZt|��tt|�
d��t|�
d���}t|�d	kstt�
|�sxt|��t|�}|�|�\}	}
}}}
}|dur�|tkr�d
}n!d|kr�dks�n|d
vr�d}ntj|	vs�tj|	vr�d}nd
}t|||��|	|
|||
|�	S)Nrrvrwrr�r�r�rWrXT�d��>�0��F)r�r}r~r%r�r|rfr*rMr<r�r,rTrr=r�r-rr�r�r6)rmror�rA�statusrSr
r�status_irCrDr�rFrGrHrPrPrQr��sd
���

��z HttpResponseParser.parse_messager�cCs |jddd�d�d���dkS)Nrrr�rqrrH)rr�r�r�rPrPrQr��s z!HttpResponseParser._is_chunked_terk)rJrKrLrrrir�rr�rrrr6r/rOr�r�rMr��
__classcell__rPrPrrQr4�s"������?r4c@s�eZdZ								ddedeededeedeed	eed
ededed
dfdd�Zddd�Z		dde
dede
d
eee
ffdd�Z
dS)r�NFTr�r�rHrFrRr?r�r�rirjc
Cs�d|_tj|_tj|_d|_d|_||_	|	|_
d|_|r'|r'|j	r't||�}
n|}
|s7tj
|_|
��d|_n|r>tj|_n|durUtj|_||_|jdkrU|
��d|_|
|_dS)NrrxFT)�_lengthrVr\�_typer]r_�_chunk�_chunk_size�_chunk_tailr�rlr��
DeflateBufferrYr�r[rZr�)rmr�r�rHrFrRr?r�r�ri�real_payloadrPrPrQrn�s4�


zHttpPayloadParser.__init__cCsF|jtjkr
|j��dS|jtjkrtd��|jtjkr!td��dS)Nz2Not enough data for satisfy content length header.z3Not enough data for satisfy transfer length header.)	r%rVr\r�r�rZr'r[r+r�rPrPrQr�"s���zHttpPayloadParser.feed_eofr7�;�chunkr��	CHUNK_EXTc
Cs�|jtjkrF|j}t|�}||kr+|||_|j�||�|jdkr)|j��dSdSd|_|j�|d|�|�|j��d||d�fS|jtjk�r�|j	rX|j	|}d|_	|�r�|j
tjkr�|�
|�}|dkr�|�
|d|�}|dkr�|d|�}d|||�}	vr�td|	���}
t|j|
�|
�n|d|�}|jr�|��}t�t|�s�t|d|��dd��}
t|j|
�|
�tt|�d	�}||t|�d�}|dkr�tj|_
|jr�|�d
�r�|dd�}ntj|_
||_|j��n||_	dS|j
tjk�r4|j}t|�}||k�r|||_|j�||�dSd|_|j�|d|�|�||d�}tj|_
|j��|j
tjk�rh|j�rK|�d
��rK|dd�}|dt|��|k�rc|t|�d�}tj|_
n||_	dS|j
tjk�r�|dt|��}||k�r�|j��d|t|�d�fS|�s�dS||dd�k�r�||_	dStj |_
|j
tj k�r�|�
|�}|dk�r�||t|�d�}tj|_
n||_	dS|s[dS|jtj!k�r�|j�|t|��dS)
Nr)TrxTrxr8z"Unexpected LF in chunk-extension: �asciirw�r�r)Frx)"r%rVrZr$r|r�r�r�r[r(r&r]r_r�r#r"rlr��rer�r>r+r�rTr�rbr	r`r'�begin_http_chunk_receivingra�end_http_chunk_receivingrcr\)
rmr,r�r-�required�	chunk_lenr��i�size_b�ext�exc�size�headrPrPrQr�.s�


w�


����








�j�zHttpPayloadParser.feed_data)NFNNNTTF�rjN)r7r+)rJrKrLr/rrTrOrMrnr�r�r�rr�rPrPrPrQr��sR��������	�
�
�
.
����
�r�c@s�eZdZUdZeed<dedeeddfdd�Z	e
fd	ed
eddfdd�Zd
e
deddfdd�Zddd�Zddd�Zddd�ZdS)r)zDDeflateStream decompress stream and feed data into specified stream.�decompressor�outr�rjNcCsL||_d|_||_d|_||dkrtstd��t�|_dSt|d�|_dS)NrFr�zECan not decode content-encoding: brotli (br). Please install `Brotli`)r�)	r=r9r��_started_decodingrr&rr<r)rmr=r�rPrPrQrn�s�zDeflateBuffer.__init__r8�	exc_causecCst|j||�dSrk)r"r=)rmr8r?rPrPrQr"�szDeflateBuffer.set_exceptionr,r9cCs�|sdS|j|7_|js#|jdkr#|dd@dkr#t|jdd�|_z|j�|�}Wnty9td|j��wd|_|rJ|j�	|t
|��dSdS)Nr�r��T)r��suppress_deflate_headerz#Can not decode content-encoding: %s)r9r>r�rr<�decompress_syncr�r&r=r�r|)rmr,r9rPrPrQr��s*�
����zDeflateBuffer.feed_datacCsR|j��}|s|jdkr"|j�|t|��|jdkr"|jjs"td��|j�	�dS)Nrr�)
r<�flushr9r=r�r|r�r�r&r�)rmr,rPrPrQr��s
zDeflateBuffer.feed_eofcC�|j��dSrk)r=r1r�rPrPrQr1��z(DeflateBuffer.begin_http_chunk_receivingcCrErk)r=r2r�rPrPrQr2�rFz&DeflateBuffer.end_http_chunk_receivingr;)rJrKrLrrrNr/rrMrnrr�r"r�rTr�r�r1r2rPrPrPrQr)�s 
���
�
 

r))r3r4r5r6)gr�r�r0�string�
contextlibr�enumr�typingrrrrrr	r
rrr
rrrr�	multidictrrr�yarlrr�r�
base_protocolr�compression_utilsrrr�helpersrrrrr r!r"�http_exceptionsr#r$r%r&r'r(r)r*r+�http_writerr,r-�streamsr.r/�typedefsr0�__all__r��set�	printabler9rMrN�escaper:�compiler;�ASCIIr<r=r>r�r5r6rUrVr]r1rOr��ABCr2r3r4r�r)�HttpRequestParserPy�HttpResponseParserPy�RawRequestMessagePy�RawResponseMessagePy�_http_parser�HttpRequestParserC�HttpResponseParserC�RawRequestMessageC�RawResponseMessageC�ImportErrorrPrPrPrQ�<module>sn
@$,			"
lJdYCN
��