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__/web_request.cpython-310.pyc
o

���g6t�
@s�UddlZddlZddlZddlZddlZddlZddlZddlZddlZddl	m
Z
ddlmZddlm
Z
mZmZmZmZmZmZmZmZmZmZmZddlmZddlZddlmZmZmZm Z m!Z!ddl"m#Z#dd	l$m%Z%dd
l&m'Z'ddl(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3ddl4m5Z5dd
l6m7Z7ddl8m9Z9m:Z:ddl;m<Z<m=Z=ddl>m?Z?m@Z@mAZAmBZBmCZCddlDmEZEddlFmGZGdZHe
r�ddlImJZJddlKmLZLddlMmNZNejOdddd�Gdd�d��ZPejQejRdZSeeTeUd<deS�d�ZVeeTeUd<d �Wd!�Xd"d#�d$eYeZd%d&��D���Z[eeTeUd'<d(Z\eeTeUd)<d*jWe[e\d+�Z]eeTeUd,<d-jWeVe]d.�Z^eeTeUd/<e�_d0�Z`eeeTeUd1<e�_e^�ZaeeeTeUd2<Gd3d4�d4eeTefe/�ZbGd5d6�d6eb�ZcdS)7�N)�SimpleCookie)�MappingProxyType)�
TYPE_CHECKING�Any�Dict�Final�Iterator�Mapping�MutableMapping�Optional�Pattern�Tuple�Union�cast)�	parse_qsl)�CIMultiDict�CIMultiDictProxy�	MultiDict�MultiDictProxy�MultiMapping)�URL�)�hdrs)�AbstractStreamWriter)�	_SENTINEL�DEBUG�ETAG_ANY�LIST_QUOTED_ETAG_RE�
ChainMapProxy�ETag�HeadersMixin�parse_http_date�reify�sentinel�
set_exception)�RawRequestMessage)�HttpVersion)�BodyPartReader�MultipartReader)�EmptyStreamReader�StreamReader)�DEFAULT_JSON_DECODER�JSONDecoder�LooseHeaders�
RawHeaders�StrOrURL)�HTTPRequestEntityTooLarge)�StreamResponse)�BaseRequest�	FileField�Request)�Application)�RequestHandler)�UrlMappingMatchInfoT)�auto_attribs�frozen�slotsc@s<eZdZUeed<eed<ejed<eed<eeed<dS)r3�name�filename�file�content_type�headersN)�__name__�
__module__�__qualname__�str�__annotations__�io�BufferedReaderr�rGrG�>/usr/local/lib/python3.10/dist-packages/aiohttp/web_request.pyr3Ls

