o
    $6d*                     @   s   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m	Z	 e
de dededefddZG d	d
 d
ZG dd dZdS )    N)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.scopebodyreturnc                 C   s*  | d |  dddd| d dd| d dd	| d
  d|  ddt|tjdddd}|  dp;d}|d |d< |d |d< |  drU| d d |d< |  dg D ]7\}}|d}|dkrkd}n|dkrrd}nd|  dd }|d}||v r|| d! | }|||< q[|S )"zE
    Builds a scope and request body into a WSGI environ object.
    method	root_path utf8latin1pathZquery_stringasciizHTTP/http_version)   r   schemehttpTF)REQUEST_METHODZSCRIPT_NAMEZ	PATH_INFOZQUERY_STRINGZSERVER_PROTOCOLzwsgi.versionzwsgi.url_schemez
wsgi.inputzwsgi.errorszwsgi.multithreadzwsgi.multiprocesszwsgi.run_onceserver)	localhostP   r   ZSERVER_NAMEr   ZSERVER_PORTclientZREMOTE_ADDRheaderszcontent-lengthZCONTENT_LENGTHzcontent-typeZCONTENT_TYPEZHTTP_-_,)	getencodedecodeioBytesIOsysstdoutupperreplace)r   r   environr   namevalueZcorrected_name r(   pC:\Users\jesus\OneDrive\Desktop\erpjis_fastapi\backend\jisbackend\Lib\site-packages\starlette/middleware/wsgi.pybuild_environ   s<   




r*   c                   @   s:   e Zd ZdejddfddZdedededdfd	d
Z	dS )WSGIMiddlewareappr   Nc                 C   s
   || _ d S N)r,   )selfr,   r(   r(   r)   __init__A   s   
zWSGIMiddleware.__init__r   receivesendc                    s2   |d dks	J t | j|}|||I d H  d S )Ntyper   )WSGIResponderr,   )r.   r   r0   r1   Z	responderr(   r(   r)   __call__D   s   zWSGIMiddleware.__call__)
__name__
__module____qualname__typingCallabler/   r   r   r   r4   r(   r(   r(   r)   r+   @   s    r+   c                	   @   s   e Zd ZdejdeddfddZdededdfd	d
Z	deddfddZ
	ddedejejeef  dejddfddZdedejddfddZdS )r3   r,   r   r   Nc                 C   s<   || _ || _d | _d | _ttj\| _| _	d| _
d | _d S )NF)r,   r   statusresponse_headersanyioZcreate_memory_object_streammathinfstream_sendstream_receiveresponse_startedexc_info)r.   r,   r   r(   r(   r)   r/   K   s   
zWSGIResponder.__init__r0   r1   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   r<   Zcreate_task_groupZ
start_soonsenderr?   	to_threadZrun_syncwsgistart_responserB   with_traceback)r.   r0   r1   r   rD   messager%   Z
task_groupr(   r(   r)   r4   V   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 r-   )r@   )r.   r1   rK   r(   r(   r)   rF   f   s   .zWSGIResponder.senderr:   r;   rB   c                 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>v   s    z0WSGIResponder.start_response.<locals>.<listcomp>zhttp.response.start)r2   r:   r   )	rB   rA   splitintr<   from_threadrunr?   r1   )r.   r:   r;   rB   Zstatus_code_stringr   status_coder   r(   r(   r)   rI   k   s    zWSGIResponder.start_responser%   rI   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)r2   r   rD   rC   )r2   r   )r,   r<   rS   rT   r?   r1   )r.   r%   rI   chunkr(   r(   r)   rH      s   
zWSGIResponder.wsgir-   )r5   r6   r7   r8   r9   r   r/   r   r   r4   rF   strListTupleAnyrI   dictrH   r(   r(   r(   r)   r3   J   s    	
r3   )r   r=   r!   r8   warningsr<   Zstarlette.typesr   r   r   warnDeprecationWarningbytesr[   r*   r+   r3   r(   r(   r(   r)   <module>   s    .
