3 \� @stddlZddddddgZGdd�d�Zd d�Zd d�Zdd d�Zd d�Zdd�Zddddddddd�jZ dd�Z dS)�N� FileWrapper� guess_scheme�application_uri� request_uri�shift_path_info�setup_testing_defaultsc@s.eZdZd dd�Zdd�Zdd�Zdd �Zd S) r� cCs"||_||_t|d�r|j|_dS)N�close)�filelike�blksize�hasattrr )�selfr r �r�$/usr/lib64/python3.6/wsgiref/util.py�__init__s zFileWrapper.__init__cCs|jj|j�}|r|St�dS)N)r �readr � IndexError)r �key�datarrr� __getitem__szFileWrapper.__getitem__cCs|S)Nr)r rrr�__iter__szFileWrapper.__iter__cCs|jj|j�}|r|St�dS)N)r rr � StopIteration)r rrrr�__next__szFileWrapper.__next__N)r)�__name__� __module__� __qualname__rrrrrrrrr s cCs|jd�dkrdSdSdS)NZHTTPS�yes�on�1�https�http)rrr)�get)�environrrrr#scCs�|dd}ddlm}|jd�r0||d7}nR||d7}|ddkrf|dd kr�|d |d7}n|dd kr�|d |d7}|||jd �p�d dd�7}|S)Nzwsgi.url_schemez://r)�quote� HTTP_HOST� SERVER_NAMEr� SERVER_PORT�443�:�80� SCRIPT_NAME�/�latin1)�encoding)� urllib.parser#r!)r"�urlr#rrrr+s       TcCspt|�}ddlm}||jdd�ddd�}|jd�sF||d d�7}n||7}|rl|jd �rl|d |d 7}|S) Nr)r#� PATH_INFO�z/;=,r,)Zsafer-r*�Z QUERY_STRING�?)rr.r#r!)r"Z include_queryr/r#� path_inforrrr?s  cCs�|jdd�}|sdS|jd�}dd�|dd �D�|dd �<|d}|d=|jdd�}tj|d|�}|jd�r~|dd �}| r�|jd� r�|d7}||d<dj|�|d<|dkr�d}|S) Nr0r1r+cSsg|]}|r|dkr|�qS)�.r)�.0�prrr� <listcomp>^sz#shift_path_info.<locals>.<listcomp>r2r*r5���r9r9)r!�split� posixpath�normpath�endswith�join)r"r4� path_parts�nameZ script_namerrrrLs$     cCs�|jdd�|jdd�|jd|d�|jdd�d|kr\d |kr\|jdd �|jd d �|jd d�|jdd�|jdd�|jdd�ddlm}m}|jd|��|jd|��|jdt|��|ddkr�|jdd�n|ddkr�|jdd�dS)Nr%z 127.0.0.1ZSERVER_PROTOCOLzHTTP/1.0r$ZREQUEST_METHODZGETr*r0r1r+z wsgi.versionr2rz wsgi.run_oncezwsgi.multithreadzwsgi.multiprocess)�StringIO�BytesIOz wsgi.inputz wsgi.errorszwsgi.url_schemer r&r)rr')r2r)� setdefault�iorArBr)r"rArBrrrrus&           r2)Z connectionz keep-alivezproxy-authenticatezproxy-authorizationZteZtrailersztransfer-encodingZupgradecCs t|j��S)N)�_hoppish�lower)Z header_namerrr� is_hop_by_hop�srG)T) r;�__all__rrrrrr� __contains__rErGrrrr�<module>s ))