a
     ÑOcOk  ã                   @   sÚ  d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d dl
mZ d dlmZmZ d dlmZmZmZmZmZmZmZmZmZmZ d dlmZmZ ddlmZmZ ddl m!Z! dd	l"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+ dd
l,m-Z-m.Z.m/Z/m0Z0 ddlm1Z1 ddl2m3Z3m4Z4 dZ5e�rDddl6m7Z7 ee8ef Z9nej jZ9e$�s\dej:d< G dd„ dej;ƒZ<G dd„ de9e'ƒZ=G dd„ de=ƒZ>e*fddddddej?dœeee8 ee@ eAee8 ee4 e8e3e>dœ	dd„ZBdS )é    N)ÚExecutor)ÚMorselÚSimpleCookie)
ÚTYPE_CHECKINGÚAnyÚDictÚIteratorÚMappingÚMutableMappingÚOptionalÚTupleÚUnionÚcast)ÚCIMultiDictÚistré   )ÚhdrsÚpayload)ÚAbstractStreamWriter)	ÚETAG_ANYÚPY_38ÚQUOTED_ETAG_REÚETagÚHeadersMixinÚparse_http_dateÚrfc822_formatted_timeÚsentinelÚvalidate_etag_value)Ú	RESPONSESÚSERVER_SOFTWAREÚHttpVersion10ÚHttpVersion11)ÚPayload)ÚJSONEncoderÚLooseHeaders)ÚContentCodingÚStreamResponseÚResponseÚjson_response)ÚBaseRequestÚSameSiteÚsamesitec                   @   s   e Zd ZdZdZdZdS )r%   ÚdeflateÚgzipÚidentityN)Ú__name__Ú
__module__Ú__qualname__r,   r-   r.   © r2   r2   úK/var/www/html/gsl.tools/lib/python3.9/site-packages/aiohttp/web_response.pyr%   =   s   r%   c                       s  e Zd ZdZddddœeee ee ddœdd„Ze	e
dœd	d
„ƒZe	ddœdd„ƒZe	edœdd„ƒZe	e
dœdd„ƒZe	e
dœdd„ƒZe	edœdd„ƒZdefeee eeeeef f ddœdd„Ze	ee
 dœdd„ƒZddœdd„Ze	edœdd„ƒZe	edœdd „ƒZdsee dd!œd"d#„Zdteee
ef  dd$œd%d&„Ze	d'dœd(d)„ƒZe	d*dœd+d,„ƒZdddd-ddddd.œeeee ee eeeef  eee
 ee
 ee ee dd/œd0d1„Zdd-d2œeee edd3œd4d5„Z e	ee dœ‡ fd6d7„ƒZ!e!j"ee dd8œd9d7„ƒZ!e	edœ‡ fd:d;„ƒZ#e#j"edd8œd<d;„ƒZ#e	ee dœ‡ fd=d>„ƒZ$e$j"ee dd8œd?d>„ƒZ$e	ee%j% dœd@dA„ƒZ&e&j"eeee'e%j%ef  dd8œdBdA„ƒZ&e	ee( dœdCdD„ƒZ)e)j"eee(ef  dd8œdEdD„ƒZ)e*j+fe,ddFœdGdH„Z-eddIœdJdK„Z.dLddMœdNdO„Z/dLee0 dMœdPdQ„Z1dLe0dMœdRdS„Z2ddœdTdU„Z3ddœdVdW„Z4e5ddXœdYdZ„Z6ddœd[d\„Z7due5ddXœd^d_„Z8edœd`da„Z9ee:dbœdcdd„Z;ee:ddeœdfdg„Z<eddbœdhdi„Z=edœdjdk„Z>e?e dœdldm„Z@edœdndo„ZAeBe
