U '7`Zf @sddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl m Z ddl m Z ddlmZmZddlmZmZmZmZmZmZmZmZmZmZddlmZmZddlm Z m!Z!dd l"m#Z#dd l$m%Z%m&Z&m'Z'm(Z(dd l)m*Z*m+Z+m,Z,m-Z-dd l!m.Z.dd l/m0Z0m1Z1dZ2eree5ee1e5e0e;d ddZ?dS)N)Executor) parsedate)Morsel SimpleCookie) TYPE_CHECKINGAnyDictIteratorMappingMutableMappingOptionalTupleUnioncast) CIMultiDictistr)hdrspayload)AbstractStreamWriter)PY_38 HeadersMixinrfc822_formatted_timesentinel) RESPONSESSERVER_SOFTWARE HttpVersion10 HttpVersion11)Payload) JSONEncoder LooseHeaders) ContentCodingStreamResponseResponse json_response) BaseRequestZSameSitesamesitec@seZdZdZdZdZdS)r!deflategzipidentityN)__name__ __module__ __qualname__r'r(r)r-r-G/opt/alt/python38/lib64/python3.8/site-packages/aiohttp/web_response.pyr!4sr!c seZdZdZddddeeeeeddddZe e dd d Z e d dd d Z e edddZ e e dddZe e dddZe edddZdefeeeeeeeeffddddZe ee dddZddddZe edddZe eddd Zdpeedd!d"d#Zdqeee efdd$d%d&Ze d'dd(d)Ze d*dd+d,Zdddd-ddddd.eeeeeeeeeefeee ee eeeedd/ d0d1Zdd-d2eeeedd3d4d5Z e eedfd6d7 Z!e!j"eedd8d9d7Z!e edfd:d; Z#e#j"edd8d Z$e$j"eedd8d?d>Z$e ee%j%dd@dAZ&e&j"eeee'e%j%efdd8dBdAZ&e(j)fe*ddCdDdEZ+eddFdGdHZ,dIddJdKdLZ-dIee.dJdMdNZ/dIe.dJdOdPZ0dddQdRZ1dddSdTZ2e3ddUdVdWZ4dddXdYZ5dre3ddUd[d\Z6edd]d^Z7ee8d_d`daZ9ee8ddbdcddZ:edd_dedfZ;eddgdhZeddkdlZ?e@e dmdndoZAZBS)sr"TNstatusreasonheaders)r1r2r3returncCspd|_d|_d|_d|_d|_t|_d|_d|_d|_ d|_ i|_ |dk rXt ||_ nt |_ |||dS)NFr)_body _keep_alive_chunked _compression_compression_forcer_cookies_req_payload_writer _eof_sent _body_length_stater_headers set_status)selfr1r2r3r-r-r.__init__Gs zStreamResponse.__init__r4cCs |jdk SN)r<rBr-r-r.preparedbszStreamResponse.preparedzasyncio.Task[None]cCst|jddS)Ntask)getattrr;rFr-r-r.rHfszStreamResponse.taskcCs|jSrE)_statusrFr-r-r.r1jszStreamResponse.statuscCs|jSrE)r7rFr-r-r.chunkednszStreamResponse.chunkedcCs|jSrE)r8rFr-r-r. compressionrszStreamResponse.compressioncCs|jSrE)_reasonrFr-r-r.r2vszStreamResponse.reason)r1r2 _RESPONSESr4cCsHt||_|dkr>z||jd}Wntk r<d}YnX||_dS)Nr)intrJ ExceptionrM)rBr1r2rNr-r-r.rAzs  zStreamResponse.set_statuscCs|jSrEr6rFr-r-r. keep_aliveszStreamResponse.keep_alivecCs d|_dS)NFrRrFr-r-r. force_closeszStreamResponse.force_closecCs|jSrE)r>rFr-r-r. body_lengthszStreamResponse.body_lengthcCstdt|jjS)Nzoutput_length is deprecated)warningswarnDeprecationWarningr<Z buffer_sizerFr-r-r. output_lengths zStreamResponse.output_length) chunk_sizer4cCs2d|_tj|jkrtd|dk r.tdtdS)z,Enables automatic chunked transfer encoding.Tz>You can't enable chunked encoding when a content length is setNzChunk size is deprecated #1615)r7rCONTENT_LENGTHr@ RuntimeErrorrVrWrX)rBrZr-r-r.enable_chunked_encodings z&StreamResponse.enable_chunked_encoding)forcer4cCsBt|tkr*|rtjntj}tdtn|dk r2d|_||_ dS)z&Enables response compression encoding.z+Using boolean for force is deprecated #3318NT) typeboolr!r'r)rVrWrXr8r9)rBr^r-r-r.enable_compressions z!StreamResponse.enable_compressionzCIMultiDict[str]cCs|jSrE)r@rFr-r-r.r3szStreamResponse.headerszSimpleCookie[str]cCs|jSrE)r:rFr-r-r.cookiesszStreamResponse.cookies/)expiresdomainmax_agepathsecurehttponlyversionr&) namevaluerdrerfrgrhrirjr&r4c Cs|j|} | dk r,| jdkr,|j|d||j|<|j|} |dk rR|| d<n| ddkrf| d=|dk rv|| d<|dk rt|| d<nd| kr| d=|| d<|dk r|| 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. NrOrdThu, 01 Jan 1970 00:00:00 GMTrezmax-agergrhrirjr&)r:getZ coded_valuepopstr) rBrkrlrdrerfrgrhrirjr&oldcr-r-r. set_cookies0    zStreamResponse.set_cookie)rerg)rkrergr4cCs(|j|d|j|ddd||ddS)zBDelete cookie. Creates new empty expired cookie. NrOrrm)rfrdrerg)r:rors)rBrkrergr-r-r. del_cookieszStreamResponse.del_cookiecstjSrE)supercontent_lengthrF __class__r-r.rvszStreamResponse.content_lengthrlr4cCsD|dk r0t|}|jrtdt||jtj<n|jtjddS)NzZsz?StreamResponse._generate_content_type_header..)joinritemsr|r@)rBrZparamsrr-r-r.r}Us z,StreamResponse._generate_content_type_headercodingr4cs:|tjkr6|j|jtj<|j|j|jtj ddSrE) r!r)rlr@rCONTENT_ENCODINGr<raZpopallr[)rBrr-r-r._do_start_compressionas z$StreamResponse._do_start_compressionr%requestr4cs\|jr||jIdHn>|jtjd}tD]$}|j|kr2||IdHdSq2dS)NrO) r9rr3rnrZACCEPT_ENCODINGrr!rl)rBrZaccept_encodingrr-r-r._start_compressionjs z!StreamResponse._start_compressioncs*|jr dS|jdk r|jS||IdHSrE)r=r<_startrBrr-r-r.preparets  zStreamResponse.preparecsB||_|j}|_|IdH||IdH|IdH|SrE)r;r<_prepare_headersZ _prepare_hook_write_headers)rBrwriterr-r-r.r|s  zStreamResponse._startcs|j}|j}|j}|dkr |j}||_|j}|j}|jD]&}|jdddd}| t j |q<|j rz| |IdH|jr|tkrtd|j|d|t j<t j|kr|t j=nr|jr0|j|_|jdkr|tkr |d|t j<t j|kr|t j=nd}n|tkr0|jdkr0|t j=|t jd|t jt|t jtt j|kr|r|t krd |t j<n|tkrd |t j<dS) NrO)headerrz@Using chunked encoding is forbidden for HTTP/{0.major}.{0.minor}rKF)defgrz keep-aliveclose)!r;r<r6rSrjr@r:valuesoutputaddrZ SET_COOKIEr8rr7rr\formatZenable_chunkingZTRANSFER_ENCODINGr[ _length_checkrvZlengthr1 setdefaultrZDATErZSERVERrZ CONNECTIONr)rBrrrSrjr3Zcookierlr-r-r.rsX            zStreamResponse._prepare_headerscsF|j}|j}|j}d|d|d|j|j}|||jIdHdS)NzHTTP/{}.{} {} {}rr)r;r<rjrrJrMZ write_headersr@)rBrrrjZ status_liner-r-r.rszStreamResponse._write_headersdatar4cs6|jrtd|jdkr td|j|IdHdS)Nz%Cannot call write() after write_eof()z$Cannot call write() before prepare())r=r\r<writerBrr-r-r.rs  zStreamResponse.writecs$tjdtdd|jIdHdS)Nz2drain method is deprecated, use await resp.write()) stacklevel)rVrWrXr<drainrFr-r-r.rs zStreamResponse.draincs<|jr dS|j|IdHd|_d|_|jj|_d|_dS)NT)r=r< write_eofr;Z output_sizer>rr-r-r.rs zStreamResponse.write_eofcCsN|jr d}n$|jr,|jjd|jjd}nd}d|jjd|jd|dS)Neof z not prepared<>)r=rGr;methodrgrxr*r2)rBinfor-r-r.__repr__s zStreamResponse.__repr__)keyr4cCs |j|SrEr?rBrr-r-r. __getitem__szStreamResponse.__getitem__)rrlr4cCs||j|<dSrEr)rBrrlr-r-r. __setitem__szStreamResponse.__setitem__cCs |j|=dSrErrr-r-r. __delitem__szStreamResponse.__delitem__cCs t|jSrE)lenr?rFr-r-r.__len__szStreamResponse.__len__cCs t|jSrE)iterr?rFr-r-r.__iter__szStreamResponse.__iter__cCs tt|SrE)hashidrFr-r-r.__hash__ szStreamResponse.__hash__)otherr4cCs||kSrEr-)rBrr-r-r.__eq__szStreamResponse.__eq__)N)N)r)Cr*r+r,rrPr rpr rCpropertyr`rGrHr1rKrLr2rr r rArSrTrUrYr]rr!rar3rbrsrtrvsetterr{r~rrrrrrr}rrrrrrrbytesrrrrrrrrrr rrobjectr __classcell__r-r-rwr.r"Cs     5       :    r"c sVeZdZdddddddddd eeeeeeeeeeeeeeeedd fddZ e ee e e fddd Zejejejfe eedd d d Ze eedd d Zejedddd Ze eedfdd ZejeeddddZd"e ddfdd Zdedfdd ZeddddZeddfd d! ZZS)#r#Nr/) bodyr1r2textr3r{r~zlib_executor_size zlib_executor) rr1r2rr3r{r~rrr4c s^|dk r|dk rtd|dkr(t} nt|ts|jdkrd|_|jdkr d|_||j|_d|_d|_dS)NrrrF)r{r~rr5rr)rBrr-r-r.rs  csX|jr dStj|jkrtjS|jdk r2t|jS|jrsj  0     Rf