Viewing File: /opt/alt/python35/lib64/python3.5/site-packages/aiohttp/__pycache__/web_request.cpython-35.pyc



ZQ@sddlZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlmZddl
mZddl	mZddlmZddlZddlmZmZmZmZddlmZdd	lmZmZdd
lmZmZm Z ddl!m"Z"ddl#m$Z$d
ddfZ%ej&ddddGdddZ'ej(ej)dZ*dj+de*Z,dj+dj-dddddfe.e/ddDZ0d Z1d!j+d"e0d#e1Z2d$j+d%e,d&e2Z3ej4d'Z5ej4e3Z6Gd(d
d
ej7eZ8Gd)dde8Z9dS)*N)	parsedate)SimpleCookie)MappingProxyType)	parse_qsl)CIMultiDictCIMultiDictProxy	MultiDictMultiDictProxy)URL)hdrs	multipart)HeadersMixinreifysentinel)EmptyStreamReader)HTTPRequestEntityTooLargeBaseRequest	FileFieldRequestfrozenTslotsc@smeZdZejdeZejdeZejdej	Z
ejdeZejdeZ
dS)rtypeN)__name__
__module____qualname__attrZibstrnamefilenameioBufferedReaderfilecontent_typerheadersr%r%/web_request.pyrs
z!#$%&'*+.^_`|~-z
[{tchar}]+Ztcharz[{}]ccs|]}t|VqdS)N)chr).0cr%r%r&	<genexpr>-sr+	 !#z
\\[\t !-~]z"(?:{quoted_pair}|{qdtext})*"ZqdtextZquoted_pairz#({token})=({token}|{quoted_string})tokenZ
quoted_stringz\\([\t !-~])c@seZdZejejejejejhZ	e
jeddddddddd	d
ddd
ddgBZddxddddddddddZ
dededededededdZedd Zed!d"Zed#d$Zed%d&Zed'd(Zed)d*Zed+d,Zd-d.Zd/d0Zd1d2Zd3d4Zd5d6Zed7d8Zed9d:Zed;d<Z ed=d>Z!ed?d@Z"edAdBZ#edCdDZ$edEdFZ%edGdHZ&edIdJZ'edKdLZ(edMdNZ)edOdPZ*edQdRZ+edSdTZ,eej-dUdVZ.edWdXZ/edYdZZ0ed[ej1d\d]Z2ed^d_Z3ed`daZ4edbdcZ5edddeZ6dfdgZ7dhdiZ8djdkZ9dle:j;dmdnZ:doe<j=dpdqZ<drdsZ>dtduZ?e@jAdvdwZBdS)yr_message	_protocol_payload_writer_payload_headers_method_version_rel_url_post_read_bytes_state_cache_task_client_max_size_loopclient_max_sizeistateNschemehostremotecCs|dkri}||_||_||_||_|j|_|j|_|j|_	|j
|_d|_d|_
||_i|_||_||_||_|	dk	r|	|jd<|
dk	r|
|jd<|dk	r||jd<dS)NrDrErF)r2r3r4r5r$r6methodr7versionr8urlr9r:r;r<r=r>r?r@)selfmessageZpayloadprotocolZpayload_writertasklooprArCrDrErFr%r%r&__init__Os.											

zBaseRequest.__init__rGrel_urlr$c
CsB|jrtdi}|tk	r1||d<|tk	rct|}||d<t||d<|tk	rt||d<tdd|jD|d<|jj	|}i}	|tk	r||	d	<|tk	r||	d
<|tk	r||	d<|j
||j|j|j
|j|jd|jd
|jj|	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 it's contentrGrIpathr$css3|])\}}|jd|jdfVqdS)zutf-8N)encode)r)kvr%r%r&r+sz$BaseRequest.clone.<locals>.<genexpr>raw_headersrDrErFrArC)r;RuntimeErrorrr
rrtupleitemsr2_replace	__class__r5r3r4r>r@r?r<copy)
rJrGrPr$rDrErFdctrKkwargsr%r%r&cloneos>	




		zBaseRequest.clonecCs|jS)N)r>)rJr%r%r&rMszBaseRequest.taskcCs|jS)N)r3)rJr%r%r&rLszBaseRequest.protocolcCs|jdkrdS|jjS)N)r3	transport)rJr%r%r&r_szBaseRequest.transportcCs|jS)N)r4)rJr%r%r&writerszBaseRequest.writercCs|jS)N)r2)rJr%r%r&rKszBaseRequest.messagecCs|jS)N)r9)rJr%r%r&rPszBaseRequest.rel_urlcCs|jS)N)r@)rJr%r%r&rNszBaseRequest.loopcCs|j|S)N)r<)rJkeyr%r%r&__getitem__szBaseRequest.__getitem__cCs||j|<dS)N)r<)rJravaluer%r%r&__setitem__szBaseRequest.__setitem__cCs|j|=dS)N)r<)rJrar%r%r&__delitem__szBaseRequest.__delitem__cCs
t|jS)N)lenr<)rJr%r%r&__len__szBaseRequest.__len__cCs
t|jS)N)iterr<)rJr%r%r&__iter__szBaseRequest.__iter__cCs
|jdkS)z5A bool indicating if the request is handled with SSL.https)rD)rJr%r%r&secureszBaseRequest.securec
Csg}x|jjjtjfD]}t|}d}d}i}|jtj|xZd|kov|knrt	j
||}|dk	r$|r|jd|}q|j\}}	|	ddkrt
jd|	dd}	|	||j<|t|jd7}d}q_||dkrcd}i}|jtj||d7}q_||d	krd}|d7}q_||d
kr|d7}q_|jd|}q_Wq"Wt|S)aA 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
        rFN,"z\1rT;z 	)r2r$ZgetallrZ	FORWARDEDrfappendtypesr_FORWARDED_PAIR_REmatchfindgroups_QUOTED_PAIR_REPLACE_REsublowergrouprW)
rJZelemsZfield_valuelengthposZneed_separatorelemrsrrcr%r%r&	forwardeds>"		


zBaseRequest.forwardedcCs|jjdrdSdSdS)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'.
        Z
sslcontextrjZhttpN)r_get_extra_info)rJr%r%r&rDszBaseRequest.schemecCs|jS)zyRead only property for getting HTTP method.

        The value is upper-cased str like 'GET', 'POST', 'PUT' etc.
        )r7)rJr%r%r&rG!szBaseRequest.methodcCs|jS)zxRead only property for getting HTTP version of request.

        Returns aiohttp.protocol.HttpVersion instance.
        )r8)rJr%r%r&rH)szBaseRequest.versioncCs6|jjjtj}|dk	r(|StjSdS)zHostname of the request.

        Hostname is resolved in this order:

        - overridden value by .clone(host=new_host) call.
        - HOST HTTP header
        - socket.getfqdn() value
        N)r2r$getrZHOSTsocketgetfqdn)rJrEr%r%r&rE1s
zBaseRequest.hostcCsJ|jdkrdS|jjd}t|ttfrB|dS|SdS)zRemote 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
        Npeernamer)r_r~
isinstancelistrW)rJrr%r%r&rFAs	zBaseRequest.remotecCs.tjd|jd|j}|j|jS)NrDrE)r
ZbuildrDrEjoinr9)rJrIr%r%r&rIRszBaseRequest.urlcCs
|jjS)z_The URL including *PATH INFO* without the host or scheme.

        E.g., ``/app/blog``
        )r9rQ)rJr%r%r&rQWszBaseRequest.pathcCs
t|jS)zXThe URL including PATH_INFO and the query string.

        E.g, /app/blog?id=10
        )rr9)rJr%r%r&path_qs_szBaseRequest.path_qscCs
|jjS)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``
        )r2rQ)rJr%r%r&raw_pathgszBaseRequest.raw_pathcCs
|jjS)z7A multidict with all the variables in the query string.)r9query)rJr%r%r&rpszBaseRequest.querycCs
|jjS)z:The query string in the URL.

        E.g., id=10
        )r9query_string)rJr%r%r&ruszBaseRequest.query_stringcCs|jS)z4A case-insensitive multidict proxy with all headers.)r6)rJr%r%r&r$}szBaseRequest.headerscCs
|jjS)z#A sequence of pars for all headers.)r2rU)rJr%r%r&rUszBaseRequest.raw_headerscCs]|jj|}|dk	rYt|}|dk	rYtj|dddtjjSdS)zyThe value of If-Modified-Since HTTP header, or None.

        This header is represented as a `datetime` object.
        NZtzinfo)r$rrdatetimetimezoneZutc)rJZ_IF_MODIFIED_SINCEZhttpdateZ	timetupler%r%r&if_modified_sinces
zBaseRequest.if_modified_sincecCs|jjS)zIs keepalive enabled by client?)r2Zshould_close)rJr%r%r&
keep_aliveszBaseRequest.keep_alivecCsA|jjtjd}t|}tdd|jDS)zMReturn request cookies.

        A read-only dictionary-like object.
        r'cSs"i|]\}}|j|qSr%)rc)r)ravalr%r%r&
<dictcomp>s	z'BaseRequest.cookies.<locals>.<dictcomp>)r$rrZCOOKIErrrX)rJrawZparsedr%r%r&cookiesszBaseRequest.cookies_RANGEcCs2|jj|}d\}}|dk	r"y&d}tj||d\}}Wntk
rptdYnX|rt|nd}|rt|nd}|dkr|dk	r|}|dk	r|dk	r|d7}||krtd||kodknr"tdt||dS)	zMThe content of Range HTTP header.

        Return a slice instance.

        Nz^bytes=(\d*)-(\d*)$rzrange not in acceptible formatrzstart cannot be after endz"No start or end of range specified)NN)r6rrefindall
IndexError
ValueErrorintslice)rJrrngstartendpatternr%r%r&
http_ranges& 

