bg,zUddlZddlZddlZddlZddlmZmZmZmZm 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(ej)*d Z+e e(e,d <Gdde"Z-dS)N) IO TYPE_CHECKINGAny AwaitableCallableFinalIteratorListOptionalTupleUnioncast)hdrs)AbstractStreamWriter)ETAG_ANYETagmust_be_empty_body) LooseHeadersPathLike)HTTPNotModifiedHTTPPartialContentHTTPPreconditionFailedHTTPRequestRangeNotSatisfiable)StreamResponse) FileResponse) BaseRequestAIOHTTP_NOSENDFILE NOSENDFILEc eZdZdZ ddedededeed eed df fd Z d e d e e deded e f dZ ddd e e deded e f fd Zededeedfd efdZdddeded ee ffd Zddd ee ffd Zded eejejeffdZddd ee ffd ZxZS)rz,A response object can be used to send files.Npath chunk_sizestatusreasonheadersreturnct|||tj||_||_dS)N)r%r&r')super__init__pathlibPath_path _chunk_size)selfr#r$r%r&r' __class__s O/opt/cloudlinux/venv/lib64/python3.11/site-packages/aiohttp/web_fileresponse.pyr+zFileResponse.__init__/sC vwGGG\$'' %writerfobjoffsetcountcK|j}tj}|d|j|d{V|d|j|d{V}|rY||d{V||z }|dkrn2|d|jt||d{V}|Y|d{V|SNr) r/asyncioget_event_looprun_in_executorseekreadwritemindrain)r0r4r5r6r7r$loopchunks r2_sendfile_fallbackzFileResponse._sendfile_fallback<s  % %''""4F;;;;;;;;;**4JGGGGGGGG X,,u%% % % % % % % %J&Ezz..tTYJPU@V@VWWWWWWWWE  Xllnn r3requestrcKt|d{V}|Jts|jr|||||d{VS|j}|j}|J |||||d{Vn.#t$r!|||||d{VcYSwxYwt d{V|SN) r*preparer compressionrD_loop transportsendfileNotImplementedError write_eof) r0rEr5r6r7r4rBrKr1s r2 _sendfilezFileResponse._sendfileRsJwww////////!!!  N) N00vuMMMMMMMM M}% $$$ N-- 4?? ? ? ? ? ? ? ? ?" N N N00vuMMMMMMMM M M M Ngg!!!!!!!!! s.B (B87B8 etag_valueetags.ct|dkr|djtkrdStfd|DS)NrrTc3<K|]}|j |jkVdSrG)is_weakvalue).0etagrPs r2 z2FileResponse._strong_etag_match..ks1RRT\R4:+RRRRRRr3)lenrUrany)rPrQs` r2_strong_etag_matchzFileResponse._strong_etag_matchgsJ u::??uQx~994RRRRRRRRRRr3 last_modifiedcK|tjd|_||_||_t |d{VS)NF) set_statusr status_code _length_checkrWr\r*rH)r0rErPr\r1s r2 _not_modifiedzFileResponse._not_modifiedms_ 3444" *WW__W---------r3cK|tjd|_t |d{VSr9)r^rr_content_lengthr*rH)r0rEr1s r2_precondition_failedz!FileResponse._precondition_failedxsO .:;;;WW__W---------r3check_for_gzipped_filec|j}|rE||jdz} ||dfS#t$rYnwxYw||dfS)zReturn the file path, stat result, and gzip status. This method should be called from a thread executor since it calls os.stat which may block. z.gzTF)r. with_namenamestatOSError)r0refilepath gzip_paths r2_get_file_path_stat_and_gzipz)FileResponse._get_file_path_stat_and_gzips: !  **8=5+@AAI  ).."2"2D88    %//s? A  A c Ktj}d|jtjdv}|d|j|d{V\}}}|jdd|j d}|j }|j } | 1| || s| |d{VS|j} | :| 8|j | kr| |d{VS|j} | 3| || r||||d{VS|j} | <| :|j | kr||||d{VStj|jvr+t)jt-|\} }| sd} d}n|rdnd}d}|j}|j }|}d}|j}||j |kr> |j}|j}|j}nm#t8$r`d||jtj<|t>j tC"|d{VcYSwxYw|||d kr|||z }|d krd }||z }ntG||n|||z }||kr]d||jtj<|t>j tC"|d{VStHj }|||r| |_%|r||jtj&<|r%tj|jtj'<d|_(||_)|j |_*||_+d |jtj,<t[t\|}|tHj kr/d /|||zd z ||jtj<|d ksta|j1|j2r'tC"|d{VS|d|j3d d{V}|r|}nd } |4||||d{V tj5|d|j6d{VS#tj5|d|j6d{VwxYw)Ngzipx-zapplication/octet-streamTFzbytes */rbyteszbytes {}-{}/{}rrb)7r:r;r'getrACCEPT_ENCODINGr<rm st_mtime_nsst_sizest_mtimeif_matchr[rdif_unmodified_since timestamp if_none_matchraif_modified_since CONTENT_TYPE mimetypes guess_typestr_statusif_range http_rangestartstop ValueError CONTENT_RANGEr^rr_r*rHr@r content_typeCONTENT_ENCODINGVARY _compressionrWr\rc ACCEPT_RANGESrintformatrmethodr%openrOshieldclose)r0rErBrerkstrorPr\ifmatch unmodsince ifnonematchmodsincectencoding should_set_ctr% file_sizer7rifrangerngend real_startr5r6r1s r2rHzFileResponse.prepares%''!'7?+>+>t?SUW+X+X!X#'#7#7 $35K$ $       "d9992:999  "  t'>'>z7'S'S 227;;;;;;;; ;0  " j224444227;;;;;;;; ;+  "t'>'>z;'W'W "++GZOOOOOOOO O,  # x113333++GZOOOOOOOO O  DL 0 0$/H >>LB 0/ MM!%/vv4H!MJ " ?bkW->->-@-@@@ 6( h 6 6 64Ji3I3I T/0 > JKKK"WW__W55555555555 6  CO199Y&Eqyy!"%-EE3?CC 9MMPUUI%%8N)7M7MDL!34OO$B$NOOO!&!9!99999999+7'''  # "D   ;2:DL. /  &&*&:DL #!&D  [#+2 T'(#u%% '3 3 3/?/F/FJ.2I00DL+ , A::+GNDKHH:11111111 1))$ tDDDDDDDD  FFF IvuEEEEEEEE E.!5!5dDJ!G!GHH H H H H H H H H'.!5!5dDJ!G!GHH H H H H H H H Hs<HA'I<;I<2S5S9)r!r"NN)__name__ __module__ __qualname____doc__rrr rrr+rrrrDrO staticmethodr rboolr[floatrardr,r-os stat_resultrmrH __classcell__)r1s@r2rr,s^66 % $*. & & & & &  & ,' &  & & & & & &*24S'CFOR ,$,.sG=@IL *SsS5s3CSSSS\S .$ .25 .FK . & ' . . . . . ..$. & '......0&*0 w|R^T1 20000&[I][Ix@T7U[I[I[I[I[I[I[I[I[I[Ir3r).r:rrr,typingrrrrrrr r r r r rrprabcrhelpersrrrtypedefsrrweb_exceptionsrrrr web_responser__all__ web_requestrrs_T_OnChunkSentrenvironrur__annotations__rr3r2rs                             %%%%%%7777777777,,,,,,,, )((((( )(((((((E7IdO#;<=$rz~~.BCCDD E$KDDDAIAIAIAIAI>AIAIAIAIAIr3