dpœdqdr„ZC‡  ZDS )vr&   TéÈ   N©ÚstatusÚreasonÚheaders)r6   r7   r8   Úreturnc                C   sp   d | _ d | _d| _d| _d | _tƒ | _d | _d | _d| _	d| _
i | _|d urXt|ƒ| _ntƒ | _|  ||¡ d S )NFr   )Ú_bodyÚ_keep_aliveÚ_chunkedÚ_compressionÚ_compression_forcer   Ú_cookiesÚ_reqÚ_payload_writerÚ	_eof_sentÚ_body_lengthÚ_stater   Ú_headersÚ
set_status)Úselfr6   r7   r8   r2   r2   r3   Ú__init__P   s    zStreamResponse.__init__©r9   c                 C   s
   | j d uS ©N)rA   ©rG   r2   r2   r3   Úpreparedk   s    zStreamResponse.preparedzOptional[asyncio.Task[None]]c                 C   s   | j r| j jS d S d S rJ   )r@   ÚtaskrK   r2   r2   r3   rM   o   s    zStreamResponse.taskc                 C   s   | j S rJ   )Ú_statusrK   r2   r2   r3   r6   v   s    zStreamResponse.statusc                 C   s   | j S rJ   )r<   rK   r2   r2   r3   Úchunkedz   s    zStreamResponse.chunkedc                 C   s   | j S rJ   )r=   rK   r2   r2   r3   Úcompression~   s    zStreamResponse.compressionc                 C   s   | j S rJ   )Ú_reasonrK   r2   r2   r3   r7   ‚   s    zStreamResponse.reason)r6   r7   Ú
_RESPONSESr9   c                 C   sT   | j rJ dƒ‚t|ƒ| _|d u rJz|| j d }W n tyH   d}Y n0 || _d S )NzGCannot change the response status code after the headers have been sentr   Ú )rL   ÚintrN   Ú	ExceptionrQ   )rG   r6   r7   rR   r2   r2   r3   rF   †   s    ÿ

zStreamResponse.set_statusc                 C   s   | j S rJ   ©r;   rK   r2   r2   r3   Ú
keep_alive—   s    zStreamResponse.keep_alivec                 C   s
   d| _ d S )NFrV   rK   r2   r2   r3   Úforce_close›   s    zStreamResponse.force_closec                 C   s   | j S rJ   )rC   rK   r2   r2   r3   Úbody_lengthž   s    zStreamResponse.body_lengthc                 C   s   t  dt¡ | jsJ ‚| jjS )Nzoutput_length is deprecated)ÚwarningsÚwarnÚDeprecationWarningrA   Úbuffer_sizerK   r2   r2   r3   Úoutput_length¢   s    
zStreamResponse.output_length)Ú
chunk_sizer9   c                 C   s2   d| _ tj| jv rtdƒ‚|dur.t dt¡ dS )z,Enables automatic chunked transfer encoding.Tz>You can't enable chunked encoding when a content length is setNzChunk size is deprecated #1615)r<   r   ÚCONTENT_LENGTHrE   ÚRuntimeErrorrZ   r[   r\   )rG   r_   r2   r2   r3   Úenable_chunked_encoding¨   s    ÿz&StreamResponse.enable_chunked_encoding)Úforcer9   c                 C   sT   t |ƒtkr*|rtjntj}t dt¡ n|durDt|tƒsDJ dƒ‚d| _	|| _
dS )z&Enables response compression encoding.z+Using boolean for force is deprecated #3318Nz1force should one of None, bool or ContentEncodingT)ÚtypeÚboolr%   r,   r.   rZ   r[   r\   Ú
isinstancer=   r>   )rG   rc   r2   r2   r3   Úenable_compression³   s    ÿÿz!StreamResponse.enable_compressionzCIMultiDict[str]c                 C   s   | j S rJ   )rE   rK   r2   r2   r3   r8   Å   s    zStreamResponse.headerszSimpleCookie[str]c                 C   s   | j S rJ   )r?   rK   r2   r2   r3   ÚcookiesÉ   s    zStreamResponse.cookiesú/)ÚexpiresÚdomainÚmax_ageÚpathÚsecureÚhttponlyÚversionr+   )ÚnameÚvaluerj   rk   rl   rm   rn   ro   rp   r+   r9   c                C   sæ   | j  |¡}|dur,|jdkr,| j  |d¡ || j |< | j | }|durR||d< n| d¡dkrf|d= |durv||d< |durŒt|ƒ|d< nd|v rš|d= ||d< |dur²||d< |durÂ||d	< |	durÒ|	|d
< |
durâ|
|d< dS )zŸSet or update response cookie.

        Sets new cookie or updates existent with new value.
        Also updates only those params which are not None.
        NrS   rj   úThu, 01 Jan 1970 00:00:00 GMTrk   zmax-agerm   rn   ro   rp   r+   )r?   ÚgetÚcoded_valueÚpopÚstr)rG   rq   rr   rj   rk   rl   rm   rn   ro   rp   r+   ÚoldÚcr2   r2   r3   Ú
