a
    åzeÛ  ã                   @   s^   d dl Z g d¢ZG dd„ dƒZdd„ Zdd„ Zdd
d„Zdd„ Zdd„ Zh 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.9/wsgiref/util.pyÚ__init__   s    
zFileWrapper.__init__c                 C   s6   dd l }|jdtdd | j | j¡}|r.|S t‚d S )Nr   zXFileWrapper's __getitem__ method ignores 'key' parameter. Use iterator protocol instead.é   )Ú
stacklevel)ÚwarningsÚwarnÚDeprecationWarningr
   Úreadr   Ú
IndexError)r   Úkeyr   Ú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 r   )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   
r   c                 C   s   |   d¡dv rdS dS d S )NZHTTPS)ZyesZonÚ1ÚhttpsÚhttp)Úget)Úenvironr   r   r   r   *   s    r   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 )Nú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   2   s    
r   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/;=,r2   )Úsafer3   r0   é   ZQUERY_STRINGú?)r   r4   r)   r%   )r&   Zinclude_queryr5   r)   Ú	path_infor   r   r   r   F   s    
r   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 )
Nr6   r7   r1   c                 S   s   g | ]}|r|d kr|‘qS )Ú.r   )Ú.0Úpr   r   r   Ú
<listcomp>e   ó    z#shift_path_info.<locals>.<listcomp>r9   éÿÿÿÿr0   r<   )r%   ÚsplitÚ	posixpathÚnormpathÚendswithÚjoin)r&   r;   Ú
path_partsÚnameZscript_namer   r   r   r   S   s$    

r   c                 C   sþ   |   dd¡ |   dd¡ |   d| d ¡ |   dd¡ d| vr\d	| v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_METHODÚGETr0   r6   r7   r1   zwsgi.version)r9   r   zwsgi.run_oncer   zwsgi.multithreadzwsgi.multiprocess)ÚStringIOÚBytesIOz
wsgi.inputzwsgi.errorsr'   r$   r,   r/   r#   r-   )Ú
setdefaultÚiorJ   rK   r   )r&   rJ   rK   r   r   r   r   |   s&    r   >   ZupgradeÚtezproxy-authorizationZtrailerszproxy-authenticatez
keep-aliveÚ
connectionztransfer-encodingc                 C   s   t |  ¡ ƒS r   )Ú_hoppishÚlower)Zheader_namer   r   r   Úis_hop_by_hopª   s    rR   )T)rC   Ú__all__r   r   r   r   r   r   Ú__contains__rP   rR   r   r   r   r   Ú<module>   s   
)(
