Your IP : 216.73.216.213


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



���Z�S�@s�ddlZddlZddlZddlZddlZddlZddlZddlZddlm	Z	ddl
mZddlm
Z
mZddlmZmZddlmZmZmZddlmZmZmZmZd	d
ddfZGd
d	�d	ej�ZGdd
�d
eje�ZGdd�de�Z edddddddddddddej!dd�Z"dS)�N)�	parsedate)�SimpleCookie)�CIMultiDict�CIMultiDictProxy�)�hdrs�payload)�HeadersMixin�rfc822_formatted_time�sentinel)�	RESPONSES�SERVER_SOFTWARE�
HttpVersion10�
HttpVersion11�
ContentCoding�StreamResponse�Response�
json_responsec@s"eZdZdZdZdZdS)r�deflate�gzip�identityN)�__name__�
__module__�__qualname__rrr�rr�G/opt/alt/python35/lib64/python3.5/site-packages/aiohttp/web_response.pyrscs(eZdZdZdddddddd�Zed	d
��Zedd��Zed
d��Zedd��Z	edd��Z
edd��Zdedd�Z
edd��Zdd�Zedd��Zedd��Zddd �Zdd!d"�Zed#d$��Zed%d&��Zd'dd(dd)dd*d+d,dd-dd.dd/d0�Zd(dd*d+d1d2�Ze�fd3d4��Zejd5d4��Ze�fd6d7��Zejd8d7��Ze�fd9d:��Zejd;d:��Zeejd<d=��Zejd>d=��Zejd?d@�Z dAdB�Z!dCdD�Z"dEdF�Z#e$e%ej&ej'ej(ejej)ej*e+ej,dGdH�
Z-dIdJ�Z.dKdL�Z/dMdNdO�Z0dPdQ�Z1dRdS�Z2dTdU�Z3dVdW�Z4dXdY�Z5dZd[�Z6d\d]�Z7�S)^rT�status���reasonN�headerscCs�d|_d|_d|_d|_d|_t�|_d|_d|_d|_	d|_
i|_|dk	r�t|�|_
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-rrr�prepared>szStreamResponse.preparedcCst|jdd�S)N�task)�getattrr&)r-rrrr0BszStreamResponse.taskcCs|jS)N)�_status)r-rrrrFszStreamResponse.statuscCs|jS)N)r")r-rrr�chunkedJszStreamResponse.chunkedcCs|jS)N)r#)r-rrr�compressionNszStreamResponse.compressioncCs|jS)N)�_reason)r-rrrrRszStreamResponse.reasoncCsn|jstd��t|�|_|dkray||jd}Wntk
r`d}YnX||_dS)NzGCannot change the response status code after the headers have been sentr�)r/�AssertionError�intr2�	Exceptionr5)r-rrZ
_RESPONSESrrrr,Vs
	
zStreamResponse.set_statuscCs|jS)N)r!)r-rrr�
keep_alivebszStreamResponse.keep_alivecCs
d|_dS)NF)r!)r-rrr�force_closefszStreamResponse.force_closecCs|jS)N)r))r-rrr�body_lengthiszStreamResponse.body_lengthcCstjdt�|jjS)Nzoutput_length is deprecated)�warnings�warn�DeprecationWarningr'�buffer_size)r-rrr�
output_lengthmszStreamResponse.output_lengthcCsGd|_tj|jkr'td��|dk	rCtjdt�dS)z,Enables automatic chunked transfer encoding.Tz>You can't enable chunked encoding when a content length is setNzChunk size is deprecated #1615)r"r�CONTENT_LENGTHr+�RuntimeErrorr=r>r?)r-�
chunk_sizerrr�enable_chunked_encodingrs
	z&StreamResponse.enable_chunked_encodingcCsjt|�tkr-|r!tjntj}n'|dk	rTt|t�sTtd��d|_||_dS)z&Enables response compression encoding.Nz1force should one of None, bool or ContentEncodingT)	�type�boolrrr�
isinstancer7r#r$)r-�forcerrr�enable_compression|s	z!StreamResponse.enable_compressioncCs|jS)N)r+)r-rrrr�szStreamResponse.headerscCs|jS)N)r%)r-rrr�cookies�szStreamResponse.cookies�expires�domain�max_age�path�/�secure�httponly�versioncCs!|jj|�}
|
dk	r@|
jdkr@|jj|d�||j|<|j|}|dk	rs||d<n|jd�dkr�|d=|dk	r�||d<|dk	r�||d<nd|kr�|d=||d<|dk	r�||d<|dk	r||d	<|	dk	r|	|d
<dS)z�Set or update response cookie.

        Sets new cookie or updates existent with new value.
        Also updates only those params which are not None.
        Nr6rLzThu, 01 Jan 1970 00:00:00 GMTrMzmax-agerOrQrRrS)r%�getZcoded_value�pop)r-�name�valuerLrMrNrOrQrRrS�old�crrr�
set_cookie�s,	

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

        Creates new empty expired cookie.
        Nr6rNrrLzThu, 01 Jan 1970 00:00:00 GMTrMrO)r%rUrZ)r-rVrMrOrrr�
del_cookie�szStreamResponse.del_cookiecs
t�jS)N)�super�content_length)r-)�	__class__rrr]�szStreamResponse.content_lengthcCs`|dk	rFt|�}|jr-td��t|�|jtj<n|jjtjd�dS)Nz<You can't set content length when chunked encoding is enable)r8r"rC�strr+rrBrU)r-rWrrrr]�s	cs
t�jS)N)r\�content_type)r-)r^rrr`�szStreamResponse.content_typecCs$|jt|�|_|j�dS)N)r`r_�
_content_type�_generate_content_type_header)r-rWrrrr`�scs
t�jS)N)r\�charset)r-)r^rrrc�szStreamResponse.charsetcCsj|j}|dkr!td��|dkrC|jjdd�nt|�j�|jd<|j�dS)Nzapplication/octet-streamzYSetting charset for application/octet-stream doesn't make sense, setup content_type firstrc)r`rC�
_content_dictrUr_�lowerrb)r-rW�ctyperrrrc�s	cCs]|jj|�}|dk	rYt|�}|dk	rYtj|dd�dtjj�SdS)zuThe value of Last-Modified HTTP header, or None.

        This header is represented as a `datetime` object.
        N��tzinfo)rrTr�datetime�timezone�utc)r-Z_LAST_MODIFIEDZhttpdate�	timetuplerrr�
last_modified�s
zStreamResponse.last_modifiedcCs�|dkr%|jjtjd�n�t|ttf�rktjdtj	t
j|���|jtj<nVt|tj�r�tjd|j
��|jtj<nt|t�r�||jtj<dS)Nz%a, %d %b %Y %H:%M:%S GMT)rrUr�
LAST_MODIFIEDrHr8�float�time�strftime�gmtime�math�ceilri�utctimetupler_)r-rWrrrrm�s+cCsYdjdd�|jj�D��}|r?|jd|}n	|j}||j|<dS)Nz; css|]}d|VqdS)z%s=%sNr)�.0�irrr�	<genexpr>sz?StreamResponse._generate_content_type_header.<locals>.<genexpr>)�joinrd�itemsrar)r-�CONTENT_TYPE�paramsrfrrrrb
s
%	z,StreamResponse._generate_content_type_headercCsO|tjkrK|j|jtj<|jj|j�|jj	tj
d�dS)N)rrrWrr�CONTENT_ENCODINGr'rJr+ZpopallrB)r-�codingrrr�_do_start_compressionsz$StreamResponse._do_start_compressioncCso|jr|j|j�nO|jjtjd�j�}x.tD]&}|j|krA|j|�dSqAWdS)Nr6)	r$rrrTrZACCEPT_ENCODINGrerrW)r-�requestZaccept_encodingr~rrr�_start_compressions		

z!StreamResponse._start_compressionc�sB|jr
dS|jdk	r#|jS|j|�IdH|j|�S)N)r(r'Z
_prepare_hook�_start)r-r�rrr�prepare%s	zStreamResponse.preparecCs||_|j}|dkr'|j}||_|j}
|j}|_|j}xC|jj�D]2}|jdd�dd�}|j	|	|�qbW|j
r�|j|�|jr|
|kr�t
dj|j���|j�d||<||kre||=n`|jre|j|_|jdkre|
|kr_|j�d||<||kre||=nd}|j|d�|j|t��|j||
�||kr�|r�|
|kr�d||<n|
|kr�d	||<d
j|
d|
d|j|j�}|j||�|S)N�headerr6rz@Using chunked encoding is forbidden for HTTP/{0.major}.{0.minor}r3Fzapplication/octet-streamz
keep-alive�closezHTTP/{}.{} {} {}
r)r&r!r:rSr'r+r%�values�output�addr#r�r"rC�formatZenable_chunking�
_length_checkr]�length�
setdefaultr
r2r5Z
write_headers)r-r�rr�
CONNECTION�DATE�SERVERr{rB�
SET_COOKIEr
�TRANSFER_ENCODINGr:rS�writerrZcookierWZstatus_linerrrr�.sX							
	


	




 zStreamResponse._startc�swt|tttf�s.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())
rH�bytes�	bytearray�
memoryviewr7rFr(rCr'�write)r-�datarrrr�ss	zStreamResponse.writec�s]|jstd��|jdk	s1td��tjdtdd�|jj�IdHdS)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.drain�c�s�t|tttf�s.tdt|���|jr;dS|jdk	sVtd��|jj|�IdHd|_d|_	|jj
|_d|_dS)Nz#data argument must be byte-ish (%r)zResponse has not been startedT)rHr�r�r�r7rFr(r'�	write_eofr&Zoutput_sizer))r-r�rrrr��s				zStreamResponse.write_eofcCs^|jrd}n0|jr<dj|jj|jj�}nd}dj|jj|j|�S)N�eofz{} {} znot preparedz
<{} {} {}>)	r(r/r�r&�methodrOr^rr)r-�inforrr�__repr__�s			!zStreamResponse.__repr__cCs|j|S)N)r*)r-�keyrrr�__getitem__�szStreamResponse.__getitem__cCs||j|<dS)N)r*)r-r�rWrrr�__setitem__�szStreamResponse.__setitem__cCs|j|=dS)N)r*)r-r�rrr�__delitem__�szStreamResponse.__delitem__cCs
t|j�S)N)�lenr*)r-rrr�__len__�szStreamResponse.__len__cCs
t|j�S)N)�iterr*)r-rrr�__iter__�szStreamResponse.__iter__cCstt|��S)N)�hash�id)r-rrr�__hash__�szStreamResponse.__hash__)8rrrr�r.�propertyr/r0rr3r4rrr,r:r;r<rArErJrrKrZr[r]�setterr`rcrrnrmr{rbrr�r�rrr�r�r�rBr�r
r�r�r�r�r�r�r�r�r�r�r�r�rr)r^rr%sl

	%


