3 \ � @ sx d Z ddlZddddddgZG d d� d�Zd d� Zdd� Zdd d�Zdd� Zdd� Zddddddddd�j Z dd� ZdS )z$Miscellaneous WSGI-related Utilities� N�FileWrapper�guess_scheme�application_uri�request_uri�shift_path_info�setup_testing_defaultsc @ s2 e Zd ZdZddd�Zdd� Zdd� Zd d � ZdS ) r z1Wrapper to convert file-like objects to iterables� c C s" || _ || _t|d�r|j| _d S )N�close)�filelike�blksize�hasattrr )�selfr r � r �$/usr/lib64/python3.6/wsgiref/util.py�__init__ s zFileWrapper.__init__c C s | j j| j�}|r|S t�d S )N)r �readr � IndexError)r �key�datar r r �__getitem__ s zFileWrapper.__getitem__c C s | S )Nr )r r r r �__iter__ s zFileWrapper.__iter__c C s | j j| j�}|r|S t�d S )N)r r r � StopIteration)r r r r r �__next__ s zFileWrapper.__next__N)r )�__name__� __module__�__qualname__�__doc__r r r r r r r r r s c C s | j d�dkrdS dS dS ) zMReturn a guess for whether 'wsgi.url_scheme' should be 'http' or 'https' ZHTTPS�yes�on�1�https�httpN)r r r )�get)�environr r r r # s c C s� | d d }ddl m} | jd�r0|| d 7 }nR|| d 7 }| d dkrf| d d kr�|d | d 7 }n| d dkr�|d | d 7 }||| jd�p�d dd�7 }|S )z@Return the application's base URI (no PATH_INFO or QUERY_STRING)zwsgi.url_schemez://r )�quote� HTTP_HOST�SERVER_NAMEr �SERVER_PORT�443�:�80�SCRIPT_NAME�/�latin1)�encoding)�urllib.parser$ r" )r# �urlr$ r r r r + s Tc C sp t | �}ddlm} || jdd�ddd�}| jd�sF||d d � 7 }n||7 }|rl| jd�rl|d| d 7 }|S ) zBReturn the full request URI, optionally including the query stringr )r$ � PATH_INFO� z/;=,r- )Zsafer. r+ � NZQUERY_STRING�?)r r/ r$ r" )r# Z include_queryr0 r$ � path_infor r r r ? s c C s� | j dd�}|sdS |jd�}dd� |dd � D �|dd�<