bg-dZddlZddlZddlmZmZmZmZmZm Z ddl m Z ddl m Z ddlmZddlmZdd lmZd ZGd d eZeddZeddZeeegedfZeed gedfZGdde ZdedefdZdedd defdZeZ ddl m!Z!e!jZ"ese"ZdSdS#e#$rYdSwxYw)z"Http related parsers and protocol.N)Any AwaitableCallable NamedTupleOptionalUnion) CIMultiDict)AbstractStreamWriter) BaseProtocol)ZLibCompressor) NO_EXTENSIONS) StreamWriter HttpVersion HttpVersion10 HttpVersion11c$eZdZUeed<eed<dS)rmajorminorN)__name__ __module__ __qualname__int__annotations__J/opt/cloudlinux/venv/lib64/python3.11/site-packages/aiohttp/http_writer.pyrrs" JJJ JJJJJrrCIMultiDict[str]c eZdZ ddedejdededdf dZe de ej fdZ e defd Z dd Zd ejfd ed eddfdZdeddfdZddddedededdfdZdeddddfdZd deddfdZddZdS)!rNprotocolloop on_chunk_senton_headers_sentreturnc||_||_d|_d|_d|_d|_d|_d|_d|_||_ ||_ dS)NFr) _protocolr!lengthchunked buffer_size output_size_eof _compress _drain_waiter_on_chunk_sent_on_headers_sent)selfr r!r"r#s r__init__zStreamWriter.__init__s\"    37!.;2Arc|jjSN)r& transportr0s rr4zStreamWriter.transport5s ~''rc|jSr3)r&r5s rr zStreamWriter.protocol9s ~rcd|_dS)NT)r(r5s renable_chunkingzStreamWriter.enable_chunking=s  rdeflateencodingstrategyc2t|||_dS)N)r:r;)r r,)r0r:r;s renable_compressionzStreamWriter.enable_compression@s(HMMMrchunkct|}|xj|z c_|xj|z c_|j}|jjr||rtd||dS)Nz!Cannot write to closing transport) lenr)r*r4r& connected is_closingConnectionResetErrorwrite)r0r>sizer4s r_writezStreamWriter._writeEs5zz D  D N ~' L9+< @T@T@V@V+<&'JKK KrTi)drainLIMITrGrHcK|j||d{Vt|tr-|jt |kr|d}|j$|j|d{V}|sdS|jDt |}|j|kr|j|z |_n|d|j}d|_|sdS|ry|j r-dt |z d}||zdz}| ||j |kr'|r'd|_ | d{VdSdSdSdS)zWrites chunk of data to a stream. write_eof() indicates end of stream. writer can't be used after write_eof() method being called. write() return drain future. Ncr%x asciis )r. isinstance memoryviewnbytesr@castr,compressr'r(encoderFr)rG)r0r>rGrH chunk_len chunk_len_pres rrDzStreamWriter.writeNs   *%%e,, , , , , , , , eZ ( ( (|s5zz)) 3 > %.11%88888888E  ; "E I{i''"kI5 m m, F  #| 8!)CJJ!6 > >w G G %-7 KK   %''E'#$ jjll""""""""" # #('''r status_lineheadersrcK|j||d{Vt||}||dS)z*Write request/response status and headers.N)r/_serialize_headersrF)r0rUrVbufs r write_headerszStreamWriter.write_headersys`  ,''00 0 0 0 0 0 0 0!g66 Crrc>K|jrdS|r"|j||d{V|jru|r |j|d{V}||jz }|r4|jr-dt |zd}||zdz}n9|jr2|r.dt |zd}||zdz}nd}|r||| d{Vd|_dS)NrKrLs 0 s0 T) r+r.r,rQflushr(r@rRrFrG)r0r>rSs r write_eofzStreamWriter.write_eofsh 9  F  -T(4%%e,, , , , , , , , > ) ="n55e<<<<<<<< T^))++ +E = =%E 2::7CC !E),<<| ))!)CJJ!6 > >w G GI%-0@@EE(E   KK   jjll rcdK|jj!|jd{VdSdS)zFlush the write buffer. The intended use is to write await w.write(data) await w.drain() N)r&r4 _drain_helperr5s rrGzStreamWriter.drainsG > # /...00 0 0 0 0 0 0 0 0 0 0 /r)NN)r$N)r)rrrr asyncioAbstractEventLoop_T_OnChunkSent_T_OnHeadersSentr1propertyr Transportr4r r8zlibZ_DEFAULT_STRATEGYstrrr=bytesrFboolrDrZr]rGrrrrrs )-,0 BBB'B& B * B  BBBB,(8G$56(((X(,X(9PNNN36N NNNN Ed.2)#)#)#)#&*)#:=)# )#)#)#)#V  );      UT< 1 1 1 1 1 1rrstringr$c4d|vsd|vrtd|S)N  zRNewline or carriage return detected in headers. Potential header injection attack.) ValueError)rks r _safe_headerrps1 v~~ 1    MrrUrVcd|D}|dzd|zdz}|dS)Nc3`K|])\}}t|dzt|zV*dS)z: N)rp).0kvs r z(_py_serialize_headers..s<XX1<??T)LOO;XXXXXXrz z zutf-8)itemsjoinrR)rUrV headers_genlines r_py_serialize_headersr{sOXX XXXK  &++k":": :Z GD ;;w  r)$__doc__r`rftypingrrrrrr multidictr abcr base_protocolr compression_utilsr helpersr__all__rrrrirbrcrrhrpr{rXaiohttp._http_writer _http_writer_c_serialize_headers ImportErrorrrrrs(( HHHHHHHHHHHHHHHH!!!!!!%%%%%%''''''------"""""" K*  Aq!!  Aq!! (E7IdO#;<=H&8%99T?%JKLM1M1M1M1M1'M1M1M1` s 5G E    + //////': 2122   DD s2CCC