Viewing File: /opt/alt/python38/lib64/python3.8/site-packages/aiohttp/__pycache__/web_fileresponse.cpython-38.pyc

U

'7`A#@sddlZddlZddlZddlZddlZddlmZmZmZm	Z	m
Z
mZmZm
Z
mZddlmZddlmZddlmZddlmZmZmZmZddlmZd	Zerdd
lmZee
ege	dfZ e!ej"#dZ$Gdd
d
eZ%dS)N)	IO
TYPE_CHECKINGAny	AwaitableCallableListOptionalUnioncast)hdrs)AbstractStreamWriter)LooseHeaders)HTTPNotModifiedHTTPPartialContentHTTPPreconditionFailedHTTPRequestRangeNotSatisfiable)StreamResponse)FileResponse)BaseRequestZAIOHTTP_NOSENDFILEcseZdZdZdeeejfeee	ee	e
ddfdd
Zee
eeeedd	d
Zde
eeeedfd
dZde	edfddZZS)rz,A response object can be used to send files.N)path
chunk_sizestatusreasonheadersreturncs6tj|||dt|tr&t|}||_||_dS)N)rrr)super__init__
isinstancestrpathlibPath_path_chunk_size)selfrrrrr	__class__K/opt/alt/python38/lib64/python3.8/site-packages/aiohttp/web_fileresponse.pyr,s


zFileResponse.__init__)writerfobjoffsetcountrcs|j}t}|d|j|IdH|d|j|IdH}|r~||IdH||}|dkr`q~|d|jt||IdH}q:|IdH|S)Nr)	r%asyncioget_event_looprun_in_executorseekreadwriteminZdrain)r&r+r,r-r.rloopchunkr)r)r*_sendfile_fallback<szFileResponse._sendfile_fallbackr)requestr,r-r.rc	st|IdH}|dk	stts2tjdks2|jrH|||||IdHS|j}|j	}|dk	s`tz|
||||IdHWn*tk
r|||||IdHYSXtIdH|S)N))
rprepareAssertionError
NOSENDFILEsysversion_infoZcompressionr8Z_loop	transportsendfileNotImplementedErrorZ	write_eof)r&r9r,r-r.r+r6rAr'r)r*	_sendfileRszFileResponse._sendfile)r9rc
s\|j}d}d|jtjdkr>||jd}|r>|}d}t	}|
d|jIdH}|j}|dk	r|j
|kr|tjd|_t|IdHS|j}|dk	r|j
|kr|tjt|IdHStj|jkrtt|\}	}
|	sd}	d}n|rdnd}
d}|j}|j}
|
}d}|j}|dksH|j
|krTz|j}|j}|j }WnFt!k
rd|
|jtj"<|t#jt|IdHYSX|dk	s|dk	rT|dkr|dkr||
7}|dkrd}|
|}nt$|dk	r|n|
|
|}||
krDd|
|jtj"<|t#jt|IdHSt%j}|||r`|	|_&|
rr|
|jtj'<|rtj|jtj(<|j
|_)||_*d	|jtj+<t,t-|}|t%jkrd
.|||d|
|jtj"<|j/tj0ks|j1dkrt|IdHS|
d|j2d
IdH}|r"|}nd}z|4||||IdHWS|
d|j3IdHXdS)NFgzipz.gzTzapplication/octet-streamzbytes */rbyteszbytes {}-{}/{}r)i0rb)5r$rgetrZACCEPT_ENCODINGZ	with_namenameis_filer/r0r1statZif_modified_sincest_mtimeZ	timestampZ
set_statusrZstatus_codeZ
_length_checkrr<Zif_unmodified_sincerZCONTENT_TYPE	mimetypesZ
guess_typer!Z_statusst_sizeZif_rangeZ
http_rangestartstop
ValueErrorZ
CONTENT_RANGErr5rZcontent_typeZCONTENT_ENCODINGZVARYZ
last_modifiedZcontent_lengthZ
ACCEPT_RANGESr
intformatmethodZ	METH_HEADropencloserD)r&r9filepathrEZ	gzip_pathr6stZmodsinceZ
unmodsinceZctencodingZ
should_set_ctr	file_sizer.rQZifrangerngendZ
real_startr,r-r'r)r*r<gs









zFileResponse.prepare)rrNN)__name__
__module____qualname____doc__r	r!r"r#rTrrrr
rrr8rDr<
__classcell__r)r)r'r*r)s4r)&r/rOosr"r?typingrrrrrrrr	r
rFrabcr
ZtypedefsrZweb_exceptionsrrrrZweb_responser__all__Zweb_requestrrGZ_T_OnChunkSentboolenvironrJr>rr)r)r)r*<module>s ,
Back to Directory File Manager