o
    JAfÛ  ã                   @   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                   @   s0   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 d S )NÚclose)ÚfilelikeÚblksizeÚhasattrr	   )Úselfr
   r   © r   ú#/usr/lib/python3.10/wsgiref/util.pyÚ__init__   s
   
ÿzFileWrapper.__init__c                 C   s2   dd l }|jdtdd | j | j¡}|r|S t‚)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‚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 )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¡r|| d 7 }n)|| d 7 }| d dkr4| d d	kr3|d
| d  7 }n| d dkrB|d
| d  7 }|||  d¡pJd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   sr   	 t | ƒ}ddlm} ||  dd¡ddd}|  d¡s$||d	d … 7 }n||7 }|r7|  d
¡r7|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… }|sK| d¡sK|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   s    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rs|   dd¡ d S | d dkr|   dd¡ d S 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ÚiorI   rJ   r   )r&   rI   rJ   r   r   r   r   |   s*   ÿr   >   zproxy-authenticatezproxy-authorizationÚteZtrailersZupgradeÚ
connectionztransfer-encodingz
keep-alivec                 C   s   	 t |  ¡ ƒS r   )Ú_hoppishÚlower)Zheader_namer   r   r   Úis_hop_by_hopª   s   rQ   )T)rB   Ú__all__r   r   r   r   r   r   Ú__contains__rO   rQ   r   r   r   r   Ú<module>   s    
)(ü