set_cookieÍ   s0    


zStreamResponse.set_cookie)rk   rm   )rq   rk   rm   r9   c                C   s(   | j  |d¡ | j|ddd||d� dS )zBDelete cookie.

        Creates new empty expired cookie.
        NrS   r   rs   )rl   rj   rk   rm   )r?   rv   rz   )rG   rq   rk   rm   r2   r2   r3   Ú
del_cookie   s    úzStreamResponse.del_cookiec                    s   t ƒ jS rJ   )ÚsuperÚcontent_lengthrK   ©Ú	__class__r2   r3   r}     s    zStreamResponse.content_length©rr   r9   c                 C   sD   |d ur0t |ƒ}| jrtdƒ‚t|ƒ| jtj< n| j tjd ¡ d S )Nz<You can't set content length when chunked encoding is enable)rT   r<   ra   rw   rE   r   r`   rv   ©rG   rr   r2   r2   r3   r}     s    ÿc                    s   t ƒ jS rJ   )r|   Úcontent_typerK   r~   r2   r3   r‚   #  s    zStreamResponse.content_typec                 C   s   | j  t|ƒ| _|  ¡  d S rJ   )r‚   rw   Ú_content_typeÚ_generate_content_type_headerr�   r2   r2   r3   r‚   (  s    
c                    s   t ƒ jS rJ   )r|   ÚcharsetrK   r~   r2   r3   r…   .  s    zStreamResponse.charsetc                 C   sZ   | j }|dkrtdƒ‚| jd us$J ‚|d u r<| j dd ¡ nt|ƒ ¡ | jd< |  ¡  d S )Núapplication/octet-streamzYSetting charset for application/octet-stream doesn't make sense, setup content_type firstr…   )r‚   ra   Ú_content_dictrv   rw   Úlowerr„   )rG   rr   Úctyper2   r2   r3   r…   3  s    ÿc                 C   s   t | j tj¡ƒS )zuThe value of Last-Modified HTTP header, or None.

        This header is represented as a `datetime` object.
        )r   rE   rt   r   ÚLAST_MODIFIEDrK   r2   r2   r3   Úlast_modifiedB  s    zStreamResponse.last_modifiedc                 C   sŠ   |d u r| j  tjd ¡ nlt|ttfƒrJt dt 	t
 |¡¡¡| j tj< n<t|tjƒrpt d| ¡ ¡| j tj< nt|tƒr†|| j tj< d S )Nz%a, %d %b %Y %H:%M:%S GMT)rE   rv   r   rŠ   rf   rT   ÚfloatÚtimeÚstrftimeÚgmtimeÚmathÚceilÚdatetimeÚutctimetuplerw   r�   r2   r2   r3   r‹   J  s    ÿÿ
