o
    ^~#g                     @  s   d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZd dlm	Z	m
Z
 d dlmZmZmZ ede dddZG dd dZG dd dZdS )    )annotationsN)ObjectReceiveStreamObjectSendStream)ReceiveScopeSendzstarlette.middleware.wsgi is deprecated and will be removed in a future release. Please refer to https://github.com/abersheeran/a2wsgi as a replacement.scoper   bodybytesreturndict[str, typing.Any]c           	      C  sL  |  dddd}| d dd}||r#|t|d }| d ||| d d	d
| d  d|  ddt|tjdddd}|  dpLd}|d |d< |d |d< |  drf| d d |d< |  dg D ]7\}}|d}|dkr|d}n|dkrd}nd| 	 
d d!}|d}||v r|| d" | }|||< ql|S )#zE
    Builds a scope and request body into a WSGI environ object.
    	root_path utf8latin1pathNmethodquery_stringasciizHTTP/http_version)   r   schemehttpTF)REQUEST_METHODSCRIPT_NAME	PATH_INFOQUERY_STRINGSERVER_PROTOCOLzwsgi.versionzwsgi.url_schemez
wsgi.inputzwsgi.errorszwsgi.multithreadzwsgi.multiprocesszwsgi.run_onceserver)	localhostP   r   SERVER_NAMEr   SERVER_PORTclientREMOTE_ADDRheaderszcontent-lengthCONTENT_LENGTHzcontent-typeCONTENT_TYPEHTTP_-_,)getencodedecode
startswithlenioBytesIOsysstdoutupperreplace)	r   r	   script_name	path_infoenvironr   namevaluecorrected_name r=   ~/var/www/static.ux5.de/https/Moving-Object-Detection-with-OpenCV/env/lib/python3.10/site-packages/starlette/middleware/wsgi.pybuild_environ   sD   





r?   c                   @  s    e Zd ZdddZdddZdS )WSGIMiddlewareapp typing.Callable[..., typing.Any]r   Nonec                 C  s
   || _ d S N)rA   )selfrA   r=   r=   r>   __init__J   s   
zWSGIMiddleware.__init__r   r   receiver   sendr   c                   s2   |d dks	J t | j|}|||I d H  d S )Ntyper   )WSGIResponderrA   )rE   r   rG   rH   	responderr=   r=   r>   __call__M   s   zWSGIMiddleware.__call__N)rA   rB   r   rC   )r   r   rG   r   rH   r   r   rC   )__name__
__module____qualname__rF   rL   r=   r=   r=   r>   r@   I   s    
r@   c                   @  sT   e Zd ZU ded< ded< d#ddZd$ddZd%ddZ	d&d'ddZd(d!d"ZdS ))rJ   z8ObjectSendStream[typing.MutableMapping[str, typing.Any]]stream_sendz;ObjectReceiveStream[typing.MutableMapping[str, typing.Any]]stream_receiverA   rB   r   r   r   rC   c                 C  s<   || _ || _d | _d | _ttj\| _| _	d| _
d | _d S )NF)rA   r   statusresponse_headersanyiocreate_memory_object_streammathinfrP   rQ   response_startedexc_info)rE   rA   r   r=   r=   r>   rF   W   s   
zWSGIResponder.__init__rG   r   rH   r   c              
     s  d}d}|r| I d H }|| dd7 }| dd}|st| j|}t 4 I d H <}|| j| | j4 I d H  tj	| j
|| jI d H  W d   I d H  n1 I d H sXw   Y  W d   I d H  n1 I d H smw   Y  | jd ur| jd | jd | jd d S )	N    Tr	   	more_bodyFr   r      )r,   r?   r   rT   create_task_group
start_soonsenderrP   	to_threadrun_syncwsgistart_responserY   with_traceback)rE   rG   rH   r	   r[   messager9   
task_groupr=   r=   r>   rL   `   s$   *(
zWSGIResponder.__call__c              	     sf   | j 4 I d H  | j 2 z3 d H W }||I d H  q6 W d   I d H  d S 1 I d H s,w   Y  d S rD   )rQ   )rE   rH   re   r=   r=   r>   r_   p   s   .zWSGIResponder.senderNrR   strrS   list[tuple[str, str]]rY   
typing.Anyc                 C  sZ   || _ | js+d| _|dd\}}t|}dd |D }tj| jjd||d d S d S )NT r   c                 S  s0   g | ]\}}|  d  |  d fqS )r   )stripr-   lower).0r:   r;   r=   r=   r>   
<listcomp>   s    z0WSGIResponder.start_response.<locals>.<listcomp>zhttp.response.start)rI   rR   r%   )	rY   rX   splitintrT   from_threadrunrP   rH   )rE   rR   rS   rY   status_code_stringr*   status_coder%   r=   r=   r>   rc   u   s    zWSGIResponder.start_responser9   r   rc   c                 C  sH   |  ||D ]}tj| jjd|dd qtj| jjddd d S )Nzhttp.response.bodyT)rI   r	   r[   rZ   )rI   r	   )rA   rT   rq   rr   rP   rH   )rE   r9   rc   chunkr=   r=   r>   rb      s   
zWSGIResponder.wsgi)rA   rB   r   r   r   rC   )rG   r   rH   r   r   rC   )rH   r   r   rC   rD   )rR   rg   rS   rh   rY   ri   r   rC   )r9   r   rc   rB   r   rC   )	rM   rN   rO   __annotations__rF   rL   r_   rc   rb   r=   r=   r=   r>   rJ   S   s   
 

	
	rJ   )r   r   r	   r
   r   r   )
__future__r   r1   rV   r3   typingwarningsrT   	anyio.abcr   r   starlette.typesr   r   r   warnDeprecationWarningr?   r@   rJ   r=   r=   r=   r>   <module>   s     
4
