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

U

'7`Z
@sddlZddlZddlZddlZddlmZddlmZddlm	Z
ddlmZddl
mZddlmZmZmZmZmZmZmZmZddlZdd	lmZmZdd
lmZddlmZm Z ddlm!Z!m"Z"m#Z#m$Z$m%Z%dd
l&m'Z'm(Z(ddl)m*Z*m+Z+ddl,m-Z-ddl.m/Z/ddl0m1Z1ddl2m3Z3ddl4m5Z5m6Z6dZ7erJddl8m9Z9ee$e+dedge3fZ:ee3gee6fZ;e$dde#iidddde<d
Z=Gddde>Z?Gddde>Z@Gd ddeZAdS)!N)deque)suppress)escape)
HTTPStatus)Logger)
TYPE_CHECKINGAny	AwaitableCallableOptionalTupleTypecast)AbstractAccessLoggerAbstractStreamWriter)BaseProtocol)CeilTimeoutcurrent_task)HttpProcessingErrorHttpRequestParser
HttpVersion10RawRequestMessageStreamWriter)
access_logger
server_logger)
EMPTY_PAYLOADStreamReader)
tcp_keepalive)
HTTPException)AccessLogger)BaseRequest)ResponseStreamResponse)RequestHandlerRequestPayloadErrorPayloadAccessError)Serverr$zasyncio.Task[None]ZUNKNOWN/TFc@seZdZdZdS)r%zPayload parsing error.N__name__
__module____qualname____doc__r.r.G/opt/alt/python38/lib64/python3.8/site-packages/aiohttp/web_protocol.pyr%9sr%c@seZdZdZdS)r&z-Payload was accessed after response was sent.Nr)r.r.r.r/r&=sr&cseZdZdZdZdZddeeeej	ddddd	d
dde
jee
eeeeee
eeeeed
fddZedddZeedddZdHeeddddZe
jddfddZeeddfddZedd d!d"Zddd#d$Ze dd%d&d'Z!e
dd(d)d*Z"ddd+d,Z#ddd-d.Z$e%e&edd/d0d1Z'eedd2d3d4Z(eedd2d5d6Z)ddd7d8Z*e%ee+e&e
fd9d:d;Z,ddd<d=Z-e%e&ee
d>d?d@Z.dIe%eeeeee&dBdCdDZ/dJe0eeeeeddEdFdGZ1Z2S)Kr$aHTTP protocol implementation.

    RequestHandler handles incoming HTTP request. It reads request line,
    request headers and request payload and calls handle_request() method.
    By default it always returns with 404 response.

    RequestHandler handles errors in incoming request, like bad
    status line, bad headers or incomplete payload. If any error occurs,
    connection gets closed.

    :param keepalive_timeout: number of seconds before closing
                              keep-alive connection
    :type keepalive_timeout: int or None

    :param bool tcp_keepalive: TCP keep-alive is on, default is on

    :param bool debug: enable debug mode

    :param logger: custom logger object
    :type logger: aiohttp.log.server_logger

    :param access_log_class: custom class for access_logger
    :type access_log_class: aiohttp.abc.AbstractAccessLogger

    :param access_log: custom logging object
    :type access_log: aiohttp.log.server_logger

    :param str access_log_format: access log format string

    :param loop: Optional event loop

    :param int max_line_size: Optional maximum header line size

    :param int max_field_size: Optional maximum header field size

    :param int max_headers: Optional maximum header size

    r)_request_count
_keepalive_manager_request_handler_request_factory_tcp_keepalive_keepalive_time_keepalive_handle_keepalive_timeout_lingering_time	_messages
_message_tail_waiter_error_handler
_task_handler_upgrade_payload_parser_request_parserZ_reading_pausedloggerdebug
access_logr_close_force_close_current_requestgR@TFiig$@i)keepalive_timeoutrrBaccess_log_classrDaccess_log_formatrC
max_line_sizemax_headersmax_field_sizelingering_timeread_bufsizer')managerlooprHrrBrIrDrJrCrKrLrMrNrOc
	st|d|_d|_d|_||_|j|_|j|_	||_
d|_d|_||_
t|
|_t|_d|_d|_d|_d|_d|_d|_t||||
||td|_||_|	|_||_|r||||_nd|_d|_d|_ dS)NrFg)rKrMrLZpayload_exception)!super__init__r0r1rGr2Zrequest_handlerr3Zrequest_factoryr4r5r6r7r8floatr9rr:r;r<r=r>r?r@rr%rArBrCrDrrErF)selfrPrQrHrrBrIrDrJrCrKrLrMrNrO	__class__r.r/rTsR