c                 C   sZ   | j  tj¡}|sd S |tkr(ttd�S t |¡}|s:d S | dd¡\}}tt	|ƒ|d�S )N)rr   r   é   )Úis_weakrr   )
rE   rt   r   ÚETAGr   r   r   Ú	fullmatchÚgroupre   )rG   Zquoted_valueÚmatchr•   rr   r2   r2   r3   Úetag[  s    

þzStreamResponse.etagc                 C   sÞ   |d u r| j  tjd ¡ nÀt|tƒr,|tks@t|tƒrN|jtkrNt| j tj< nŒt|tƒrvt	|ƒ d|› d�| j tj< ndt|tƒrÆt|jtƒrÆt	|jƒ |j
rªd|j› d�nd|j› d�}|| j tj< ntdt|ƒ› d�ƒ‚d S )Nú"zW/"zUnsupported etag type: z . etag must be str, ETag or None)rE   rv   r   r–   rf   rw   r   r   rr   r   r•   Ú
ValueErrorrd   )rG   rr   Z	hdr_valuer2   r2   r3   rš   k  s$    ÿÿ

"ÿ)ÚCONTENT_TYPEr9   c                 C   s^   | j d usJ ‚| jd usJ ‚d dd„ | j  ¡ D ƒ¡}|rJ| jd | }n| j}|| j|< d S )Nz; c                 s   s    | ]\}}|› d |› �V  qdS )ú=Nr2   )Ú.0ÚkÚvr2   r2   r3   Ú	<genexpr>…  ó    z?StreamResponse._generate_content_type_header.<locals>.<genexpr>)r‡   rƒ   ÚjoinÚitemsrE   )rG   r�   Úparamsr‰   r2   r2   r3   r„   €  s    z,StreamResponse._generate_content_type_header©Úcodingr9   c                 Ã   sH   |t jkrD| jd usJ ‚|j| jtj< | j |j¡ | j tj	d ¡ d S rJ   )
r%   r.   rA   rr   rE   r   ÚCONTENT_ENCODINGrg   Zpopallr`   )rG   r¨   r2   r2   r3   Ú_do_start_compressionŒ  s
    
z$StreamResponse._do_start_compressionr)   ©Úrequestr9   c                 Ã   s\   | j r|  | j ¡I d H  n>|j tjd¡ ¡ }tD ]$}|j|v r2|  |¡I d H   d S q2d S )NrS   )	r>   rª   r8   rt   r   ÚACCEPT_ENCODINGrˆ   r%   rr   )rG   r¬   Úaccept_encodingr¨   r2   r2   r3   Ú_start_compression•  s    
z!StreamResponse._start_compressionc                 Ã   s*   | j r
d S | jd ur| jS |  |¡I d H S rJ   )rB   rA   Ú_start©rG   r¬   r2   r2   r3   ÚprepareŸ  s
    
zStreamResponse.preparec                 Ã   sB   || _ |j }| _|  ¡ I d H  | | ¡I d H  |  ¡ I d H  |S rJ   )r@   rA   Ú_prepare_headersZ_prepare_hookÚ_write_headers)rG   r¬   Úwriterr2   r2   r3   r°   §  s    zStreamResponse._startc                 Ã   sÌ  | j }|d usJ ‚| j}|d us$J ‚| j}|d u r8|j}|| _|j}| j}| j ¡ D ]&}|jdd�dd … }| 	t
j|¡ qT| jr’|  |¡I d H  | jrÖ|tkr°td |j¡ƒ‚| ¡  d|t
j< t
j|v rÔ|t
j= n~| j�rT| j|_|jd u �r6|tk�r0| jdk�r0| ¡  d|t
j< t
j|v �r4|t
j= nd}n|tk�rT| jdv �rT|t
j= | jd	v�rn| t
jd
¡ | t
jtƒ ¡ | t
jt¡ t
j|v�rÈ|�r´|t k�rÈd|t
j< n|tk�rÈd|t
j< d S )NrS   )Úheaderr   z@Using chunked encoding is forbidden for HTTP/{0.major}.{0.minor}rO   éÌ   F)éd   ée   éf   ég   r·   ©r·   i0  r†   z
keep-aliveÚclose)!r@   rA   r;   rW   rp   rE   r?   ÚvaluesÚoutputÚaddr   Z
SET_COOKIEr=   r¯   r<   r!   ra   ÚformatZenable_chunkingZTRANSFER_ENCODINGr`   Ú_length_checkr}   Úlengthr6   Ú
setdefaultr�   ZDATEr   ZSERVERr   Z
CONNECTIONr    )rG   r¬   rµ   rW   rp   r8   Úcookierr   r2   r2   r3   r³   ±  s^    ÿÿ






