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

U

'7`a@sddlZddlmZmZmZmZmZmZddlm	Z	m
Z
ddlmZddl
mZddlmZdZerpdd	lmZed
Zeeeeefddd
ZeedddZeegeefZeeegeefZddde	deeeee
edddZdedddZdS)N)
TYPE_CHECKING	AwaitableCallableTupleTypeTypeVar)HTTPPermanentRedirect	_HTTPMove)Request)StreamResponse)SystemRoute)
middlewarenormalize_path_middleware)Application_Func)requestpathreturncs@|j|d}|jj|IdH}||_|jdkr8d|fSd|fS)N)Zrel_urlTF)ZcloneappZrouterZresolveZ_match_infoZhttp_exception)rrZalt_request
match_inforJ/opt/alt/python38/lib64/python3.8/site-packages/aiohttp/web_middlewares.py_check_request_resolvess
r)frcCs
d|_|S)Nr)Z__middleware_version__)rrrrr srTF)append_slashremove_slash
merge_slashesredirect_class)rrrrrcs:o}|stdttttdfdd}|S)a
    Middleware factory which produces a middleware that normalizes
    the path of a request. By normalizing it means:

        - Add or remove a trailing slash to the path.
        - Double slashes are replaced by one.

    The middleware returns as soon as it finds a path that resolves
    correctly. The order if both merge and append/remove are enabled is
        1) merge slashes
        2) append/remove slash
        3) both merge slashes and append/remove slash.
    If the path resolves with at least one of those conditions, it will
    redirect to the new path.

    Only one of `append_slash` and `remove_slash` can be enabled. If both
    are `True` the factory will raise an assertion error

    If `append_slash` is `True` the middleware will append a slash when
    needed. If a resource is defined with trailing slash and the request
    comes without it, it will append it automatically.

    If `remove_slash` is `True`, `append_slash` must be `False`. When enabled
    the middleware will remove trailing slashes and redirect if the resource
    is defined

    If merge_slashes is True, merge multiple consecutive slashes in the
    path into one.
    z#Cannot both remove and append slashrhandlerrcs0t|jjtr"g}d|jkr:|jdd\}}d|}n
d}|j}r\|tdd|rz|j	
dsz||dr|j	
dr||ddrr|tdd|drrtdd|}||dd|D]8}tdd|}t||IdH\}}|r|j|q||IdHS)N?rz//+/z^//+)
isinstancerZrouter
Zraw_pathsplitappendresubrendswithr)rr Zpaths_to_checkrZqueryZmerged_slashesZresolvesrrrrrrimplQs0

z'normalize_path_middleware.<locals>.impl)AssertionErrorrr_Handlerr)rrrrZcorrect_configurationr,rr+rr)s
%
rr)rrcsttttdfdd}|S)Nrc
s2|j||IdHW5QRSQRXdS)N)rZset_current_app)rr rrrr,tsz&_fix_request_current_app.<locals>.impl)rrr.r)rr,rr/r_fix_request_current_appssr0)r(typingrrrrrrZweb_exceptionsr	r
Zweb_requestrZweb_responserZweb_urldispatcherr
__all__Zweb_apprrstrboolrrr.Z_Middlewarerr0rrrr<module>s2 J
Back to Directory File Manager