zRequestHandler.__init__)returncCsd|jj|jdk	rdndS)Nz<{} {}>Z	connectedZdisconnected)formatrXr*	transportrVr.r.r/__repr__szRequestHandler.__repr__cCs|jSN)r8r\r.r.r/rHsz RequestHandler.keepalive_timeout.@N)timeoutrYc
sd|_|jdk	r|j|jr*|jttjtjzt||j	d`|j
dk	rj|j
sj|j
IdH|jdk	r|j
t|jdk	r|js|jIdHW5QRXW5QRX|jdk	r|j|jdk	r|jd|_dS)zWorker process is about to exit, we need cleanup everything and
        stop accepting requests. It is especially important for keep-alive
        connections.TNrQ)rFr7cancelr<rasyncioCancelledErrorTimeoutErrorr_loopr=donerG_cancelr>r[close)rVr`r.r.r/shutdowns$



 



zRequestHandler.shutdown)r[rYcsXt|ttj|}|jr&t||j|	|_
|jdk	sFt|j||dSr^)
rSconnection_maderrcZ	Transportr5rrfcreate_taskstartr>r2AssertionError)rVr[Zreal_transportrWr.r/rkszRequestHandler.connection_made)excrYcs|jdkrdS|j||t|d|_d|_d|_d|_d|_|jdk	rZ|j|j	dk	r|dkrtt
d}|j	||jdk	r|j|j
dk	r|j
|jdk	r|jd|_
|jdk	r|jd|_dS)NTzConnection lost)r2connection_lostrSrFr4r3rAr7rbrGConnectionResetErrorrhr=r>r<r@Zfeed_eof)rVrorWr.r/rps2











zRequestHandler.connection_lost)parserrYcCs2|jdkst||_|jr.|j|jd|_dS)NrR)r@rnr;	feed_data)rVrrr.r.r/
set_parser&s
zRequestHandler.set_parsercCsdSr^r.r\r.r.r/eof_received0szRequestHandler.eof_received)datarYc
Cs|js|jrdS|jdkrP|jsP|jdk	s2tz|j|\}}}Wntk
r}z0|j	|
t||jd||j|_
|W5d}~XYntk
r}z,|j	|
t||jd||_
|W5d}~XYnpX|r6|D]&\}}|jd7_|j||fq|j}|dk	r6|s6|d||_|r|r||_nN|jdkrz|jrz|rz|j|7_n$|r|j|\}	}|	r|dS)Nir)rFrEr@r?rArnrsrrfrlhandle_parse_errorrmessager=ri	Exceptionr0r:appendr<rgZ
set_resultr;)
rVrvZmessagesZupgradedtailromsgpayloadZwaitereofr.r.r/
data_received3sL



zRequestHandler.data_received)valrYcCs ||_|jr|jd|_dS)zMSet keep-alive connection mode.

        :param bool val: new state.
        N)r1r7rb)rVrr.r.r/
keep_aliveds
zRequestHandler.keep_alivecCsd|_|jr|jdS)ziStop accepting new pipelinig messages and close
        connection when handlers done processing messagesTN)rEr<rbr\r.r.r/rinszRequestHandler.closecCs4d|_|jr|j|jdk	r0|jd|_dS)zForce close connectionTN)rFr<rbr[rir\r.r.r/force_closeus


zRequestHandler.force_close)requestresponsetimerYcCs(|jdk	r$|j|||j|dSr^)rlogrfr)rVrrrr.r.r/
log_access~s
zRequestHandler.log_access)argskwrYcOs|jr|jj||dSr^)rCrBrVrrr.r.r/	log_debugszRequestHandler.log_debugcOs|jj||dSr^)rBZ	exceptionrr.r.r/
log_exceptionszRequestHandler.log_exceptioncCsT|js|jsdS|j|j}|jr<|j|kr<|dS|j|j	|j
|_dSr^)rFr1r6r8r<rfrrZ
call_laterKEEPALIVE_RESCHEDULE_DELAY_process_keepaliver7)rVnextr.r.r/rsz!RequestHandler._process_keepalive)r
start_timerYc
sL|jdk	stz(z||_||IdH}W5d|_XWntk
r}z0t|j|j|j|jd}|	|||IdH}W5d}~XYnt
jk
rYnt
jk
r}z2|j
d|d||d}|	|||IdH}W5d}~XYnZtk
r.}z&||d|}|	|||IdH}W5d}~XYnX|	|||IdH}||fS)N)statusreasontextheaderszRequest handler timed out.exc_infoirw)r3rnrGrr"rrrrfinish_responsercrdrerhandle_errorrz)rVrrresproresetr.r.r/_handle_requests2$$&zRequestHandler._handle_requestcs|j}|j}|dk	st|j}|dk	s*t|j}d}|jdk	sBt|jdk	sPt|js|jsz@z|
|_	|j	IdHWn tjk
rYWqYnXW5d|_	X|j
\}}|}|jd7_t||}	|||||	|}
dz$zv|j||
|}z|IdH\}}
Wn6tjtfk
rN|dYWWqYnXt|ddrjtdt~|
r|dWWqt |j!|_|"sX|j#}|js4|r4|d	||}||}t$tj%tjP|"s*||kr*t&|||d
|'IdHW5QRX|}qW5QRX|"sX|jsX|d|(|)t*Wntjk
r|dYWqYnzt+k
r}z"|j,r|j-d
|d|.W5d}~XYn:t/k
r}z|j-d|d|.W5d}~XYnXW5|jdkr4|dk	r4|dn\|js|jr|js|dk	r|j}||_|jdkr||||j|_nqXqP|jsd|_|jdk	r|j0dkr|j(dS)a_Process incoming request.

        It reads request line, request headers and request payload, then
        calls handle_request() method. Subclass has to override
        handle_request(). start() handles various exceptions in request
        or response handling. Connection is being closed always unless
        keep_alive(True) specified.
        Nrz'Ignored premature client disconnection.z&Ignored premature client disconnectionZ__http_exception__Fzlreturning HTTPException object is deprecated (#2415) and will be removed, please raise the exception insteadz(Ignored premature client disconnection 2z'Start lingering close timer for %s sec.razUncompleted request.z'Ignored premature client disconnection zUnhandled runtime exceptionrzUnhandled exception)1rfr>rnr2r8r4r3rFr:r<Z
