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



ZS@sddlZddlZddlZddlZddlZddlZddlZddlZddlm	Z	ddl
mZddlm
Z
mZddlmZmZddlmZmZmZddlmZmZmZmZd	d
ddfZGd
d	d	ejZGdd
d
ejeZGdddeZ edddddddddddddej!ddZ"dS)N)	parsedate)SimpleCookie)CIMultiDictCIMultiDictProxy)hdrspayload)HeadersMixinrfc822_formatted_timesentinel)	RESPONSESSERVER_SOFTWARE
HttpVersion10
HttpVersion11
ContentCodingStreamResponseResponse
json_responsec@s"eZdZdZdZdZdS)rdeflategzipidentityN)__name__
__module____qualname__rrrrr/web_response.pyrscs(eZdZdZddddddddZed	d
ZeddZed
dZeddZ	eddZ
eddZdeddZ
eddZddZeddZeddZddd Zdd!d"Zed#d$Zed%d&Zd'dd(dd)dd*d+d,dd-dd.dd/d0Zd(dd*d+d1d2Zefd3d4Zejd5d4Zefd6d7Zejd8d7Zefd9d:Zejd;d:Zeejd<d=Zejd>d=Zejd?d@Z dAdBZ!dCdDZ"dEdFZ#e$e%ej&ej'ej(ejej)ej*e+ej,dGdH
Z-dIdJZ.dKdLZ/dMdNdOZ0dPdQZ1dRdSZ2dTdUZ3dVdWZ4dXdYZ5dZd[Z6d\d]Z7S)^rTstatusreasonNheaderscCsd|_d|_d|_d|_d|_t|_d|_d|_d|_	d|_
i|_|dk	rt||_
nt|_
|j||dS)NFr)_body_keep_alive_chunked_compression_compression_forcer_cookies_req_payload_writer	_eof_sent_body_length_stater_headers
set_status)selfrrrrrr__init__)s										zStreamResponse.__init__cCs
|jdk	S)N)r')r-rrrprepared>szStreamResponse.preparedcCst|jddS)Ntask)getattrr&)r-rrrr0BszStreamResponse.taskcCs|jS)N)_status)r-rrrrFszStreamResponse.statuscCs|jS)N)r")r-rrrchunkedJszStreamResponse.chunkedcCs|jS)N)r#)r-rrrcompressionNszStreamResponse.compressioncCs|jS)N)_reason)r-rrrrRszStreamResponse.reasoncCsn|jstdt||_|dkray||jd}Wntk
r`d}YnX||_dS)NzGCannot change the response status code after the headers have been sentr)r/AssertionErrorintr2	Exceptionr5)r-rrZ
_RESPONSESrrrr,Vs
	
zStreamResponse.set_statuscCs|jS)N)r!)r-rrr
keep_alivebszStreamResponse.keep_alivecCs
d|_dS)NF)r!)r-rrrforce_closefszStreamResponse.force_closecCs|jS)N)r))r-rrrbody_lengthiszStreamResponse.body_lengthcCstjdt|jjS)Nzoutput_length is deprecated)warningswarnDeprecationWarningr'Zbuffer_size)r-rrr
output_lengthmszStreamResponse.output_lengthcCsGd|_tj|jkr'td|dk	rCtjdtdS)z,Enables automatic chunked transfer encoding.Tz>You can't enable chunked encoding when a content length is setNzChunk size is deprecated #1615)r"rCONTENT_LENGTHr+RuntimeErrorr=r>r?)r-Z
chunk_sizerrrenable_chunked_encodingrs
	z&StreamResponse.enable_chunked_encodingcCsjt|tkr-|r!tjntj}n'|dk	rTt|tsTtdd|_||_dS)z&Enables response compression encoding.Nz1force should one of None, bool or ContentEncodingT)	typeboolrrr
isinstancer7r#r$)r-forcerrrenable_compression|s	z!StreamResponse.enable_compressioncCs|jS)N)r+)r-rrrrszStreamResponse.headerscCs|jS)N)r%)r-rrrcookiesszStreamResponse.cookiesexpiresdomainmax_agepath/securehttponlyversioncCs!|jj|}
|
dk	r@|
jdkr@|jj|d||j|<|j|}|dk	rs||d<n|jddkr|d=|dk	r||d<|dk	r||d<nd|kr|d=||d<|dk	r||d<|dk	r||d	<|	dk	r|	|d
<dS)zSet or update response cookie.

        Sets new cookie or updates existent with new value.
        Also updates only those params which are not None.
        Nr6rJzThu, 01 Jan 1970 00:00:00 GMTrKzmax-agerMrOrPrQ)r%getZcoded_valuepop)r-namevaluerJrKrLrMrOrPrQoldcrrr
set_cookies,	







zStreamResponse.set_cookiecCs?|jj|d|j|dddddd|d|dS)	zBDelete cookie.

        Creates new empty expired cookie.
        Nr6rLrrJzThu, 01 Jan 1970 00:00:00 GMTrKrM)r%rSrX)r-rTrKrMrrr
del_cookieszStreamResponse.del_cookiecs
tjS)N)supercontent_length)r-)	__class__rrr[szStreamResponse.content_lengthcCs`|dk	rFt|}|jr-tdt||jtj<n|jjtjddS)Nz<You can't set content length when chunked encoding is enable)r8r"rBstrr+rrArS)r-rUrrrr[s	cs
tjS)N)rZcontent_type)r-)r\rrr^szStreamResponse.content_typecCs$|jt||_|jdS)N)r^r]
_content_type_generate_content_type_header)r-rUrrrr^scs
tjS)N)rZcharset)r-)r\rrraszStreamResponse.charsetcCsj|j}|dkr!td|dkrC|jjddnt|j|jd<|jdS)Nzapplication/octet-streamzYSetting charset for application/octet-stream doesn't make sense, setup content_type firstra)r^rB
_content_dictrSr]lowerr`)r-rUctyperrrras	cCs]|jj|}|dk	rYt|}|dk	rYtj|dddtjjSdS)zuThe value of Last-Modified HTTP header, or None.

        This header is represented as a `datetime` object.
        NZtzinfo)rrRrdatetimetimezoneZutc)r-Z_LAST_MODIFIEDZhttpdateZ	timetuplerrr
last_modifieds
zStreamResponse.last_modifiedcCs|dkr%|jjtjdnt|ttfrktjdtj	t
j||jtj<nVt|tjrtjd|j
|jtj<nt|tr||jtj<dS)Nz%a, %d %b %Y %H:%M:%S GMT)rrSr
LAST_MODIFIEDrFr8floattimestrftimegmtimemathceilrfZutctimetupler])r-rUrrrrhs+cCsYdjdd|jjD}|r?|jd|}n	|j}||j|<dS)Nz; css|]}d|VqdS)z%s=%sNr).0irrr	<genexpr>sz?StreamResponse._generate_content_type_header.<locals>.<genexpr>)joinrbitemsr_r)r-CONTENT_TYPEZparamsrdrrrr`
s
%	z,StreamResponse._generate_content_type_headercCsO|tjkrK|j|jtj<|jj|j|jj	tj
ddS)N)rrrUrrCONTENT_ENCODINGr'rHr+ZpopallrA)r-codingrrr_do_start_compressionsz$StreamResponse._do_start_compressioncCso|jr|j|jnO|jjtjdj}x.tD]&}|j|krA|j|dSqAWdS)Nr6)	r$rxrrRrZACCEPT_ENCODINGrcrrU)r-requestZaccept_encodingrwrrr_start_compressions		

