id *zUddlZddlZddlZddlZddlZddlmZmZmZm Z m Z m Z m Z m Z mZmZmZddlmZddlmZddlmZmZddlmZmZddlmZmZmZmZdd l m!Z!d Z"erdd l#m$Z$e e e%ge dfZ&e'ej()d Z*ee'e+d <Gdde!Z,dS)N) IO TYPE_CHECKINGAny AwaitableCallableIteratorListOptionalTupleUnioncast)hdrs)AbstractStreamWriter)ETAG_ANYETag)Final LooseHeaders)HTTPNotModifiedHTTPPartialContentHTTPPreconditionFailedHTTPRequestRangeNotSatisfiable)StreamResponse) FileResponse) BaseRequestAIOHTTP_NOSENDFILE NOSENDFILEc heZdZdZ ddeeejfdedede ed e e d df fd Z d e d e ededed e f dZddd e ededed e f fd Zededeedfd efdZdddeded e e ffd Zddd e e ffd Zddd e e ffd ZxZS)rz,A response object can be used to send files.Npath chunk_sizestatusreasonheadersreturnct|||t|trt j|}||_||_dS)N)r#r$r%)super__init__ isinstancestrpathlibPath_path _chunk_size)selfr!r"r#r$r% __class__s M/opt/cloudlinux/venv/lib/python3.11/site-packages/aiohttp/web_fileresponse.pyr)zFileResponse.__init__/sZ vwGGG dC  &<%%D %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}|Jtstjdks|jr|||||d{VS|j}|j}|J | ||||d{Vn.#t$r!|||||d{VcYSwxYwt d{V|S)N)) r(preparersys version_info compressionrD_loop transportsendfileNotImplementedError write_eof) r0rEr5r6r7r4rBrNr1s r2 _sendfilezFileResponse._sendfileUsTwww////////!!!  N)F22d6F200vuMMMMMMMM M}% $$$ N-- 4?? ? ? ? ? ? ? ? ?" N N N00vuMMMMMMMM M M M Ngg!!!!!!!!! s>B(CC etag_valueetags.ct|dkr|djtkrdStfd|DS)NrrTc3<K|]}|j |jkVdS)N)is_weakvalue).0etagrSs r2 z2FileResponse._strong_etag_match..ns1RRT\R4:+RRRRRRr3)lenrXrany)rSrTs` r2_strong_etag_matchzFileResponse._strong_etag_matchjsJ u::??uQx~994RRRRRRRRRRr3 last_modifiedcK|tjd|_||_||_t |d{VS)NF) set_statusr status_code _length_checkrZr_r(rI)r0rErSr_r1s r2 _not_modifiedzFileResponse._not_modifiedps_ 3444" *WW__W---------r3cK|tjd|_t |d{VSr9)rarrbcontent_lengthr(rI)r0rEr1s r2_precondition_failedz!FileResponse._precondition_failed{sO .:;;;WW__W---------r3c K|j}d}d|jtjdvr5||jdz}|r|}d}tj }| d|j d{V}|j dd|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+t1jt5|\} }| sd} d}n|rdnd}d}|j}|j }|}d}|j}||j|kr> |j}|j}|j}nm#t@$r`d ||jtj!<|"tFj$tK&|d{VcYSwxYw|||d kr|||z }|d krd }||z }ntO||n|||z }||kr]d ||jtj!<|"tFj$tK&|d{VStPj$}|"||r| |_)|r||jtj*<|rtj|jtj+<||_,|j|_-||_.d |jtj/<tatb|}|tPj$kr/d 2|||zd z ||jtj!<|d ks|j3tj4ks |j5dvr'tK&|d{VS| d|j6dd{V}|r|}nd } |7||||d{V | d|j8d{VS#| d|j8d{VwxYw)NFgzipz.gzTx-zapplication/octet-streamzbytes */rbyteszbytes {}-{}/{}r)i0rb)9r.r%getrACCEPT_ENCODING with_namenameis_filer:r;r<stat st_mtime_nsst_sizest_mtimeif_matchr^rgif_unmodified_since timestamp if_none_matchrdif_modified_since CONTENT_TYPE mimetypes guess_typer+_statusif_range http_rangestartstop ValueError CONTENT_RANGErarrbr(rIr@r content_typeCONTENT_ENCODINGVARYrZr_rf ACCEPT_RANGESr intformatmethod METH_HEADr#openrRclose)r0rEfilepathri gzip_pathrBstrSr_ifmatch unmodsince ifnonematchmodsincectencoding should_set_ctr# file_sizer7rifrangerngend real_startr5r6r1s r2rIzFileResponse.prepares: W_(()=rBB B B **8=5+@AAI  "" $%''#'#7#7hm#L#LLLLLLL9992: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 # [#+2 T'(#u%% '3 3 3/?/F/FJ.2I00DL+ , A::4>99T[J=V=V11111111 1))$ tDDDDDDDD  FFF 9vuEEEEEEEE E&&tTZ88 8 8 8 8 8 8 8 8$&&tTZ88 8 8 8 8 8 8 8 8s5I A'J54J5(S((#T )rr NN)__name__ __module__ __qualname____doc__r r+r,r-rr rr)rrrrDrR staticmethodr rboolr^floatrdrgrI __classcell__)r1s@r2rr,s*66 % $*. &&C%&&& &  & ,' & &&&&&& *24S'CFOR ,$,.sG=@IL *SsS5s3CSSSS\S .$ .25 .FK . & ' . . . . . ..$. & '......^9]^9x@T7U^9^9^9^9^9^9^9^9^9^9r3r)-r:rosr,rJtypingrrrrrrr r r r r rjrabcrhelpersrrtypedefsrrweb_exceptionsrrrr web_responser__all__ web_requestrrm_T_OnChunkSentrenvironrpr__annotations__rr3r2rs                            %%%%%%########)))))))) )((((( )(((((((E7IdO#;<=$rz~~.BCCDD E$KDDDt9t9t9t9t9>t9t9t9t9t9r3