id9~ddlZddlZddlZddlZddlZddlZddlZddlmZddl m Z ddl m Z m Z mZmZmZmZmZmZmZmZmZmZmZmZddlmZmZmZddlmZm Z m!Z!ddl"m#Z#m$Z$m%Z%m&Z&m'Z'dd l(m)Z)m*Z*m+Z+m,Z,dd l-m.Z.dd l/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6dd l7m8Z8d Z9e rddl:m;Z;Gdde<Z=Gdde<Z>dee?deee?ee?e?fffdZ@ d'dee?e?fde?dee?fdZAGddZBGddZCe6eCe2jDGdd e3ZEGd!d"ZFee3e?e?fZGGd#d$e3ZHGd%d&ZIdS)(N)deque) TracebackType) TYPE_CHECKINGAny AsyncIteratorDequeDictIteratorListMappingOptionalSequenceTupleTypeUnioncast) parse_qslunquote urlencode) CIMultiDictCIMultiDictProxy MultiMapping)CONTENT_DISPOSITIONCONTENT_ENCODINGCONTENT_LENGTHCONTENT_TRANSFER_ENCODING CONTENT_TYPE)CHARTOKENparse_mimetypereify) HeadersParser) JsonPayload LookupErrorOrderPayload StringPayload get_payload payload_type) StreamReader)MultipartReaderMultipartWriterBodyPartReaderBadContentDispositionHeaderBadContentDispositionParamparse_content_dispositioncontent_disposition_filename)ClientResponseceZdZdS)r/N__name__ __module__ __qualname__F/opt/cloudlinux/venv/lib/python3.11/site-packages/aiohttp/multipart.pyr/r/ADr:r/ceZdZdS)r0Nr5r9r:r;r0r0Er<r:r0headerreturncvdtdtfddtdtfd}dtdtffd }dtdtfd}dtdtfd}dttjt d d td tdtfd }|sdifS|d ^}}|s%tj t|difSi}|r| d} d| vr%tj t|difS| dd\} } | } | } | |vr%tj t|difS| s"tj t| || rP|| r|| dd} n| s#tj t| Cn_|| r|| r| dd\} } } | pd} n#tj t|  t!| | d} n#t"$r%tj t| YwxYwd}|| r)d}|| ddd} ne| rd}nW|rU| d |d}||r=| d||ddd} d}|r%tj t|difS| || <|| |fS)Nstringr?cPt|ott|kSN)boolr setrAs r;is_tokenz+parse_content_disposition..is_tokenLsF||4V 44r:c:|d|dcxkodkncS)Nr"r9rFs r; is_quotedz,parse_content_disposition..is_quotedOs,ayF2J----#-----r:cL|o|ddkS)N')count)rArGs r; is_rfc5987z-parse_content_disposition..is_rfc5987Rs)x:FLL$5$5$::r:c,|dS)N*)endswithrFs r;is_extended_paramz4parse_content_disposition..is_extended_paramUss###r:c|ddz}|sdS|dr ||dn ||d}|S)NrRrFrI)findrSisdigit)rApos substrings r;is_continuous_paramz6parse_content_disposition..is_continuous_paramXsakk#" 5&,ooc&:&:LF3r6NNstt   """r:)charstextr\c6tjd|dd|S)Nz\\([z])z\1)resub)r]r\s r;unescapez+parse_content_disposition..unescape_s"v(u(((%666r:;r=rrIrMrNutf-8strictTFz\/)strrDjoinmapr_escapersplitwarningswarnr/poplowerstriplstripr0rUnicodeDecodeError)r>rKrPrTrZradisptypepartsparamsitemkeyvalueencoding_failed_valuerGs @r;r1r1Is555555.#.$....;3;4;;;;;;$#$$$$$$#C#D####-/GGC 44H4H,I,I777s7c7c7777 Rx||C((Hu 8H   1&99:::RxF <yy|| d?? M5f== > > >8OZZQ'' Uiikk!!  &== M5f== > > >8Ox}}+ M4T:: ; ; ;   % %' y  qt--Xe__  8>>???  s # # z%   %*[[a%8%8"!U#.w 8>>??? x::%    8>>???  Fy # qt!3!3E!:!:;;% # #"..E!H..9V$$#IIaLLL$HVAbD\%8%8%?%?@@E"F  9&AABBBRxs y <| >>  V ##sJ))+KKfilenamertnamec2 d|z |sdS |vr| S||vr||Sg}t fd|D}t|D]i\}\}}|dd\}}|dr |dd}|t |kr||i|sdSd|}d|vr/|dd\} }}| pd } t|| d S|S) Nz%s*c3PK|] \}}|||fV!dSrC) startswith).0rvrwname_sufs r; z/content_disposition_filename..sP  'S%S^^H=U=U %L      r:rRrrIr[rMrNrdre) sorteditems enumeraterjrSrfappendrgr) rtr}rsfnparamsnumrvrwrytailrxrs @r;r2r2sit|H t V  h d|    +1<<>>     "+8!4!4   C#uiiQ''GAt}}S!! !CRCys3xx U#### 4 %<|jjS)z2Returns True when all response data had been read.)rcontentat_eofrs r;rzMultipartResponseWrapper.at_eofsy '')))r:cK|jd{V}|jr|d{V|S)z#Emits next multipart reader object.N)rrrreleaserrus r;rzMultipartResponseWrapper.nextsh[%%'''''''' ;     !,,..  r:cHK|jd{VdS)z_Release the connection gracefully. All remaining content is read to the void. N)rrrs r;rz MultipartResponseWrapper.releases4 i!!!!!!!!!!!r:)rr3rr,r?N)r?rr?N) r6r7r8__doc__rrrrrDrr rrr9r:r;rrs "   2 3***** %;< =""""""r:rceZdZdZdZdedddeddfd Zdedfd Z defd Z de efd Z d dde defdZefdedefdZdedefdZdedefdZdefdZd%dZddde edefdZddde ede eeeffdZddde edeeeeffdZde fdZdedefdZdedefdZdedefd Z d!edefd"Z!e"de efd#Z#e"de efd$Z$dS)&r.z&Multipart reader for single body part.i boundaryheadersCIMultiDictProxy[str]rr?Nc ||_||_||_d|_|jt d}|t |nd|_d|_t|_ d|_ d|_ i|_ dS)NFr)r _boundary_content_at_eofgetrint_length _read_bytesr_unread _prev_chunk _content_eof_cache)rrrrlengths r;rzBodyPartReader.__init__s{ !  !!.$77&,&8s6{{{d %*WW ,0&( r:c|SrCr9rs r;rzBodyPartReader.__aiter__rr:cPK|d{V}|t|SrCrrs r;rzBodyPartReader.__anext__s5YY[[       <$ $ r:cFK|d{V}|sdS|SrC)readrs r;rzBodyPartReader.nexts7YY[[       4 r:FdecodercK|jrdSt}|js:|||jd{V|j:|r||S|S)zReads body part data. decode: Decodes data following by encoding method from Content-Encoding header. If it missed data remains untouched r:N)r bytearrayextend read_chunk chunk_sizer)rrdatas r;rzBodyPartReader.read s < 3{{, @ KKdoodo>>>>>>>> ? ? ?, @  %;;t$$ $ r:sizeclK|jrdS|jr||d{V}n||d{V}|xjt |z c_|j|jkrd|_|jr/|jd{V}d|ks Jd|S)zWReads body part content chunk of the specified size. size: chunk size r:NT z3reader did not read all the data or it is malformed)rr_read_chunk_from_length_read_chunk_from_streamrlenrreadline)rrchunkclrfs r;rzBodyPartReader.read_chunk0s < 3 < =66t<<<<<<<>?? m((44444444 r:c K|t|jdzks Jd|jdu}|r%|j|d{V|_|j|d{V}|xjt |jz c_|jdks Jd|jJ|j|z}d|jz}|r||}nF||tdt|jt|z }|dkrtj 5tj dt|j||ddddn #1swxYwY||kr|jd||_|t|j|}|sd |_|j}||_|S) NrNz%)]%7%7%=%=======D m((........ S!5!5!7!7888 1$$$&9$$$+++!E)&  M++c""CC++c3q#d.>*?*?#c((*J#K#KLLC !88(** 8 8';MNNNN ))&,777 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8czz#'#3DSD#9 3t/00367E $# !  s>FF#&F#c6K|jrdS|jr|j}n|jd{V}||jrV|d}|j}|jdz}||ks||kr#d|_|j|dSn]|jd{V}||jr |dd}|j||S)z Reads body part by line by line.r:Nr--T) rrpopleftrrrrrstripr)rlinesliner last_boundary next_lines r;rzBodyPartReader.readlineps8 < 3 < 2<''))DD//11111111D ??4> * * +KK((E~H NU2M  E]$:$:#  ##D)))s%; #m4466666666I##DN33 !CRCy L   * * * r:c|K|jrdS|js)||jd{V|j'dSdS)z0Like read(), but reads all the data to the void.N)rrrrs r;rzBodyPartReader.releasese <  F, 3//$/22 2 2 2 2 2 2 2, 3 3 3 3 3r:)rxrxcK|dd{V}|p|d}||S)z;Like read(), but assumes that body part contains text data.TrNrddefault)r get_charsetrrrxrs r;r]zBodyPartReader.textsZYYdY++++++++@t///@@{{8$$$r:cK|dd{V}|sdS|p|d}tttt ft j||S)zReturns charset parameter from Content-Type header or default.r[charset)rrrr! parameters)rrctypemimetypes r;rzBodyPartReader.get_charsets?   r22!%(("&&y':::r:ct|jt\}}t |dS)z|Returns name specified in Content-Disposition header. If the header is missing or malformed, returns None. r}r1rrrr2rryrts r;r}zBodyPartReader.names6 .dl.>.>?R.S.STT 6+FF;;;r:ct|jt\}}t |dS)zReturns filename specified in Content-Disposition header. Returns None if the header is missing or malformed. r|rrs r;r|zBodyPartReader.filenames6 .dl.>.>?R.S.STT 6+FJ???r:r)%r6r7r8rrbytesr+rrrrr rrDrrrrrrrrfr]r rrr rrrrrrrr"r}r|r9r:r;r.r.sG00J))(?)JV) )))) =)9: HUO ,1DU ,6S%,#% # %    D:33337;%%%hsm%s%%%%7;GGGhsmGxSRUX?WGGGG7;    hsm  tE#s(O?T      5 U     HE He H H H H U u    ;3;3;;;;   %!&F:   G (D ( F Fv F F F F F G Gr:writercK|j}|dd{V}|rN|||d{V|dd{V}|LdSdS)Ni)r)r{rwriter)rr"fieldrs r;r$zBodyPartReaderPayload.writes &&E&22222222 7,,u||E2233 3 3 3 3 3 3 3***66666666E 7 7 7 7 7r:)r6r7r8r.rrr$ __classcell__r!s@r;rrs Gn GS GC GD G G G G G G7#7$77777777r:rcReZdZdZeZdZeZde e e fde ddfdZ de dfdZdeedeffd Zed d defd Zdefd ZdeedeffdZddZdedeffdZdddedeffdZde fdZdefdZddZddZddZddZ dS)r,zMultipart body reader.Nrrr?c||_d|z|_||_d|_d|_d|_g|_dS)Nz--FT) r _get_boundaryencoderr _last_partr_at_bofr)rrrs r;rzMultipartReader.__init__sT !3!3!5!55==?? NR  $& r:r.c|SrCr9rs r;rzMultipartReader.__aiter__ s  r:cPK|d{V}|t|SrCrrs r;rzMultipartReader.__anext__%rr:responser3cZ||||j|j}|S)zConstructs reader instance from HTTP response. :param response: :class:`~aiohttp.client.ClientResponse` instance )response_wrapper_clsrr)clsr0objs r; from_responsezMultipartReader.from_response-s7&& cc(*H,<==   r:c|jS)z@Returns True if the final boundary was reached, false otherwise.rrs r;rzMultipartReader.at_eof;rr:c0K|jrdS|d{V|jr"|d{Vd|_n|d{V|jrdS|d{V|_|jS)z#Emits the next multipart body part.NF)r_maybe_release_last_partr-_read_until_first_boundary_read_boundaryfetch_next_partr,rs r;rzMultipartReader.next?s < 4++--------- < (1133 3 3 3 3 3 3 3 DLL%%'' ' ' ' ' ' ' ' < 4 $ 4 4 6 6666666r:cK|jsA|d{V}|dS|d{V|j?dSdS)z=Reads all the body parts to the void till the final boundary.N)rrrrs r;rzMultipartReader.releaseQsy, !$$$$$$D|,,.. , ! ! ! ! !r:cdK|d{V}||S)z"Returns the next body part reader.N) _read_headers_get_part_reader)rrs r;r;zMultipartReader.fetch_next_partYs?**,,,,,,,,$$W---r:rc.|td}t|}|jdkr@|jt|||jS|||jS||j||jS)zDispatches the response by the `Content-Type` header. Returns a suitable reader instance. :param dict headers: Response headers r[ multipart)rrr!typemultipart_reader_clsrpart_reader_clsr)rrrrs r;r?z MultipartReader._get_part_reader`s L"--!%(( =K ' '(0!tDzz'4=999,,WdmDD D''OO Or:c(t|jt}|jdks Jdd|jvr"t d|jtz|jd}t |dkrt d|z|S)NrAz!multipart/* content type expectedrz$boundary missed for Content-Type: %sFz&boundary %r is too long (70 chars max))r!rrrBr ValueErrorr)rrrs r;r*zMultipartReader._get_boundaryts!$,|"<==} +++-P+++ X0 0 06l9SS &z2 x==2  EPQQ Qr:cK|jr|jS|jd{VSrC)rrmrrrs r; _readlinezMultipartReader._readlinesJ < &<##%% %]++---------r:cK |d{V}|dkrtd|jz|}||jkrdS||jdzkr d|_dSp)NTr:z#Could not find starting boundary %rr)rIrGrrrrrs r;r9z*MultipartReader._read_until_first_boundarys ..********E|| 9T^LLLNNE&&$.5000#  r:cK|d{V}||jkrdS||jdzkrd|_|d{V}|d{V}|dddkr|j|dS|j||gdStd|d|j)NrTrNzInvalid boundary z , expected )rIrrrrrrrG)rrepiloguers r;r:zMultipartReader._read_boundarys~~''''''''//11 DN " " D dnu, , ,DL!^^--------H"nn........I !}%% ##I.....  ##Y$9:::::WWWT^WWXX Xr:cKdg} |jd{V}|}|||snLt }||\}}|S)Nr:)rrrorr# parse_headers)rlinesrparserr raw_headerss r;r>zMultipartReader._read_headerss -0022222222EKKMME LL       %33E::r:cK|je|js|jd{V|j|jjd|_dSdS)z8Ensures that the last read body part is read completely.N)r,rrrrrs r;r8z(MultipartReader._maybe_release_last_partsx ? &?))++ 0o--///////// L   7 8 8 8"DOOO ' &r:r)r?r)!r6r7r8rrr2rCr.rDr rfr+rrrr rr classmethodr5rDrrrr;r?r*rrIr9r:r>r8r9r:r;r,r, s$  4 $O'S 1'L'T'''' ' (  %)>9: ; "  "   [  %)>9: ;$!!!!.  .0 1....P(P  .0 1PPPP(s .....    YYYY.    ######r:r,cNeZdZdZd dedeeddffd Zd!dZd eee d ee d ee ddfd Z de e fd ZdefdZdefdZejdZejdZedefdZedefdZd"dedeeedefdZdedefdZ d"dedeeedefdZ d"de e!e"eefe#eeffdeeedefdZ$edeefdZ%d#dededdfdZ&xZ'S)$r-zMultipart body writer.mixedNsubtyperr?c"||ntjj} |d|_n#t $rt ddwxYwd|d|j}t d|g|_ dS)Nasciiz(boundary should contain ASCII only charsz multipart/z ; boundary=) content_type) uuiduuid4hexr+rUnicodeEncodeErrorrG_boundary_valuerr_parts)rrWrrr!s r;rzMultipartWriter.__init__s'3889I  S%__W55DNN! S S SGHHd R SGWGG1EGG E222#% s :Ac|SrCr9rs r; __enter__zMultipartWriter.__enter__rr:exc_typeexc_valexc_tbcdSrCr9)rrcrdres r;__exit__zMultipartWriter.__exit__s r:c*t|jSrC)iterr`rs r;__iter__zMultipartWriter.__iter__sDK   r:c*t|jSrC)rr`rs r;__len__zMultipartWriter.__len__s4;r:cdS)NTr9rs r;__bool__zMultipartWriter.__bool__str:s\A[!#$%&'*+\-.^_`|~\w]+\Zs[\x00-\x08\x0A-\x1F\x7F]cN|j}tj|j|r|dStj|j|rtd|dd}|dd}d|dzdzS)zyWrap boundary parameter value in quotes, if necessary. Reads self.boundary and returns a unicode sting. rYz*boundary value contains invalid characters\s\\"s\"rJ) rr_match_valid_tchar_regexrsearch_invalid_qdtext_char_regexrGreplace)rrwquoted_value_contents r;r_zMultipartWriter._boundary_values& 8D+U 3 3 )<<(( ( 9T4e < < KIJJ J %}}UG<<3;;D&II)00999C??r:c6|jdS)NrY)rrrs r;rzMultipartWriter.boundarys~$$W---r:r4rc8|t}t|tr/|j|||S t ||}||S#t$rtd|zwxYw)NrzCannot create payload from %r) r isinstancer'rupdateappend_payloadr)r% TypeError)rr4rpayloads r;rzMultipartWriter.appends ?!mmG c7 # # 4 K  w ' ' '&&s++ + 4%c7;;;**7333 G G G ?# EFFF Gs A<<Brc|jtd}|r|dvrt d||dkrd}|jt d}|dvr"t d||dkrd}|j}| |s|st||jt<|j |||f|S) z)Adds a new body part to multipart writer.r[)rrrrrN)r[rrrr r) rrrrnrrr rrfrr`r)rrrx te_encodingrs r;r}zMultipartWriter.append_payload$s)#*/"5"5  # #  %''   H(GGGFHFFGG G z ! !H&-_%8%8 % & &  %''  J J J:AA+NN  ( " "K|  X  .1$iiGON + GX{;<<<r:cj|t}|t||S)zHelper to append JSON part.Nrz)rr}r$)rr4rs r; append_jsonzMultipartWriter.append_jsonDs3 ?!mmG"";sG#D#D#DEEEr:c6t|ttfsJ|t}t|tr!t |}t |d}|t||dS)z&Helper to append form urlencoded part.NT)doseqz!application/x-www-form-urlencoded)rrZ) r{rr rlistrrr}r()rr4rrs r; append_formzMultipartWriter.append_formMs #'233333 ?!mmG c7 # # $syy{{##CD)))"" g4W      r:cd}|jD]^\}}}|s |s|jdS|tdt|jzdz|jzt|jzdzz }_|dt|jzdzz }|S)zSize of the payload.rNrN)r`rrrr_binary_headers)rtotalrrxrs r;rzMultipartWriter.sizebs+/;   'D(K ; $)*;tt Sdn%%&)d*++ ,   EE S(((1,, r:Tr"close_boundaryc`K|jD]\}}}|d|jzdzd{V||jd{V|s|rst |}|r|||r||||d{V|d{Vn||d{V|dd{V|r(|d|jzdzd{VdSdS)z Write body.rrNs-- )r`r$rrMultipartPayloadWriterenable_compressionenable_encoding write_eof)rr"rrrxrws r;r$zMultipartWriter.writevs+/; ( ( 'D(K,,ut~5?@@ @ @ @ @ @ @ @,,t344 4 4 4 4 4 4 4 ); )*6223((2223%%k222jjmm#######kkmm########jj(((((((((,,w'' ' ' ' ' ' ' ' '  C,,ut~5 ABB B B B B B B B B B C Cr:)rVN)r?r-rC)T)(r6r7r8rrfr rrbr BaseExceptionrrgr _PartrjrrlrDrnr_compilersrupropertyr_rrrr'rr}rrrrr rrr$r&r's@r;r-r-s  &&&#&RV&&&&&&" 4 ./ -( '       !(5/!!!!     $$$ABB!+,H!I!I @@@@X@>.#...X. 4 4# 4c1B(C 4w 4 4 4 4g'B@DFFF!),s*;!<F FFFF04  8E#s(O,gc3h.?? @ ,s+,       *hsmX&CC#CtCtCCCCCCCCr:r-cjeZdZdeddfdZdeddfdZdejfdede ddfd Z d d Z d e ddfd Z dS)rr"r?Nc>||_d|_d|_d|_dSrC)_writer _encoding _compress_encoding_buffer)rr"s r;rzMultipartPayloadWriter.__init__s% (,"59r:rxch|dkr||_t|_dS|dkr d|_dSdS)Nrr)rrr)rrxs r;rz&MultipartPayloadWriter.enable_encodingsE x  %DN$-KKD ! ! ! + + +/DNNN, +r:rstrategyc|dkrdtjzn tj }tj|||_dS)Nrr)wbitsr)rr compressobjr)rrxr zlib_modes r;rz)MultipartPayloadWriter.enable_compressions>,4v+=+=B''DN? ) HMMMr:c,K|j=|j}|r"d|_||d{V|jdkr@|jr;|jt j|jd{VdSdSdS)Nr)rflushr$rrrr b64encoderKs r;rz MultipartPayloadWriter.write_eofs > %N((**E (!%jj''''''''' >X % %$ Rl(()9$:O)P)PQQQQQQQQQQQ & % R Rr:rchK|j |r|j|}|sdS|jdkr|j}|J|||rxt t |d\}}|d|dz||dzdc}|_|r8tj|}|j |d{VdSdSdS|jdkr4|j tj |d{VdS|j |d{VdS)Nrrr) rcompressrrrdivmodrrrrr$r b2a_qp)rrbufdivmod enc_chunkb64chunks r;r$zMultipartPayloadWriter.writes > % //66F >X % %'C??? JJu    7!#c((A..S47 #' NCa N0 407%/ ::H,,,X66666666666  7 777^1 1 1,$$X_U%;%;<< < < < < < < < < <,$$U++ + + + + + + + + +r:r)r6r7r8rrrfrrZ_DEFAULT_STRATEGYrrrrr$r9r:r;rrs:s:t:::: 000000(9PNNN36N NNNN R R R R,,4,,,,,,r:r)r|)Jrr rr_r[rkr collectionsrtypesrtypingrrrrr r r r r rrrrr urllib.parserrr multidictrrrhdrsrrrrrhelpersrr r!r"httpr#rr$r%r&r'r(r)r*streamsr+__all__ client_reqrepr3RuntimeWarningr/r0rfr1r2rr. try_firstrr,rr-rr9r:r;rs    7666666666AAAAAAAAAA877777777777"!!!!! .------     .           `$ SM`$ 8C=$sCx. ()`$`$`$`$H,6 CH %( c]B,",",",",",",","^w@w@w@w@w@w@w@w@tnEO44477777G77547*t#t#t#t#t#t#t#t#n gsC DCDCDCDCDCgDCDCDCN4,4,4,4,4,4,4,4,4,4,r: