wce)VUddlZddlZddlZddlZddlmZmZmZmZm Z m Z m Z m Z m Z mZmZmZddlmZddlmZddlmZmZmZddlmZmZddlmZmZmZm Z dd l!m"Z"d Z#erdd l$m%Z%e e e&gedfZ'e(ejRjUd Z+e e(e,d <Gdde"Z-y)N) IO TYPE_CHECKINGAny AwaitableCallableFinalIteratorListOptionalTupleUnioncast)hdrs)AbstractStreamWriter)ETAG_ANYETagmust_be_empty_body) LooseHeadersPathLike)HTTPNotModifiedHTTPPartialContentHTTPPreconditionFailedHTTPRequestRangeNotSatisfiable)StreamResponse) FileResponse) BaseRequestAIOHTTP_NOSENDFILE NOSENDFILEc eZdZdZ ddedededeedeeddf fd Z d e d e e d ed ede f dZ ddd e e d ed ede f fd ZededeedfdefdZdddededee ffd Zdddee ffd Zdddee ffd ZxZS)rz,A response object can be used to send files.Npath chunk_sizestatusreasonheadersreturnclt||||tj||_||_y)N)r#r$r%)super__init__pathlibPath_path _chunk_size)selfr!r"r#r$r% __class__s :/usr/lib/python3/dist-packages/aiohttp/web_fileresponse.pyr)zFileResponse.__init__/s1 vwG\\$' %writerfobjoffsetcountcK|j}tj}|jd|j|d{|jd|j |d{}|rV|j |d{||z }|dkrn2|jd|j t||d{}|rV|jd{|S77x7_7'7wNr) r-asyncioget_event_looprun_in_executorseekreadwritemindrain)r.r2r3r4r5r"loopchunks r0_sendfile_fallbackzFileResponse._sendfile_fallback<s %% %%'""4F;;;**4JGG,,u% % %J&Ez..tTYYJPU@VWWE lln  <G %Xs`AC)C$C)(C!)C)C#9C)=C%>C)C)C'C)!C)#C)%C)'C)requestrcKt||d{}|Jts |jr|j ||||d{S|j }|j }|J |j||||d{t|%d{|S77W7 #t$r |j ||||d{7cYSwxYw78wN) r(preparer compressionrB_loop transportsendfileNotImplementedError write_eof) r.rCr3r4r5r2r@rIr/s r0 _sendfilezFileResponse._sendfileRsww//!!! ))00vuMM M}}%% $$$ N-- 4? ? ?g!!! !0N @" N00vuMMM M N "soCB1CB  C*B$B"B$CCC C"B$$ C CC  C C  C etag_valueetags.cvt|dk(r|djtk(rytfd|DS)NrrTc3VK|] }|jr|jk("ywrE)is_weakvalue).0etagrNs r0 z2FileResponse._strong_etag_match..ks RT\\4::+Rs)))lenrSrany)rNrOs` r0_strong_etag_matchzFileResponse._strong_etag_matchgs1 u:?uQx~~9RRRRr1 last_modifiedcK|jtjd|_||_||_t ||d{S7w)NF) set_statusr status_code _length_checkrUrZr(rF)r.rCrNrZr/s r0 _not_modifiedzFileResponse._not_modifiedmsI 334" *W_W----sAA A AcK|jtjd|_t||d{S7wr7)r\rr]content_lengthr(rF)r.rCr/s r0_precondition_failedz!FileResponse._precondition_failedxs9 .::;W_W----s9AAAc4 K|j}d}d|jjtjdvr2|j |j dz}|jr|}d}tj}|jd|jd{}|jdd|jd}|j}|j} | +|j!|| s|j#|d{S|j$} | 8| 6|j| j'kDr|j#|d{S|j(} | -|j!|| r|j+|||d{S|j,} | :| 8|j| j'kr|j+|||d{Stj.|jvr(t1j2t5|\} }| sd} d}n|rdnd}d}|j6}|j}|}d}|j8}||j|j'kr |j:}|j<}|j>}|||d kr|||z }|d krd }||z }ntO||n|||z }||k\rVd ||jtjB<|jEtFjHtJ||d{StPjH}|jE||r |_)|r||jtjT<|r+tj|jtjV<||_,|j|_-||_.d |jtj^<tatb|}|tPjHk(r4d je|||zd z ||jtjB<|d k(s tg|jh|jjrtJ||d{S|jd|jldd{}|r|}nd } |jo||||d{tjp|jd|jrd{S78777^7#t@$rZd ||jtjB<|jEtFjHtJ||d{7cYSwxYw7?7777#tjp|jd|jrd{7wxYww)NFgzipz.gzTx-zapplication/octet-streamzbytes */rbyteszbytes {}-{}/{}rrb):r,r%getrACCEPT_ENCODING with_namenameis_filer8r9r:stat st_mtime_nsst_sizest_mtimeif_matchrYrbif_unmodified_since timestamp if_none_matchr_if_modified_since CONTENT_TYPE mimetypes guess_typestr_statusif_range http_rangestartstop ValueError CONTENT_RANGEr\rr]r(rFr>r content_typeCONTENT_ENCODINGVARYrUrZra ACCEPT_RANGESrintformatrmethodr#openrMshieldclose)r.rCfilepathrd gzip_pathr@strNrZifmatch unmodsince ifnonematchmodsincectencoding should_set_ctr# file_sizer5rifrangerngend real_startr3r4r/s r0rFzFileResponse.prepares:: W__(()=)=rB B **8==5+@AI  "$%%'#'#7#7hmm#LLq)2::a.9  ""  t'>'>z7'S227;; ;00  " j2244227;; ;++  "t'>'>z;'W++GZOO O,,  # x1133++GZOO O   DLL 0$//H >LB/ M!%v4H!MJJ "" ?bkkW->->-@@ 6(( hh" CO19Y&Eqy!"%-E3?C 9MPUUI%:B)7MDLL!3!34OO$B$N$NO!&!999+77'  "D  2:DLL.. / &*&:&:DLL # [[#+2 T''(#u% '33 3/?/F/FJ.2I0DLL++ , A:+GNNDKKH11 1))$ tDD FF IvuEE..!5!5dDJJ!GH H HeM<<PP< 66>i[3I T//0 > J JK"W_W5555 6`::2DF H'..!5!5dDJJ!GH H Hs B V#S$A!VSAV S! :VS$AVS'BV'$S* BVUEVU$V;U< VUU U#2VUVV!V$V'V*AU UU  V U  VVVUV3VVVV)iNN)__name__ __module__ __qualname____doc__rrr r{rr)rrrrBrM staticmethodr rboolrYfloatr_rbrF __classcell__)r/s@r0rr,sa6 % $*. & & & &  & ,' &  &*24S'CFOR ,$,.sG=@IL *SsS5s3CSSS .$ .25 .FK . & ' ..$. & '.^I]^Ix@T7U^I^Ir1r).r8ryosr*typingrrrrrrr r r r r rrerabcrhelpersrrrtypedefsrrweb_exceptionsrrrr web_responser__all__ web_requestrrh_T_OnChunkSentrenvironrjr__annotations__rr1r0rs     %77, ) ((E7IdO#;<=rzz~~.BCD E$KDqI>qIr1