zBaseRequest.http_rangecCs|jS)zReturn raw payload stream.)r5)rJr%r%r&contentszBaseRequest.contentcCs$tjdtdd|jjS)z@Return True if request's HTTP BODY can be read, False otherwise.z$Deprecated, use .can_read_body #2005
stacklevelrB)warningswarnDeprecationWarningr5at_eof)rJr%r%r&has_bodys
zBaseRequest.has_bodycCs|jjS)z@Return True if request's HTTP BODY can be read, False otherwise.)r5r)rJr%r%r&
can_read_bodyszBaseRequest.can_read_bodycCst|jtk	S)z6Return True if request has HTTP BODY, False otherwise.)rr5r)rJr%r%r&body_existsszBaseRequest.body_existscs,x%|jjs'|jjIdHqWdS)zKRelease request.

        Eat unread part of HTTP BODY if present.
        N)r5rreadany)rJr%r%r&releaseszBaseRequest.releasecs|jdkrzt}xP|jjIdH}|j||jr`t||jkr`t|sPqWt||_|jS)z_Read request body if present.

        Returns bytes object with full request content.
        N)	r;	bytearrayr5rextendr?rfrbytes)rJbodychunkr%r%r&reads	
	zBaseRequest.readcs-|jIdH}|jpd}|j|S)z1Return BODY as text using encoding from .charset.Nzutf-8)rcharsetdecode)rJZ
bytes_bodyencodingr%r%r&textszBaseRequest.textloadscs|jIdH}||S)zReturn BODY as JSON.N)r)rJrrr%r%r&jsonszBaseRequest.jsonreadercs||j|jS)z3Return async iterator to process BODY as multipart.)r6r5)rJrr%r%r&r
szBaseRequest.multipartc
s|jdk	r|jS|j|jkrAtt|_|jS|j}|dkrott|_|jSt}|dkrw|jIdH}|jIdH}x"|dk	rsd}|j}|j	j
tj}|j
rtj}|jddIdH}xu|r||j|}|j||t|7}d|koQ|knrbtd	|jddIdH}qW|jdt|j|j
|||j	}	|j|j|	n|jd
dIdH}
|dks|jdr|jd
d}|
j|}
|j|j|
|t|
7}d|koN|knr_td	|jIdH}qWnT|jIdH}|r|jpd}|jt|jj|ddd|t||_|jS)zReturn POST parameters.Nr'!application/x-www-form-urlencodedmultipart/form-datarsizerBz"Maximum request body size exceededrTztext/defaultzutf-8Zkeep_blank_valuesr)r'rrii) r:r7POST_METHODSr	rr#r
nextr?r$rrZCONTENT_TYPErtempfile
TemporaryFileZ
read_chunkrwriterfrseekrraddr
startswithZget_charsetrrrrstrip)
rJr#outr
Zfieldrmax_sizetmprZffrcrdatar%r%r&postsn						
	
	
zBaseRequest.postcCs:|jjddjd}dj|jj|j|S)Nasciibackslashreplacez<{} {} {} >)rQrRrformatrZrr7)rJZascii_encodable_pathr%r%r&__repr__Ls	zBaseRequest.__repr__ccs	dSdV)Nr%)rJresponser%r%r&
_prepare_hookRszBaseRequest._prepare_hooki)CrrrrZ
METH_PATCHZ	METH_POSTZMETH_PUTZ
METH_TRACEZMETH_DELETErrATTRS	frozensetrOrr^propertyrMrLr_r`rKrPrNrbrdrergrirkrr}rDrGrHrErFrIrQrrrrr$rUZIF_MODIFIED_SINCErrrRANGErrrrrrrrrrr
ZMultipartReaderrrasyncio	coroutinerr%r%r%r&rEst	.<	
!EcseZdZejedgBZfddZfddZdededed	ed
edefdd
Z	e
ddZe
ddZddZ
S)r_match_infocs tj||d|_dS)N)superrOr)rJargsr])rZr%r&rO\szRequest.__init__csN||jkr7tjdj|jj|tddtj||dS)Nz-Setting custom {}.{} attribute is discouragedrrB)	rrrrrZrrr__setattr__)rJrr)rZr%r&rcs	zRequest.__setattr__rGrPr$rDrErFc
sCtjd|d|d|d|d|d|}|j|_|S)NrGrPr$rDrErF)rr^r)rJrGrPr$rDrErFZret)rZr%r&r^ls	z
Request.clonecCs|jS)zResult of route resolving.)r)rJr%r%r&
match_infoxszRequest.match_infocCs
|jjS)zApplication instance.)rZcurrent_app)rJr%r%r&app}szRequest.appcsI|j}|dkrdSx)|jD]}|jj||IdHq#WdS)N)rZappsZon_response_preparesend)rJrrrr%r%r&rs
	zRequest._prepare_hook)rrrrrrrOrrr^rrrrr%r%)rZr&rXs	
):rcollectionsrr rrrstringrrqrZemail.utilsrZhttp.cookiesrrZurllib.parserrZ	multidictrrrr	Zyarlr
r'rr
ZhelpersrrrZstreamsrZweb_exceptionsr__all__srdigits
ascii_lettersZ_TCHARrZ_TOKENrrWrangeZ_QDTEXTZ_QUOTED_PAIRZ_QUOTED_STRINGZ_FORWARDED_PAIRcompilervrrMutableMappingrrr%r%r%r&<module>sN"+	;			
Back to Directory File Manager