create_futurercrdpopleftrZrequests_countrr[rr1rEr6r7Zcall_atrrlrConnectionErrorgetattrwarningswarnDeprecationWarningboolrZis_eofr9rrerZreadanyriZ
set_exceptionr&RuntimeErrorrCrrrzr=)rVrQZhandlerrPrHrryr~rmwriterrZnowtaskrrNZend_tror.r.r/rms	









zRequestHandler.start)rrrrYcs|jdk	r6|jdd|_|jr6|j|jd|_z
|j}Wn4tk
rt|dkrbtdntd|YnXz ||IdH|	IdHWn$t
k
r||||YdSX||||dSdS)a
        Prepare the response and write_eof, then log access. This has to
        be called within the context of any exception so the access logger
        can get exception information. Returns True if the client disconnects
        prematurely.
        NFrRz+Missing return statement on request handlerz7Web-handler should return a response instance, got {!r}T)rAZset_upgradedr?r;rsprepareAttributeErrorrrZ	write_eofrr)rVrrrZprepare_methr.r.r/r4s0	



zRequestHandler.finish_responserw)rrroryrYc
	Cs|jd|dd}|tjkrdtj}tjj}d}|jrVttt	}W5QRXd|j
ddkr|rt|}d	|d
}dj||d}d}n|r|}|d
|}t
|||d}	|	|jjdks|jdkr||	S)zHandle errors.

        Returns HTTP response with specific status code. Logs additional
        information. It always closes current connection.zError handling requestrz
text/plainz{0.value} {0.phrase}Nz	text/htmlZAcceptz<h2>Traceback:</h2>
<pre>z</pre>zV<html><head><title>{title}</title></head><body>
<h1>{title}</h1>
{msg}
</body></html>
)titler}z

)rrZcontent_typer)rrZINTERNAL_SERVER_ERRORrZdescriptionrCrrz	traceback
format_excrgethtml_escaper"rrZoutput_sizer[)
rVrrroryZctrr}tbrr.r.r/rXs6

zRequestHandler.handle_error)rrroryrYcsrt}|dk	stttt||||j}|||||}||IdH|IdH|j	dk	rh|j	
d|_dSr^)rrnr!ERRORrrfrrrr[rir=)rVrrroryrrrr.r.r/rxs 

z!RequestHandler.handle_parse_error)r_)rwNN)NN)3r*r+r,r-r	__slots__rr rZ
LOG_FORMATrcZAbstractEventLooprUrrr
rstrintrTr]propertyrHrrjZ
BaseTransportrk
BaseExceptionrprrtrubytesrrrirr!r#rrrrrrrmrrrrx
__classcell__r.r.rWr/r$As'"G "
1


y'3)BrcZasyncio.streamsrrcollectionsr
contextlibrZhtmlrrZhttprZloggingrtypingrrr	r
rrr
rZyarlabcrrZ
base_protocolrZhelpersrrrrrrrrrrZstreamsrrZtcp_helpersrZweb_exceptionsrZweb_logr Zweb_requestr!Zweb_responser"r#__all__Z
web_serverr'Z_RequestFactoryZ_RequestHandlerZURLrrzr%r&r$r.r.r.r/<module>sd(
Back to Directory File Manager