;	
cs	eZdZddddddddddddd	d�fd
d�Zedd
��Zejejej	dd
��Zedd��Z
e
jdd��Z
e�fdd��Zejdd��Z�fdd�Z�fdd�Z
�fdd�Z�S)r�bodyNrrr�textrr`rccs�|dk	r$|dk	r$td��|dkr<t�}n!t|ttf�s]t|�}|dk	r�d|kr�td��|dk	r-tj|kr�|s�|r*td��q�t|t�s�tdt|���|dkr�d}|dkrd}|d||tj<|j	|�}d}nitj|krc|dk	sT|dk	r�td��n3|dk	r�|dk	r�|d|7}||tj<t
�jd	|d
|d|�|dk	r�||_n	||_
d|_dS)Nz&body and text are not allowed togetherrcz,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)�
ValueErrorrrHrrr{r_�	TypeErrorrF�encoder\r.r�r��_compressed_body)r-r�rrr�rr`rc)r^rrr.�sD	
	zResponse.__init__cCs|jS)N)r )r-rrrr��sz
Response.bodycCsH|dkr!d|_d|_nt|ttf�rK||_d|_n�ytjj|�|_}Wn+tjk
r�t	dt
|���YnXd|_|j}|jr�||kr�|j
}|dk	r�t|�||<||kr�|j||<|jr;x3|jj�D]"\}}||kr|||<qWd|_dS)NFzUnsupported body type %rT)r �
_body_payloadrHr�r�rZPAYLOAD_REGISTRYrT�LookupErrorr�rFr+r"�sizer_r`rrzr�)r-r�r{rBrr�r�rWrrrr��s.					
	cCs,|jdkrdS|jj|jp(d�S)Nzutf-8)r �decoderc)r-rrrr�sz
Response.textcCs�|dks1t|t�s1tdt|���|jdkrId|_|jdkrad|_|j|j�|_d|_d|_	dS)Nztext argument must be str (%r)zapplication/octet-streamz
text/plainzutf-8F)
rHr_r7rFr`rcr�r r�r�)r-r�rrrr�s			csv|jr
dStj|jkr)t�jS|jdk	rEt|j�S|jrRdS|j	dk	rnt|j	�SdSdS)Nr)
r"rrBrr\r]r�r�r�r )r-)r^rrr]+s	

	
zResponse.content_lengthcCstd��dS)Nz#Content length is set automatically)rC)r-rWrrrr]>sc�s�|jr
dS|jdk	r(|j}n	|j}|dk	r�|jjtjksa|jdkrvt�j	�IdHq�|j
r�|j|j�IdHt�j	�IdHq�t�j	|�IdHnt�j	�IdHdS)N���0)r�r�)
r(r�r r&�_methodrZ	METH_HEADr2r\r�r�r�r')r-r�)r^rrr�Bs			zResponse.write_eofcsv|jrftj|jkrf|jsf|jdk	rVtt|j��|jtj<nd|jtj<t�j	|�S)N�0)
r"rrBr+r�r r_r�r\r�)r-r�)r^rrr�Us	"zResponse._startcs�|js|jr"t�j|�S|tjkr�|jdkrMdtjntj}tj	d|�}|j
|j�|j�|_
|j|jtj<tt|j
��|jtj<dS)Nr��wbits)r�r"r\rrrrW�zlib�	MAX_WBITS�compressobj�compressr �flushr�r+rr}r_r�rB)r-r~�	zlib_moder�)r^rrr_s&zResponse._do_start_compression)rrrr.r�r�r�rr{rBr�r]r�r�rrr)r^rr�s5#
r�r�rrrrr`zapplication/json�dumpsc
Cs^|tk	r3|s|r'td��n||�}td|d|d|d|d|d|�S)Nz3only one of data, text, or body should be specifiedr�r�rrrr`)rr�r)r�r�r�rrrr`r�rrrros)#�collectionsri�enum�jsonrsrpr=r��email.utilsrZhttp.cookiesrZ	multidictrrr6rr�helpersr	r
r�httprr
rr�__all__�Enumr�MutableMappingrrr�rrrrr�<module>s*"���