wcehp UddlZddlZddlZddlZddlZddlZddlZddlZddlZddl m Z ddlm Z ddl m Z mZmZmZmZmZmZmZmZmZmZmZddlmZddlZddlmZmZmZm Z m!Z!ddl"m#Z#dd l$m%Z%dd l&m'Z'dd l(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2dd l3m4Z4dd l5m6Z6ddl7m8Z8m9Z9ddl:m;Z;mZ>m?Z?m@Z@mAZAmBZBddlCmDZDddlEmFZFdZGe rddlHmIZIddlJmKZKddlLmMZMejdddGddZOejejzdzZReeSeTd<deRdZUeeSeTd<d jd!jd"d#eXeYd$d%zDZZeeSeTd&<d'Z[eeSeTd(<d)jeZe[*Z\eeSeTd+<d,jeUe\-Z]eeSeTd.<ejd/Z_eeeSeTd0<eje]Z`eeeSeTd1<Gd2d3eeSefe/ZaGd4d5eaZby)6N) SimpleCookie)MappingProxyType) TYPE_CHECKINGAnyDictFinalIteratorMappingMutableMappingOptionalPatternTupleUnioncast) parse_qsl) CIMultiDictCIMultiDictProxy MultiDictMultiDictProxy MultiMapping)URL)hdrs)AbstractStreamWriter) _SENTINELDEBUGETAG_ANYLIST_QUOTED_ETAG_RE ChainMapProxyETag HeadersMixinparse_http_datereifysentinel)RawRequestMessage) HttpVersion)BodyPartReaderMultipartReader)EmptyStreamReader StreamReader)DEFAULT_JSON_DECODER JSONDecoder LooseHeaders RawHeadersStrOrURL)HTTPRequestEntityTooLarge)StreamResponse) BaseRequest FileFieldRequest) Application)RequestHandler)UrlMappingMatchInfoT) auto_attribsfrozenslotscTeZdZUeed<eed<ej ed<eed<ded<y)r3namefilenamefile content_typezCIMultiDictProxy[str]headersN)__name__ __module__ __qualname__str__annotations__ioBufferedReader5/usr/lib/python3/dist-packages/aiohttp/web_request.pyr3r3Ks$ IM   $$rIr3z!#$%&'*+.^_`|~-_TCHAR[z]+_TOKENz[{}]c#2K|]}t|ywN)chr).0cs rJ rTZs KSV Ks) !#_QDTEXTz \\[\t !-~] _QUOTED_PAIRz"(?:{quoted_pair}|{qdtext})*")qdtext quoted_pair_QUOTED_STRINGz0({token})=({token}|{quoted_string})(:\d{{1,4}})?)token quoted_string_FORWARDED_PAIRz \\([\t !-~])_QUOTED_PAIR_REPLACE_RE_FORWARDED_PAIR_REceZdZejej ej ejejhZ e je gdzZ ddddddde deddd ed d d ej"d edeeeefdeedeedeeddfdZeeeeeeeddeeefdeeefdeeefdeeefdeeefdeeefd eeefddfdZed[dZed\dZ edeejBfdZ"edefdZ#edefdZ$e%de fdZ&e%de'fdZ(e%dej"fd Z)d!edefd"Z*d!ed#eddfd$Z+d!eddfd%Z,defd&Z-de.efd'Z/e%de0fd(Z1e%de2e3eefd)ffd*Z4e%defd+Z5e%defd,Z6e%de7fd-Z8e%defd.Z9e%deefd/Z:e%de'fd0Z;e%defd1Ze%d]d4Z?e%defd5Z@e%d]d6ZAe%deBfd7ZCe%deeDjfd8ZEe%deeDjfd9ZFeGd:ede.eHfd;ZIeJdZLe%dee2eHd)ffd?ZMe%deeDjfd@ZNe%de0fdAZOe%de3eeffdBZPe%deQfdCZRe%defdDZSede0fdEZTede0fdFZUe%de0fdGZVd^dHZWdeXfdIZYdefdJZZe[dKdLe\defdMZ]de^fdNZ_d_dOZ`d`dPedQedefdRZadefdSZbdTecde0fdUZdde0fdVZedWefddfdXZgdYehddfdZZiy)ar2)_message _protocol_payload_writer_payload_headers_method_version_rel_url_post _read_bytes_state_cache_task_client_max_size_loop_transport_sslcontext_transport_peernameiN)client_max_sizestateschemehostremotemessagepayloadprotocolr6payload_writertaskasyncio.Task[None]looprvrwrxryrzreturnc|i}||_||_||_||_|j|_|j |_|j|_ i|_ |j} | jrW| |jd<| j|jd<| j|jd<| j|_n|j|_d|_d|_||_||_||_||_|jj.} | J| j1d|_| j1d|_| | |jd<| | |jd<| | |jd<yy)Nurlryrx sslcontextpeernamerz)rerfrgrhr@rimethodrjversionrkrpr is_absoluteryrxrelativerlrmrnrorqrrrs transportget_extra_infortru)selfr{r|r}r~rrrvrwrxryrzrrs rJ__init__zBaseRequest.__init__s` =E !-  ~~  &( kk ?? "%DKK "%((DKK $'JJDKK !LLNDM#KKDMMQ ,0  / NN,, $$$%.%=%=l%K"#,#;#;J#G  $*DKK !  "&DKK   $*DKK ! rIrrel_urlr@rxryrzrvrrr@c|jr tdi}|tur||d<|turt|} | |d<t | |d<|tur:t t ||d<td|jD|d<|jjd i|} i} |tur|| d<|tur|| d <|tur|| d <|tur |j}|j| |j|j|j|j |j"f||j$j'd | S) aClone itself with replacement some attributes. Creates and returns a new instance of Request object. If no parameters are given, an exact copy is returned. If a parameter is not passed, it will reuse the one from the current request object. z.Cannot clone request after reading its contentrrpathr@c3fK|])\}}|jd|jdf+yw)utf-8N)encode)rRkvs rJrTz$BaseRequest.clone..s0';?1a'"AHHW$56's/1 raw_headersrxryrz)rvrwrH)rn RuntimeErrorr$rrDrrtupleitemsre_replacerr __class__rhrfrgrqrsrocopy) rrrr@rxryrzrvdctnew_urlr{kwargss rJclonezBaseRequest.clonesZ"   RS S   !"CM ( "w> !~~'''rIc|jSrP)rgrs rJwriterzBaseRequest.writers###rIc|jSrP)rrrs rJrvzBaseRequest.client_max_sizes$$$rIcRtjdtd|jS)NzRequest.message is deprecated stacklevel)warningswarnDeprecationWarningrers rJr{zBaseRequest.messages 57IVWX}}rIc|jSrP)rlrs rJrzBaseRequest.rel_url#s }}rIcRtjdtd|jS)Nz#request.loop property is deprecatedr)rrrrsrs rJrzBaseRequest.loop's# 13ERS zzrIkeyc |j|SrProrrs rJ __getitem__zBaseRequest.__getitem__0s{{3rIvaluec"||j|<yrPr)rrrs rJ __setitem__zBaseRequest.__setitem__3s  CrIc|j|=yrPrrs rJ __delitem__zBaseRequest.__delitem__6s KK rIc,t|jSrP)lenrors rJ__len__zBaseRequest.__len__9s4;;rIc,t|jSrP)iterrors rJ__iter__zBaseRequest.__iter__<sDKK  rIc |jdk(S)z5A bool indicating if the request is handled with SSL.https)rxrs rJsecurezBaseRequest.secureAs{{g%%rI.c<g}|jjjtjdD]X}t |}d}d}i}|j tj|d|cxkr|ksEnHtj||}||r|jd|}n|j\}} } | ddk(rtjd| dd} | r| | z } | ||j<|t |j!dz }d }ne||dk(r.d}i}|j tj||dz }n/||d k(rd}|dz }n||d vr|dz }n|jd|}d|cxkr|krX[t#|S) aA tuple containing all parsed Forwarded header(s). Makes an effort to parse Forwarded headers as specified by RFC 7239: - It adds one (immutable) dictionary per Forwarded 'field-value', ie per proxy. The element corresponds to the data in the Forwarded field-value added by the first proxy encountered by the client. Each subsequent item corresponds to those added by later proxies. - It checks that every value has valid syntax in general as specified in section 4: either a 'token' or a 'quoted-string'. - It un-escapes found escape sequences. - It does NOT validate 'by' and 'for' contents as specified in section 6. - It does NOT validate 'host' contents (Host ABNF). - It does NOT validate 'proto' contents for valid URI scheme names. Returns a tuple containing one or more immutable dicts rHrF,"z\1rT;z )rer@getallr FORWARDEDrappendtypesrrcmatchfindgroupsrbsublowergroupr) relems field_valuelengthposneed_separatorelemrr<rports rJ forwardedzBaseRequest.forwardedFs(==0077K% 5K%FC"N#%D LL//5 6s#V#*00cB$%)..sC8,1LLN)eT 8s?$;$?$?uQr{$SE!TME-2TZZ\*s5;;q>22)- %,%*NDLL!7!7!=>1HC %,%*N1HC %.1HC&**34C?s#V## % 5LU|rIc|jryy)aA string representing the scheme of the request. Hostname is resolved in this order: - overridden value by .clone(scheme=new_scheme) call. - type of connection to peer: HTTPS if socket is SSL, HTTP otherwise. 'http' or 'https'. rhttp)rtrs rJrxzBaseRequest.schemes  % %rIc|jS)zyRead only property for getting HTTP method. The value is upper-cased str like 'GET', 'POST', 'PUT' etc. )rjrs rJrzBaseRequest.methods ||rIc|jS)zxRead only property for getting HTTP version of request. Returns aiohttp.protocol.HttpVersion instance. )rkrs rJrzBaseRequest.versions }}rIc|jjjtj}||St j S)zHostname of the request. Hostname is resolved in this order: - overridden value by .clone(host=new_host) call. - HOST HTTP header - socket.getfqdn() value )rer@getrHOSTsocketgetfqdn)rrys rJryzBaseRequest.hosts:}}$$((3  K~~rIc|jyt|jttfrt |jdSt |jS)zRemote IP of client initiated HTTP request. The IP is resolved in this order: - overridden value by .clone(remote=new_remote) call. - peername of opened socket Nr)ru isinstancelistrrDrs rJrzzBaseRequest.remotesN  # # + d..u >t//23 34++,,rIctj|j|j}|j |j S)N)rxry)rbuildrxryjoinrl)rrs rJrzBaseRequest.urls-iit{{;xx &&rIc.|jjS)z_The URL including *PATH INFO* without the host or scheme. E.g., ``/app/blog`` )rlrrs rJrzBaseRequest.paths }}!!!rIc,t|jS)zXThe URL including PATH_INFO and the query string. E.g, /app/blog?id=10 )rDrlrs rJpath_qszBaseRequest.path_qss 4==!!rIc.|jjS)zThe URL including raw *PATH INFO* without the host or scheme. Warning, the path is unquoted and may contains non valid URL characters E.g., ``/my%2Fpath%7Cwith%21some%25strange%24characters`` )rerrs rJraw_pathzBaseRequest.raw_paths}}!!!rIc@t|jjS)z7A multidict with all the variables in the query string.)rrlqueryrs rJrzBaseRequest.querysdmm1122rIc.|jjS)z:The query string in the URL. E.g., id=10 )rl query_stringrs rJrzBaseRequest.query_strings }})))rIc|jS)z4A case-insensitive multidict proxy with all headers.)rirs rJr@zBaseRequest.headers}}rIc.|jjS)z$A sequence of pairs for all headers.)rerrs rJrzBaseRequest.raw_headerss}}(((rIcft|jjtjS)zyThe value of If-Modified-Since HTTP header, or None. This header is represented as a `datetime` object. )r"r@rrIF_MODIFIED_SINCErs rJif_modified_sincezBaseRequest.if_modified_sinces$ t||//0F0FGHHrIcft|jjtjS)z{The value of If-Unmodified-Since HTTP header, or None. This header is represented as a `datetime` object. )r"r@rrIF_UNMODIFIED_SINCErs rJif_unmodified_sincezBaseRequest.if_unmodified_sinces$ t||//0H0HIJJrI etag_headerc#K|tk(rtdtytj|D]5}|j ddd\}}}|rytt ||7yw)z'Extract `ETag` objects from raw header.F)is_weakrrrN)rr rfinditerrbool)rrrrgarbages rJ _etag_valueszBaseRequest._etag_valuessw ( "  -55kB */++aA*>' M sA,A. header_valuec<|syt|j|SrP)rr)clsrs rJ_if_match_or_none_implz"BaseRequest._if_match_or_none_impls S%%l344rIcr|j|jjtjS)zxThe value of If-Match HTTP header, or None. This header is represented as a `tuple` of `ETag` objects. )r r@rrIF_MATCHrs rJif_matchzBaseRequest.if_match%s( **4<<+;+;DMM+JKKrIcr|j|jjtjS)z}The value of If-None-Match HTTP header, or None. This header is represented as a `tuple` of `ETag` objects. )r r@rr IF_NONE_MATCHrs rJ if_none_matchzBaseRequest.if_none_match-s* **4<<+;+;D??rIc0|jj S)zIs keepalive enabled by client?)re should_closers rJ keep_alivezBaseRequest.keep_alive=s==----rIc|jjtjd}t |}t |j Dcic]\}}||jc}}Scc}}w)zMReturn request cookies. A read-only dictionary-like object. rN)r@rrCOOKIErrrr)rrawparsedrvals rJcookieszBaseRequest.cookiesBsS llt{{B/c"  OHCcii OPP OsA- c|jjtj}d\}}|r d}t j ||d\}}|r t|nd}|r t|nd}||| }d}|||dz }||k\r td||cxur tdt||dS#t $r tdwxYw) zMThe content of Range HTTP header. Return a slice instance. )NNNz^bytes=(\d*)-(\d*)$rzrange not in acceptable formatrzstart cannot be after endz"No start or end of range specified) rirrRANGErefindall IndexError ValueErrorintslice)rrngstartendpatterns rJ http_rangezBaseRequest.http_rangeLsmm + s ? C0ZZ5a8 s"#c(tC"'CJTE} S_qC<$%@AA# !EFF$UC##+ C !ABB Cs B00Cc|jS)zReturn raw payload stream.)rhrs rJcontentzBaseRequest.contentprrIcptjdtd|jj S)@Return True if request's HTTP BODY can be read, False otherwise.z$Deprecated, use .can_read_body #2005rr)rrrrhat_eofrs rJhas_bodyzBaseRequest.has_bodyus1  24FST =='')))rIc8|jj S)r-)rhr.rs rJ can_read_bodyzBaseRequest.can_read_body}s=='')))rIc8t|jtuS)z6Return True if request has HTTP BODY, False otherwise.)typerhr)rs rJ body_existszBaseRequest.body_existssDMM"*;;;rIcK|jjs>|jjd{|jjs=yy7!w)zKRelease request. Eat unread part of HTTP BODY if present. N)rhr.readanyrs rJreleasezBaseRequest.releasesC --&&(--'') ) )--&&( )s8AAAAc\K|jt} |jjd{}|j ||j r1t |}||j k\rt|j ||sntt||_|jS7rw)z_Read request body if present. Returns bytes object with full request content. Nmax_size actual_size) rn bytearrayrhr6extendrrrr0bytes)rbodychunk body_sizes rJreadzBaseRequest.reads    #;D"mm3355 E"(( #D I D$9$997%)%:%:  %T{D 6s5B,B*A3B,cK|jd{}|jxsd}|j|S7%w)z1Return BODY as text using encoding from .charset.Nr)rBcharsetdecode)r bytes_bodyencodings rJtextzBaseRequest.texts899;& <<*7  **'s ><&>)loadsrIcNK|jd{}||S7 w)zReturn BODY as JSON.N)rH)rrIr?s rJjsonzBaseRequest.jsons#YY[ T{!s %# %cJKt|j|jSw)z3Return async iterator to process BODY as multipart.)r(rirhrs rJ multipartzBaseRequest.multipartst}}dmm<|jCd } |j=|j| j)| n|j=|j| |t-| z }d|cxkr|krnnt1||tEd|jd{}|Mnd|j?d{} | rJ|jFxsd } |jItK| jMj)| d | t||_|jS777T77O77}w)zReturn POST parameters.N)rNz!application/x-www-form-urlencodedmultipart/form-datarOri)sizer9zapplication/octet-streamT)rEztext/r)defaultz8To decode nested multipart you need to use custom reader)keep_blank_valuesrG)'rmrj POST_METHODSrrr?rMrrnextr@rr CONTENT_TYPErr'r<r=tempfile TemporaryFile read_chunkrEwritercloser0seekr3rrFrGaddrB startswith get_charsetr"rDr=rrstrip)rr?outrMr:fieldrPfield_cttmpr@ffrrDdatas rJpostzBaseRequest.posts< :: !::  <->?e^4 ::111 ~~&446&+&6&6E&6&B B#$)LL$7EIIe, CJ.D 82d2 # &?-54'"!"+0*:*:*:*F$FE$ #+'AH&!JJ!NN !2!2C8$!MM  B/',jjj&= =#+x/B/B7/K&+&7&7&7&HGGGEJJ W0EFGGEJJ6E *x.$.";)1t#%U(nn..q#t$D,,1'  ,,W5*.!($C( zzU/+!C%G !> /$sB,N;.N(/#N;N+BN;N.A6N;N1N;B N;%N4&B8N;N7N;'N;;N9>  N&&  N''g66rIc|jjddjd}dj|jj |j |S)Nasciibackslashreplacez <{} {} {} >)rrrEformatrrArj)rascii_encodable_paths rJ__repr__zBaseRequest.__repr__sS#yy//9KLSS  ## NN # #T\\3G  rIotherc0t|t|k(SrP)id)rrns rJ__eq__zBaseRequest.__eq__'s$x2e9$$rIcy)NTrHrs rJ__bool__zBaseRequest.__bool__*srIresponsec KywrPrH)rrts rJ _prepare_hookzBaseRequest._prepare_hook-s sexcc:|jj|yrP)rh set_exception)rrws rJ_cancelzBaseRequest._cancel0s ##C(rI)rr)rr6)rzMultiMapping[str])rN)rz,MultiDictProxy[Union[str, bytes, FileField]]rP)jrArBrCr METH_PATCH METH_POSTMETH_PUT METH_TRACE METH_DELETErSr!ATTRS frozensetr%r*rasyncioAbstractEventLoopr#r rrDrrr$rrr/r-rpropertyrr} Transportrrrvr#r{rrrrrrrr rrrrr rrxrr&rryrzrrrrrrr@r.rdatetimerr staticmethodr r classmethodr r rrrrr$r)r+r/r1r4r7r>rBrHr+r,rKr(rMrfrrmobjectrqrsr1rv BaseExceptionrzrHrIrJr2r2us-      L    " E> '*. $" $7+"7+7+# 7+ - 7+ # 7+''7+7+S#X'7+ 7+sm7+ 7+ 7+x)1.62:(0&.(0198 c9n%8 x*+ 8 |Y./ 8 c9n% 8 CN#8 c9n%8 sI~.8  8 t(8G$5$56(( $,$$%%% *    g//  s s !s!3!4!st  !(3-!  && & :5c!2C!78: :x            c       - -  - 'S' ' "c" " "" " "#" " 3 3 *c* *   )Z) ) I8H,=,=#>I I KXh.?.?%@K K#(4.(5#C=5 %c " #55 L(5s#34L L QxdCi(89Q Q @(8#4#45@ @ .D. . Qc*Q Q !$E!$ !$F  *$***t**  > > ? >s>A AA )rr7)rr5)rArBrCr2rrrrrrDrr$rrr/r-r#rr#rrrrrr1rv __classcell__)rs@rJr4r44sV    =/ : :E?c?S?T?  +C +c +d +)1.62:(0&.(019c9n%x*+  |Y./  c9n% CN#c9n%sI~. 0   && &]&&?N?t?rIr4)crrrFrrstringrVrr http.cookiesrrtypingrrrrr r r r r rrr urllib.parserattr multidictrrrrryarlrrNrabcrhelpersrrrrrr r!r"r#r$ http_parserr% http_writerr&rMr'r(streamsr)r*typedefsr+r,r-r.r/web_exceptionsr0 web_responser1__all__web_appr5 web_protocolr6web_urldispatcherr7sr3digits ascii_lettersrKrDrErMrkrrrangerZr[r^racompilerbrcr2r4rHrIrJrs   %"    # %   +$646( 1$,6T$d3%%4%]]V%9%99> ? 0:rzz//Jws|,J+5"**_*EE'#,'E| ).c*L| )~N?kN?rI