zStreamResponse._prepare_headersc                 Ã   s^   | j }|d usJ ‚| j}|d us$J ‚|j}d |d |d | j| j¡}| || j¡I d H  d S )NzHTTP/{}.{} {} {}r   r   )r@   rA   rp   rÁ   rN   rQ   Zwrite_headersrE   )rG   r¬   rµ   rp   Zstatus_liner2   r2   r3   r´   ì  s    ÿzStreamResponse._write_headers©Údatar9   c                 Ã   sV   t |tttfƒs J dt|ƒ ƒ‚| jr.tdƒ‚| jd u r@tdƒ‚| j |¡I d H  d S )Nú#data argument must be byte-ish (%r)z%Cannot call write() after write_eof()z$Cannot call write() before prepare())	rf   ÚbytesÚ	bytearrayÚ
memoryviewrd   rB   ra   rA   Úwrite©rG   rÇ   r2   r2   r3   rÌ   ø  s    
ÿ
þ
zStreamResponse.writec                 Ã   sD   | j rJ dƒ‚| jd us J dƒ‚tjdtdd� | j ¡ I d H  d S )NzEOF has already been sentúResponse has not been startedz2drain method is deprecated, use await resp.write()r”   )Ú
stacklevel)rB   rA   rZ   r[   r\   ÚdrainrK   r2   r2   r3   rÐ     s    ýzStreamResponse.drainr£   c                 Ã   sn   t |tttfƒs J dt|ƒ ƒ‚| jr*d S | jd us<J dƒ‚| j |¡I d H  d| _d | _| jj	| _
d | _d S )NrÈ   rÎ   T)rf   rÉ   rÊ   rË   rd   rB   rA   Ú	write_eofr@   Zoutput_sizerC   rÍ   r2   r2   r3   rÑ     s    
ÿ
þ
zStreamResponse.write_eofc                 C   s\   | j rd}n2| jr:| jd us J ‚| jj› d| jj› d�}nd}d| jj› d| j› d|› d�S )NÚeofú znot preparedú<ú>)rB   rL   r@   Úmethodrm   r   r/   r7   )rG   Úinfor2   r2   r3   Ú__repr__  s    zStreamResponse.__repr__)Úkeyr9   c                 C   s
   | j | S rJ   ©rD   ©rG   rÙ   r2   r2   r3   Ú__getitem__(  s    zStreamResponse.__getitem__)rÙ   rr   r9   c                 C   s   || j |< d S rJ   rÚ   )rG   rÙ   rr   r2   r2   r3   Ú__setitem__+  s    zStreamResponse.__setitem__c                 C   s   | j |= d S rJ   rÚ   rÛ   r2   r2   r3   Ú__delitem__.  s    zStreamResponse.__delitem__c                 C   s
   t | jƒS rJ   )ÚlenrD   rK   r2   r2   r3   Ú__len__1  s    zStreamResponse.__len__c                 C   s
   t | jƒS rJ   )ÚiterrD   rK   r2   r2   r3   Ú__iter__4  s    zStreamResponse.__iter__c                 C   s   t t| ƒƒS rJ   )ÚhashÚidrK   r2   r2   r3   Ú__hash__7  s    zStreamResponse.__hash__)Úotherr9   c                 C   s   | |u S rJ   r2   )rG   ræ   r2   r2   r3   Ú__eq__:  s    zStreamResponse.__eq__)N)N)r£   )Er/   r0   r1   rÂ   rT   r   rw   r$   rH   Úpropertyre   rL   rM   r6   rO   rP   r7   r   r	   r   rF   rW   rX   rY   r^   rb   r   r%   rg   r8   rh   rz   r{   r}   Úsetterr‚   r…   r’   r‹   rŒ   r   rš   r   r�   r   r„   rª   r¯   r   r²   r°   r³   r´   rÉ   rÌ   rÐ   rÑ   rØ   r   rÜ   rÝ   rÞ   rà   r   râ   rå   Úobjectrç   Ú__classcell__r2   r2   r~   r3   r&   L   sê   ûúüû ÿþôó4ÿ