z!StreamResponse._start_compressioncsB|jr
dS|jdk	r#|jS|j|IdH|j|S)N)r(r'Z
_prepare_hook_start)r-ryrrrprepare%s	zStreamResponse.preparecCs||_|j}|dkr'|j}||_|j}
|j}|_|j}xC|jjD]2}|jdddd}|j	|	|qbW|j
r|j||jr|
|krt
dj|j|jd||<||kre||=n`|jre|j|_|jdkre|
|kr_|jd||<||kre||=nd}|j|d|j|t|j||
||kr|r|
|krd||<n|
|krd	||<d
j|
d|
d|j|j}|j|||S)Nheaderr6rz@Using chunked encoding is forbidden for HTTP/{0.major}.{0.minor}r3Fzapplication/octet-streamz
keep-aliveclosezHTTP/{}.{} {} {}
r)r&r!r:rQr'r+r%valuesoutputaddr#rzr"rBformatZenable_chunking
_length_checkr[length
setdefaultr
r2r5Z
write_headers)r-ryrr
CONNECTIONDATESERVERrurA
SET_COOKIEr
TRANSFER_ENCODINGr:rQwriterrZcookierUZstatus_linerrrr{.sX							
	


	




 zStreamResponse._startcswt|tttfs.tdt||jrCtd|jdkr^td|jj	|IdHdS)Nz#data argument must be byte-ish (%r)z%Cannot call write() after write_eof()z$Cannot call write() before prepare())
rFbytes	bytearray
memoryviewr7rDr(rBr'write)r-datarrrrss	zStreamResponse.writecs]|jstd|jdk	s1tdtjdtdd|jjIdHdS)NzEOF has already been sentzResponse has not been startedz2drain method is deprecated, use await resp.write()
stacklevel)r(r7r'r=r>r?drain)r-rrrr~s		zStreamResponse.draincst|tttfs.tdt||jr;dS|jdk	sVtd|jj|IdHd|_d|_	|jj
|_d|_dS)Nz#data argument must be byte-ish (%r)zResponse has not been startedT)rFrrrr7rDr(r'	write_eofr&Zoutput_sizer))r-rrrrrs				zStreamResponse.write_eofcCs^|jrd}n0|jr<dj|jj|jj}nd}dj|jj|j|S)Neofz{} {} znot preparedz
<{} {} {}>)	r(r/rr&methodrMr\rr)r-inforrr__repr__s			!zStreamResponse.__repr__cCs|j|S)N)r*)r-keyrrr__getitem__szStreamResponse.__getitem__cCs||j|<dS)N)r*)r-rrUrrr__setitem__szStreamResponse.__setitem__cCs|j|=dS)N)r*)r-rrrr__delitem__szStreamResponse.__delitem__cCs
t|jS)N)lenr*)r-rrr__len__szStreamResponse.__len__cCs
t|jS)N)iterr*)r-rrr__iter__szStreamResponse.__iter__cCstt|S)N)hashid)r-rrr__hash__szStreamResponse.__hash__)8rrrrr.propertyr/r0rr3r4rrr,r:r;r<r@rCrHrrIrXrYr[setterr^rarrirhrur`rxrzr|rrrrrrArr
rr{rrrrrrrrrrrr)r\rr%sl

	%