r3z!#$%&'*+.^_`|~-�_TCHAR�[z]+�_TOKENz[{}]�ccs�|]}t|�VqdS�N)�chr)�.0�crGrGrH�	<genexpr>[s�rQ)�	� �!�#��_QDTEXTz
\\[\t !-~]�_QUOTED_PAIRz"(?:{quoted_pair}|{qdtext})*")�qdtext�quoted_pair�_QUOTED_STRINGz0({token})=({token}|{quoted_string})(:\d{{1,4}})?)�token�
quoted_string�_FORWARDED_PAIRz\\([\t !-~])�_QUOTED_PAIR_REPLACE_RE�_FORWARDED_PAIR_REc@s\eZdZUejejejejejhZ	e
jegd��BZdZ
eeeeeefed<dZeeed<dddddd�deded	d
dedd
dejdedeeeefdeedeedeeddfdd�Zeeeeeeed�deee fdee!e fdee"e fdeee fdeee fdeee fdeee fddfdd�Z#e$d�dd��Z%e$d�dd ��Z&e$deej'fd!d"��Z(e$defd#d$��Z)e$defd%d&��Z*e+defd'd(��Z,e+de-fd)d*��Z.e+dejfd+d,��Z/d-edefd.d/�Z0d-ed0eddfd1d2�Z1d-eddfd3d4�Z2defd5d6�Z3de4efd7d8�Z5e+de6fd9d:��Z7e+de8e9eefd;ffd<d=��Z:e+defd>d?��Z;e+defd@dA��Z<e+de=fdBdC��Z>e+defdDdE��Z?e+deefdFdG��Z@e+de-fdHdI��ZAe+defdJdK��ZBe+defdLdM��ZCe+defdNdO��ZDe+d�dQdR��ZEe+defdSdT��ZFe+deGefdUdV��ZHe+deIfdWdX��ZJe+deeKjKfdYdZ��ZLe+deeKjKfd[d\��ZMeNd]ede4eOfd^d_��ZPeQd`eedee8eOd;ffdadb��ZRe+dee8eOd;ffdcdd��ZSe+dee8eOd;ffdedf��ZTe+deeKjKfdgdh��ZUe+de6fdidj��ZVe+de9eeffdkdl��ZWe+deXfdmdn��ZYe+defdodp��ZZe$de6fdqdr��Z[e$de6fdsdt��Z\e+de6fdudv��Z]d�dwdx�Z^defdydz�Z_defd{d|�Z`ead}�d~ebdefdd��Zcdedfd�d��Zed�d�d��Zfd�d�ed�edefd�d��Zgdefd�d��Zhd�eide6fd�d��Zjde6fd�d��Zkd�elddfd�d��Zmd�enddfd�d��Zod�d�d��ZpdS)�r2)�_message�	_protocol�_payload_writer�_payload�_headers�_method�_version�_rel_url�_post�_read_bytes�_state�_cache�_task�_client_max_size�_loop�_transport_sslcontext�_transport_peernameNrirji)�client_max_size�state�scheme�host�remote�message�payload�protocolr6�payload_writer�task�asyncio.Task[None]�looprrrsrtrurv�returncCs&||_||_||_||_|j|_|j|_|j|_	i|_
|j}|jrJ|	dur*|�
|	�}|
dur3|�|
�}||j
d<|j|j
d<|j|j
d<|��|_n||_|	durV|	|j
d<|
dur_|
|j
d<|durein||_||_||_||_|j}
|
duszJ�|
�d�|_|
�d�|_|dur�||j
d<dSdS)N�urlrurt�
sslcontext�peernamerv)rarbrcrdr?re�methodrf�versionrgrlr�absolute�with_scheme�	with_hostrurt�relativerhrkrmrnro�	transport�get_extra_inforprq)�selfrwrxryrzr{r}rrrsrtrurvrr�rGrGrH�__init__�sD




�zBaseRequest.__init__�r��rel_urlr?rtrurvrrr�r�r?cCs|jrtd��i}|tur||d<|tur#t|�}	|	|d<t|	�|d<|tur>tt|��|d<tdd�|d��D��|d<|j	j
di|��}
i}|turQ||d	<|turY||d
<|tura||d<|turh|j}|j|
|j
|j|j|j|jf||j��d�|��S)aClone itself with replacement some attributes.

        Creates and returns a new instance of Request object. If no parameters
        are given, an exact copy is returned. If a parameter is not passed, it
        will reuse the one from the current request object.
        z.Cannot clone request after reading its contentr�r�pathr?css(�|]\}}|�d�|�d�fVqdS)�utf-8N)�encode)rO�k�vrGrGrHrQ�s
