B
    v9a  ã            	   @   st   d dl Z ddddddgZG dd„ dƒZd	d„ Zd
d„ Zddd„Zdd„ Zdd„ ZdddddddddœjZ	dd„ Z
dS )é    NÚFileWrapperÚguess_schemeÚapplication_uriÚrequest_uriÚshift_path_infoÚsetup_testing_defaultsc               @   s.   e Zd Zddd„Zdd„ Zdd„ Zdd	„ Zd
S )r   é    c             C   s"   || _ || _t|dƒr|j| _d S )NÚclose)ÚfilelikeÚblksizeÚhasattrr	   )Úselfr
   r   © r   ú/usr/lib/python3.7/util.pyÚ__init__   s    
zFileWrapper.__init__c             C   s   | j  | j¡}|r|S t‚d S )N)r
   Úreadr   Ú
IndexError)r   ÚkeyÚdatar   r   r   Ú__getitem__   s    zFileWrapper.__getitem__c             C   s   | S )Nr   )r   r   r   r   Ú__iter__   s    zFileWrapper.__iter__c             C   s   | j  | j¡}|r|S t‚d S )N)r
   r   r   ÚStopIteration)r   r   r   r   r   Ú__next__   s    zFileWrapper.__next__N)r   )Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r   r   r   r      s   
c             C   s   |   d¡dkrdS dS d S )NZHTTPS)ZyesZonÚ1ÚhttpsÚhttp)Úget)Úenvironr   r   r   r   #   s    c             C   s    | d d }ddl m} |  d¡r0|| d 7 }nR|| d 7 }| d dkrf| d d	kr‚|d
| d  7 }n| d dkr‚|d
| d  7 }|||  d¡p’ddd7 }|S )Nzwsgi.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 | ƒ}ddlm} ||  dd¡ddd}|  d¡sF||d	d … 7 }n||7 }|rl|  d
¡rl|d| d
  7 }|S )Nr   )r!   Ú	PATH_INFOÚ z/;=,r*   )Zsafer+   r(   é   ZQUERY_STRINGú?)r   r,   r!   r   )r    Zinclude_queryr-   r!   Ú	path_infor   r   r   r   ?   s    
c             C   sº   |   dd¡}|sd S | d¡}dd„ |dd… D ƒ|dd…< |d }|d= |   dd¡}t |d | ¡}| d¡r~|d d… }|s”| d¡s”|d7 }|| d< d |¡| d< |d	kr¶d }|S )
Nr.   r/   r)   c             S   s   g | ]}|r|d kr|‘qS )Ú.r   )Ú.0Úpr   r   r   ú
<listcomp>^   s    z#shift_path_info.<locals>.<listcomp>r0   éÿÿÿÿr(   r3   )r   ÚsplitÚ	posixpathÚnormpathÚendswithÚjoin)r    r2   Ú
path_partsÚnameZscript_namer   r   r   r   L   s$    

c             C   sþ   |   dd¡ |   dd¡ |   d| d ¡ |   dd¡ d| kr\d	| kr\|   dd
¡ |   d	d¡ |   dd¡ |   dd¡ |   dd¡ |   dd¡ ddlm}m} |   d|ƒ ¡ |   d|ƒ ¡ |   dt| ƒ¡ | d dkrâ|   dd¡ n| d dkrú|   dd¡ d S )Nr#   z	127.0.0.1ZSERVER_PROTOCOLzHTTP/1.0r"   ZREQUEST_METHODZGETr(   r.   r/   r)   zwsgi.version)r0   r   zwsgi.run_oncer   zwsgi.multithreadzwsgi.multiprocess)ÚStringIOÚBytesIOz
wsgi.inputzwsgi.errorszwsgi.url_schemer   r$   r'   r   r%   )Ú
setdefaultÚior?   r@   r   )r    r?   r@   r   r   r   r   u   s&    r0   )Z
connectionz
keep-alivezproxy-authenticatezproxy-authorizationÚteZtrailersztransfer-encodingZupgradec             C   s   t |  ¡ ƒS )N)Ú_hoppishÚlower)Zheader_namer   r   r   Úis_hop_by_hop£   s    rF   )T)r9   Ú__all__r   r   r   r   r   r   Ú__contains__rD   rF   r   r   r   r   Ú<module>   s   
))