þþÿþ	

;

r&   c                       sV  e Zd Zddddddddddœ	eeee ee ee ee ee ee ee ddœ
‡ fdd„Z	e
eeeef  dœdd	„ƒZejejejfeeedd
œdd	„ƒZe
ee dœdd„ƒZejeddœdd„ƒZe
ee dœ‡ fdd„ƒZejee ddœdd„ƒZd"eddœ‡ fdd„Zdedœ‡ fdd„Zeddœdd„Zeddœ‡ fd d!„Z‡  ZS )#r'   Nr4   )	Úbodyr6   r7   Útextr8   r‚   r…   Úzlib_executor_sizeÚzlib_executor)
rì   r6   r7   rí   r8   r‚   r…   rî   rï   r9   c       	            s^  |d ur|d urt dƒ‚|d u r(tƒ }
nt|tƒs<t|ƒ}
n|}
|d urXd|v rXt dƒ‚|d urÐtj|
v r||sr|rÎt dƒ‚nRt|tƒs–tdt|ƒ ƒ‚|d u r¢d}|d u r®d}|d | |
tj< | |¡}d }nNtj|
v rô|d usê|d uròt dƒ‚n*|d u�r|d u�r|d| 7 }||
tj< t	ƒ j
|||
d	� |d u�rB|| _n|| _d | _|| _|	| _d S )
Nz&body and text are not allowed togetherr…   z,charset must not be in content_type argumentzPpassing both Content-Type header and content_type or charset params is forbiddenútext argument must be str (%r)ú
text/plainúutf-8z
; charset=r5   )rœ   r   rf   r   r�   rw   Ú	TypeErrorrd   Úencoder|   rH   rí   rì   Ú_compressed_bodyÚ_zlib_executor_sizeÚ_zlib_executor)rG   rì   r6   r7   rí   r8   r‚   r…   rî   rï   Zreal_headersr~   r2   r3   rH   ?  sP    


ÿ


ÿ



zResponse.__init__rI   c                 C   s   | j S rJ   )r:   rK   r2   r2   r3   rì   …  s    zResponse.body)rì   r�   r`   r9   c                 C   sè   |d u rd | _ d| _nÈt|ttfƒr2|| _ d| _n¬ztj |¡ | _ }W n$ tjyl   t	dt
|ƒ ƒ‚Y n0 d| _| j}| js¢||vr¢|j}|d ur¢t|ƒ||< ||vr´|j||< |jrÞ|j ¡ D ]\}}||vrÄ|||< qÄd | _d S )NFzUnsupported body type %rT)r:   Ú_body_payloadrf   rÉ   rÊ   r   ZPAYLOAD_REGISTRYrt   ÚLookupErrorrœ   rd   rE   r<   Úsizerw   r‚   r8   r¥   rõ   )rG   rì   r�   r`   r8   rú   rÙ   rr   r2   r2   r3   rì   ‰  s.    

c                 C   s    | j d u rd S | j  | jpd¡S )Nrò   )r:   Údecoder…   rK   r2   r2   r3   rí   ²  s    
zResponse.text)rí   r9   c                 C   s`   |d u s"t |tƒs"J dt|ƒ ƒ‚| jdkr2d| _| jd u rBd| _| | j¡| _d| _d | _d S )Nrð   r†   rñ   rò   F)	rf   rw   rd   r‚   r…   rô   r:   rø   rõ   )rG   rí   r2   r2   r3   rí   ¸  s    
ÿ
þ

c                    sX   | j r
d S tj| jv rtƒ jS | jd ur2t| jƒS | jr<d S | j	d urPt| j	ƒS dS d S )Nr   )
r<   r   r`   rE   r|   r}   rõ   rß   rø   r:   rK   r~   r2   r3   r}   Ç  s    