;	
cs	eZdZddddddddddddd	dfd
dZedd
Zejejej	dd
ZeddZ
e
jddZ
efddZejddZfddZfddZ
fddZS)rbodyNrrrtextrr^racs|dk	r$|dk	r$td|dkr<t}n!t|ttfs]t|}|dk	rd|krtd|dk	r-tj|kr|s|r*tdqt|tstdt||dkrd}|dkrd}|d||tj<|j	|}d}nitj|krc|dk	sT|dk	rtdn3|dk	r|dk	r|d|7}||tj<t
jd	|d
|d||dk	r||_n	||_
d|_dS)Nz&body and text are not allowed togetherraz,charset must not be in content_type argumentzPpassing both Content-Type header and content_type or charset params is forbiddenztext argument must be str (%r)z
text/plainzutf-8z
; charset=rrr)
ValueErrorrrFrrrur]	TypeErrorrDencoderZr.rr_compressed_body)r-rrrrrr^ra)r\rrr.sD	
	zResponse.__init__cCs|jS)N)r )r-rrrrsz
Response.bodycCsH|dkr!d|_d|_nt|ttfrK||_d|_nytjj||_}Wn+tjk
rt	dt
|YnXd|_|j}|jr||kr|j
}|dk	rt|||<||kr|j||<|jr;x3|jjD]"\}}||kr|||<qWd|_dS)NFzUnsupported body type %rT)r 
_body_payloadrFrrrZPAYLOAD_REGISTRYrRLookupErrorrrDr+r"sizer]r^rrtr)r-rrurArrrrUrrrrs.					
	cCs,|jdkrdS|jj|jp(dS)Nzutf-8)r decodera)r-rrrrsz
Response.textcCs|dks1t|ts1tdt||jdkrId|_|jdkrad|_|j|j|_d|_d|_	dS)Nztext argument must be str (%r)zapplication/octet-streamz
text/plainzutf-8F)
rFr]r7rDr^rarr rr)r-rrrrrs			csv|jr
dStj|jkr)tjS|jdk	rEt|jS|jrRdS|j	dk	rnt|j	SdSdS)Nr)
r"rrArrZr[rrrr )r-)r\rrr[+s	

	
zResponse.content_lengthcCstddS)Nz#Content length is set automatically)rB)r-rUrrrr[>scs|jr
dS|jdk	r(|j}n	|j}|dk	r|jjtjksa|jdkrvtj	IdHq|j
r|j|jIdHtj	IdHqtj	|IdHntj	IdHdS)N0)rr)
r(rr r&_methodrZ	METH_HEADr2rZrrrr')r-r)r\rrrBs			zResponse.write_eofcsv|jrftj|jkrf|jsf|jdk	rVtt|j|jtj<nd|jtj<tj	|S)N0)
r"rrAr+rr r]rrZr{)r-ry)r\rrr{Us	"zResponse._startcs|js|jr"tj|S|tjkr|jdkrMdtjntj}tj	d|}|j
|j|j|_
|j|jtj<tt|j
|jtj<dS)NrZwbits)rr"rZrxrrrUzlib	MAX_WBITScompressobjcompressr flushrr+rrvr]rrA)r-rwZ	zlib_moder)r\rrrx_s&zResponse._do_start_compression)rrrr.rrrrrurArr[rr{rxrr)r\rrs5#
rrrrrrr^zapplication/jsondumpsc
Cs^|tk	r3|s|r'tdn||}td|d|d|d|d|d|S)Nz3only one of data, text, or body should be specifiedrrrrrr^)rrr)rrrrrrr^rrrrros)#collectionsrfenumZjsonrnrkr=rZemail.utilsrZhttp.cookiesrZ	multidictrrr6rrZhelpersr	r
rZhttprr
rr__all__EnumrMutableMappingrrrrrrrr<module>s*"
Back to Directory File Manager