��
�z$BaseRequest.clone.<locals>.<genexpr>�raw_headersrtrurv)rrrsNrG)rj�RuntimeErrorr#rrCrr�tuple�itemsra�_replacern�	__class__rdrbrcrmrork�copy)r�r�r�r?rtrurvrr�dct�new_urlrw�kwargsrGrGrH�clone�sJ
���	�zBaseRequest.clonecC�|jSrM)rm�r�rGrGrHr{�zBaseRequest.taskcCr�rM)rbr�rGrGrHryr�zBaseRequest.protocolcCs|jdurdS|jjSrM)rbr�r�rGrGrHr�s
zBaseRequest.transportcCr�rM)rcr�rGrGrH�writerr�zBaseRequest.writercCr�rM)rnr�rGrGrHrrr�zBaseRequest.client_max_sizecC�tjdtdd�|jS)NzRequest.message is deprecated���
stacklevel)�warnings�warn�DeprecationWarningrar�rGrGrHrw"szBaseRequest.messagecCr�rM)rhr�rGrGrHr�'r�zBaseRequest.rel_urlcCr�)Nz#request.loop property is deprecated�r�)r�r�r�ror�rGrGrHr}+s�zBaseRequest.loop�keycCs
|j|SrM�rk�r�r�rGrGrH�__getitem__4�
zBaseRequest.__getitem__�valuecCs||j|<dSrMr�)r�r�r�rGrGrH�__setitem__7szBaseRequest.__setitem__cCs|j|=dSrMr�r�rGrGrH�__delitem__:szBaseRequest.__delitem__cC�
t|j�SrM)�lenrkr�rGrGrH�__len__=r�zBaseRequest.__len__cCr�rM)�iterrkr�rGrGrH�__iter__@r�zBaseRequest.__iter__cCs
|jdkS)z5A bool indicating if the request is handled with SSL.�https)rtr�rGrGrH�secureE�
zBaseRequest.secure.cCsdg}|jj�tjd�D]�}t|�}d}d}i}|�t�|��d|kr)|kr�nqt	�
||�}|durm|r>|�d|�}nd|��\}}	}
|	ddkrUt
�d|	dd	��}	|
r[|	|
7}	|	||��<|t|�d��7}d
}n5||dkr�d}i}|�t�|��|d7}n||dkr�d}|d7}n||dvr�|d7}n|�d|�}d|kr�|ks+qqt|�S)
a�A tuple containing all parsed Forwarded header(s).

        Makes an effort to parse Forwarded headers as specified by RFC 7239:

        - It adds one (immutable) dictionary per Forwarded 'field-value', ie
          per proxy. The element corresponds to the data in the Forwarded
          field-value added by the first proxy encountered by the client. Each
          subsequent item corresponds to those added by later proxies.
        - It checks that every value has valid syntax in general as specified
          in section 4: either a 'token' or a 'quoted-string'.
        - It un-escapes found escape sequences.
        - It does NOT validate 'by' and 'for' contents as specified in section
          6.
        - It does NOT validate 'host' contents (Host ABNF).
        - It does NOT validate 'proto' contents for valid URI scheme names.

        Returns a tuple containing one or more immutable dicts
        rGrFN�,�"z\1r���T�;z 	)rar?�getallr�	FORWARDEDr��append�typesrr`�match�find�groupsr_�sub�lower�groupr�)r��elems�field_value�length�pos�need_separator�elemr�r;r��portrGrGrH�	forwardedJsD


�� zBaseRequest.forwardedcCs|jrdSdS)aA string representing the scheme of the request.

        Hostname is resolved in this order:

        - overridden value by .clone(scheme=new_scheme) call.
        - type of connection to peer: HTTPS if socket is SSL, HTTP otherwise.

        'http' or 'https'.
        r��http)rpr�rGrGrHrt�szBaseRequest.schemecCr�)zyRead only property for getting HTTP method.

        The value is upper-cased str like 'GET', 'POST', 'PUT' etc.
        )rfr�rGrGrHr���zBaseRequest.methodcCr�)zxRead only property for getting HTTP version of request.

        Returns aiohttp.protocol.HttpVersion instance.
        )rgr�rGrGrHr��r�zBaseRequest.versioncCs$|jj�tj�}|dur|St��S)a@Hostname of the request.

        Hostname is resolved in this order:

        - overridden value by .clone(host=new_host) call.
        - HOST HTTP header
        - socket.getfqdn() value

        For example, 'example.com' or 'localhost:8080'.

        For historical reasons, the port number may be included.
        N)rar?�getr�HOST�socket�getfqdn)r�rurGrGrHru�szBaseRequest.hostcCs6|jdurdSt|jttf�rt|jd�St|j�S)z�Remote IP of client initiated HTTP request.

        The IP is resolved in this order:

        - overridden value by .clone(remote=new_remote) call.
        - peername of opened socket
        Nr)rq�
isinstance�listr�rCr�rGrGrHrv�s

	
zBaseRequest.remotecCstj|j|jd��|j�S)zThe full URL of the request.)rt�	authority)r�buildrtru�joinrhr�rGrGrHr�szBaseRequest.urlcC�|jjS)z_The URL including *PATH INFO* without the host or scheme.

        E.g., ``/app/blog``
        )rhr�r�rGrGrHr���zBaseRequest.pathcCr�)zXThe URL including PATH_INFO and the query string.

        E.g, /app/blog?id=10
        )rCrhr�rGrGrH�path_qs�s
zBaseRequest.path_qscCr�)z�The URL including raw *PATH INFO* without the host or scheme.

        Warning, the path is unquoted and may contains non valid URL characters

        E.g., ``/my%2Fpath%7Cwith%21some%25strange%24characters``
        )rar�r�rGrGrH�raw_path�szBaseRequest.raw_path�MultiMapping[str]cCr�)z7A multidict with all the variables in the query string.)rh�queryr�rGrGrHr���zBaseRequest.querycCr�)z:The query string in the URL.

        E.g., id=10
        )rh�query_stringr�rGrGrHr��r�zBaseRequest.query_stringcCr�)z4A case-insensitive multidict proxy with all headers.)rer�rGrGrHr?��zBaseRequest.headerscCr�)z$A sequence of pairs for all headers.)rar�r�rGrGrHr��r�zBaseRequest.raw_headerscC�t|j�tj��S)zyThe value of If-Modified-Since HTTP header, or None.

        This header is represented as a `datetime` object.
        )r!r?r�r�IF_MODIFIED_SINCEr�rGrGrH�if_modified_since�zBaseRequest.if_modified_sincecCr�)z{The value of If-Unmodified-Since HTTP header, or None.

        This header is represented as a `datetime` object.
        )r!r?r�r�IF_UNMODIFIED_SINCEr�rGrGrH�if_unmodified_since	r�zBaseRequest.if_unmodified_since�etag_headerccs`�|tkrtdtd�VdSt�|�D]}|�ddd�\}}}|r$dStt|�|d�VqdS)z'Extract `ETag` objects from raw header.F)�is_weakr�r�r��N)rrr�finditerr��bool)r�r�r�r��garbagerGrGrH�_etag_valuess��
��zBaseRequest._etag_values�header_valuecCs|sdSt|�|��SrM)r�r�)�clsr�rGrGrH�_if_match_or_none_impl&sz"BaseRequest._if_match_or_none_implcC�|�|j�tj��S)zxThe value of If-Match HTTP header, or None.

        This header is represented as a `tuple` of `ETag` objects.
        )r�r?r�r�IF_MATCHr�rGrGrH�if_match/�zBaseRequest.if_matchcCr�)z}The value of If-None-Match HTTP header, or None.

        This header is represented as a `tuple` of `ETag` objects.
        )r�r?r�r�
IF_NONE_MATCHr�rGrGrH�
if_none_match7r�zBaseRequest.if_none_matchcCr�)zpThe value of If-Range HTTP header, or None.

        This header is represented as a `datetime` object.
        )r!r?r�r�IF_RANGEr�rGrGrH�if_range?r�zBaseRequest.if_rangecCs
|jjS)zIs keepalive enabled by client?)ra�should_closer�rGrGrH�
keep_aliveGr�zBaseRequest.keep_alivecCs.|j�tjd�}t|�}tdd�|��D��S)zMReturn request cookies.

        A read-only dictionary-like object.
        rLcSsi|]\}}||j�qSrG)r�)rOr��valrGrGrH�
<dictcomp>Tsz'BaseRequest.cookies.<locals>.<dictcomp>)r?r�r�COOKIErrr�)r��raw�parsedrGrGrH�cookiesLszBaseRequest.cookiescCs�|j�tj�}d\}}|durhzd}t�||�d\}}Wnty(td��w|r/t|�nd}|r7t|�nd}|durF|durF|}d}|durZ|durZ|d7}||krZtd��||urgdurhtd��t	||d�S)	zMThe content of Range HTTP header.

        Return a slice instance.

        )NNNz^bytes=(\d*)-(\d*)$rzrange not in acceptable formatrzstart cannot be after endz"No start or end of range specified)
rer�r�RANGE�re�findall�
IndexError�
ValueError�int�slice)r��rng�start�end�patternrGrGrH�
http_rangeVs,��zBaseRequest.http_rangecCr�)zReturn raw payload stream.)rdr�rGrGrH�contentzr�zBaseRequest.contentcCstjdtdd�|j��S)�@Return True if request's HTTP BODY can be read, False otherwise.z$Deprecated, use .can_read_body #2005r�r�)r�r�r�rd�at_eofr�rGrGrH�has_bodys�zBaseRequest.has_bodycCs|j��S)r)rdrr�rGrGrH�
can_read_body�szBaseRequest.can_read_bodycCst|j�tuS)z6Return True if request has HTTP BODY, False otherwise.)�typerdr)r�rGrGrH�body_exists�szBaseRequest.body_existsc�s.�|j��s|j��IdH|j��rdSdS)zKRelease request.

        Eat unread part of HTTP BODY if present.
        N)rdr�readanyr�rGrGrH�release�s�
�zBaseRequest.releasec�sl�|jdur3t�}	|j��IdH}|�|�|jr*t|�}||jkr*t|j|d��|s-nq
t|�|_|jS)z_Read request body if present.

        Returns bytes object with full request content.
        NT��max_size�actual_size)	rj�	bytearrayrdr�extendrnr�r0�bytes)r��body�chunk�	body_sizerGrGrH�read�s"�


��
zBaseRequest.readc�s$�|��IdH}|jpd}|�|�S)z1Return BODY as text using encoding from .charset.Nr�)r"�charset�decode)r��
bytes_body�encodingrGrGrH�text�s�

zBaseRequest.text)�loadsr(c�s�|��IdH}||�S)zReturn BODY as JSON.N)r')r�r(rrGrGrH�json�s�zBaseRequest.jsonc�s�t|j|j�S)z3Return async iterator to process BODY as multipart.)r(rerdr�rGrGrH�	multipart�s�zBaseRequest.multipart�,MultiDictProxy[Union[str, bytes, FileField]]c�s��|jdur	|jS|j|jvrtt��|_|jS|j}|dvr(tt��|_|jSt�}|dk�r3|��IdH}|j}|��IdH}|du�r2d}|j	�
tj�}t
|t��r#|jdus\J�|jr�|j�dtj�IdH}|jdd�IdH}	|	r�|�|	�}	|j�d|j|	�IdH|t|	�7}d|kr�|kr�nn|j�d|j�IdHt||d��|jdd�IdH}	|	su|j�d|jd�IdH|dur�d}t|j|jttj|�||j	�}
|� |j|
�nJ|j!d	d
�IdH}|dus�|�"d��r|j#dd
�}|� |j|�|��n|� |j|�|t|�7}d|k�r|k�r"nnt||d��nt$d��|��IdH}|dusFn|�!�IdH}
|
�rR|j%�pBd}|�&t'|
�(��|�d	|d��t|�|_|jS)zReturn POST parameters.N)rLz!application/x-www-form-urlencoded�multipart/form-datar,ri)�sizerzapplication/octet-streamT)r$ztext/r�)�defaultz8To decode nested multipart you need to use custom reader)�keep_blank_valuesr&))rirf�POST_METHODSrrr>r*rn�nextr?r�r�CONTENT_TYPEr�r'r;r<ro�run_in_executor�tempfile�
TemporaryFile�
read_chunkr$�writer��closer0�seekr3rrErF�addr"�
startswith�get_charsetrr#rr�rstrip)r�r>�outr*r�fieldr-�field_ct�tmpr �ffr�r#�datarGrGrH�post�s��



�
��

������<��
zBaseRequest.postr;r.cCs0|j}|dur	|S|j}|dur|S|�||�S)z"Extra info from protocol transportN)rbr�r�)r�r;r.ryr�rGrGrHr�szBaseRequest.get_extra_infocCs(|j�dd��d�}d�|jj|j|�S)N�ascii�backslashreplacez<{} {} {} >)r�r�r$�formatr�r@rf)r��ascii_encodable_pathrGrGrH�__repr__+s��zBaseRequest.__repr__�othercCst|�t|�kSrM)�id)r�rJrGrGrH�__eq__3�zBaseRequest.__eq__cCsdS)NTrGr�rGrGrH�__bool__6szBaseRequest.__bool__�responsec�s�dSrMrG)r�rOrGrGrH�
_prepare_hook9s�zBaseRequest._prepare_hook�exccCst|j|�dSrM)r$rd)r�rQrGrGrH�_cancel<rMzBaseRequest._cancelcCsD|jdus
|jdkrdS|j��D]\}}t|t�r|j��qdS)Nr,)rir>r�r�r3r=r8)r��	file_name�file_field_objectrGrGrH�_finish?s

��zBaseRequest._finish)r~r|)r~r6)r~r�)r~N)r~r+rM)qr@rArBr�
METH_PATCH�	METH_POST�METH_PUT�
METH_TRACE�METH_DELETEr0r �ATTRS�	frozensetrirrrrCrr3rDrjr%r*r�asyncio�AbstractEventLoopr	rrr�r#rr/r-r��propertyr{ry�	Transportr�r�rrr"rwrr�r}r�r�r�r�rr�r�r�r
r	r�rtr�r&r�rurvrr�r�r�r�r�rr?r.r��datetimer�r��staticmethodrr��classmethodr�r�r�r�r�rr
rrrrrrr"r'r+r,r)r(r*rDr�rI�objectrLrNr1rP�
BaseExceptionrRrUrGrGrGrHr2vsD
���������	�
���
�
�<�
�
�
�
�
�
�
	�

�; <	��	#

br2cseZdZUejedg�BZdZeded<e	r$de
deddf�fdd�Ze
e
e
e
e
e
e
d	�d
ee
efdeeefdeeefd
ee
efdee
efdee
efdeeefddf�fdd�Zeddd��Zeddd��Zedefdd��Zdeddfdd�Z�ZS)r4�_match_infoNr7r;r�r~cs8||jvrtjd�|jj|�tdd�t��||�dS)Nz-Setting custom {}.{} attribute is discouragedr�r�)	r[r�r�rGr�r@r��super�__setattr__)r�r;r��r�rGrHrhTs
�zRequest.__setattr__r�r�r�r?rtrurvrrc
	s0t�j|||||||d�}tt|�}	|j|	_|	S)Nr�)rgr�rr4rf)
r�r�r�r?rtrurvrr�ret�new_retrirGrHr�^s�
	z
Request.clonecCs|j}|dus	J�|S)zResult of route resolving.N)rf�r��
match_inforGrGrHrmvszRequest.match_infor5cCs|j}|dus	J�|jS)zApplication instance.N)rf�current_apprlrGrGrH�app}szRequest.appcCsH|j}|dus	J�|j}|j}|�|�}tt|d|d���}t|�S)Nr)rf�appsro�indexr��reversedr)r�rm�lstro�idx�sublistrGrGrH�config_dict�s
zRequest.config_dictrOc�s@�|j}|dur
dS|jD]}|j}r|�||�IdHq
dSrM)rf�_apps�on_response_prepare�send)r�rOrmrorxrGrGrHrP�s�

��zRequest._prepare_hook)r~r7)r~r5)r@rArBr2r[r\rfrrDrrCrrhr#rrr/r-r	r�r"rmr_rorrvr1rP�
__classcell__rGrGrirHr4LsH

�
�
�
�
�
�
�
	�
�	r4)dr]rarErr��stringr4r�r��http.cookiesrr�typingrrrrrr	r
rrr
rr�urllib.parser�attr�	multidictrrrrr�yarlrrLr�abcr�helpersrrrrrrr r!r"r#r$�http_parserr%�http_writerr&r*r'r(�streamsr)r*�typedefsr+r,r-r.r/�web_exceptionsr0�web_responser1�__all__�web_appr5�web_protocolr6�web_urldispatcherr7�sr3�digits�
ascii_lettersrIrCrDrKrGr�r��rangerWrXr[r^�compiler_r`r2r4rGrGrGrH�<module>sn
84
 ����[