zResponse.content_lengthr€   c                 C   s   t dƒ‚d S )Nz#Content length is set automatically)ra   r�   r2   r2   r3   r}   Ú  s    r£   rÆ   c                 ƒ   sä   | j r
d S | jd u r| j}n| j}|r4J d|›�ƒ‚| jd usBJ ‚| jd usPJ ‚|d urÐ| jjtjksp| jdv r‚t	ƒ  
¡ I d H  qà| jr¶tt|ƒ}| | j¡I d H  t	ƒ  
¡ I d H  qàt	ƒ  
tt|ƒ¡I d H  nt	ƒ  
¡ I d H  d S )Nzdata arg is not supported, got r¼   )rB   rõ   r:   r@   rA   Ú_methodr   Z	METH_HEADrN   r|   rÑ   rø   r   r"   rÌ   rÉ   )rG   rÇ   rì   r   r~   r2   r3   rÑ   Þ  s"    

zResponse.write_eofr)   r«   c                 ƒ   sX   | j sFtj| jvrF| jsF| jd ur:tt| jƒƒ| jtj< nd| jtj< tƒ  	|¡I d H S )NÚ0)
r<   r   r`   rE   rø   r:   rw   rß   r|   r°   r±   r~   r2   r3   r°   ô  s    
zResponse._start)Ú	zlib_moder9   c                 C   sB   |dksJ ‚t j|d�}| j}|d us*J ‚| |¡| ¡  | _d S )Nr   )Úwbits)ÚzlibÚcompressobjr:   ÚcompressÚflushrõ   )rG   rþ   r  Úbody_inr2   r2   r3   Ú_compress_bodyþ  s
    zResponse._compress_bodyr§   c                 ƒ   sÌ   | j s| jrtƒ  |¡I d H S |tjkrÈ|tjkr<dtj ntj}| j	}|d usTJ ‚| j
d urŠt|ƒ| j
krŠt ¡  | j| j|¡I d H  n
|  |¡ | j}|d us¦J ‚|j| jtj< tt|ƒƒ| jtj< d S )Né   )rø   r<   r|   rª   r%   r.   r-   r   Ú	MAX_WBITSr:   rö   rß   ÚasyncioZget_event_loopZrun_in_executorr÷   r  rõ   rr   rE   r   r©   rw   r`   )rG   r¨   rþ   r  Zbody_outr~   r2   r3   rª     s&    
ÿÿþ
ÿ
zResponse._do_start_compression)r£   )r/   r0   r1   r   rT   r   rw   r$   r   rH   rè   r   rÉ   r"   rì   ré   r   r�   r`   r   rí   r}   rÑ   r   r°   r  r%   rª   rë   r2   r2   r~   r3   r'   >  sX   õôFüû(
r'   r4   zapplication/json)rí   rì   r6   r7   r8   r‚   Údumps)	rÇ   rí   rì   r6   r7   r8   r‚   r	  r9   c                C   s6   | t ur"|s|rtdƒ‚n|| ƒ}t||||||d�S )Nz3only one of data, text, or body should be specified)rí   rì   r6   r7   r8   r‚   )r   rœ   r'   )rÇ   rí   rì   r6   r7   r8   r‚   r	  r2   r2   r3   r(   "  s    
úr(   )Cr  Úcollections.abcÚcollectionsr’   ÚenumÚjsonr�   r�   rZ   r   Úconcurrent.futuresr   Úhttp.cookiesr   r   Útypingr   r   r   r   r	   r
   r   r   r   r   Z	multidictr   r   rS   r   r   Úabcr   Zhelpersr   r   r   r   r   r   r   r   r   Úhttpr   r   r    r!   r"   Ztypedefsr#   r$   Ú__all__Zweb_requestr)   rw   Z	BaseClassÚ	_reservedÚEnumr%   r&   r'   r	  rÉ   rT   r(   r2   r2   r2   r3   Ú<module>   sh   0,
   u fÿ÷ö