
    df*                         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j                  de       dededefdZ G d d	      Z G d
 d      Zy)    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                    | d   | j                  dd      j                  d      j                  d      | d   j                  d      j                  d      | d   j                  d      d	| d
    d| j                  dd      t        j                  |      t
        j                  dddd}| j                  d      xs d}|d   |d<   |d   |d<   | j                  d      r| d   d   |d<   | j                  dg       D ]n  \  }}|j                  d      }|dk(  rd}n+|dk(  rd}n#d| j                         j                  dd       }|j                  d      }||v r||   d!z   |z   }|||<   p |S )"zE
    Builds a scope and request body into a WSGI environ object.
    method	root_path utf8latin1path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ioBytesIOsysstdoutupperreplace)r   r   environr   namevaluecorrected_names          R/home/api-vastappli/venv/lib/python3.12/site-packages/starlette/middleware/wsgi.pybuild_environr7      s   
  /yyb188@GGQ6]))&188Bn-44W="5#8"9: 99Xv6jj&zz !G  YYx 5$5F#AYGM#AYGM yy!&x!3 yyB/ (e{{8$##-N^#+N$TF^113;;CEN X&W$N+c1E9E"'( N    c                   H    e Zd Zdej                  ddfdZdedededdfdZ	y)	WSGIMiddlewareappr   Nc                     || _         y N)r;   )selfr;   s     r6   __init__zWSGIMiddleware.__init__A   s	    r8   r   receivesendc                 r   K   |d   dk(  sJ t        | j                  |      } |||       d {    y 7 w)Ntyper   )WSGIResponderr;   )r>   r   r@   rA   	responders        r6   __call__zWSGIMiddleware.__call__D   s5     V}&&!$((E2	&&&s   -757)
__name__
__module____qualname__typingCallabler?   r   r   r   rF    r8   r6   r:   r:   @   s:    FOO  'E 'G '4 'D 'r8   r:   c            	           e Zd Zdej                  deddfdZdededdfdZ	deddfd	Z
	 dd
edej                  ej                  eef      dej                  ddfdZdedej                  ddfdZy)rD   r;   r   r   Nc                     || _         || _        d | _        d | _        t	        j
                  t        j                        \  | _        | _	        d| _
        d | _        y )NF)r;   r   statusresponse_headersanyiocreate_memory_object_streammathinfstream_sendstream_receiveresponse_startedexc_info)r>   r;   r   s      r6   r?   zWSGIResponder.__init__K   sR    
 $050Q0QHH1
-$- !&$(r8   r@   rA   c                   K   d}d}|r9 |        d {   }||j                  dd      z  }|j                  dd      }|r9t        | j                  |      }t        j                         4 d {   }|j                  | j                  |       | j                  4 d {    t        j                  j                  | j                  || j                         d {    d d d       d {    d d d       d {    | j                  9| j                  d   j                  | j                  d   | j                  d         y 7 67 7 7 q7 c# 1 d {  7  sw Y   sxY w7 j# 1 d {  7  sw Y   zxY ww)	Nr8   Tr   	more_bodyFr   r      )r)   r7   r   rQ   create_task_group
start_soonsenderrU   	to_threadrun_syncwsgistart_responserX   with_traceback)r>   r@   rA   r   rZ   messager2   
task_groups           r6   rF   zWSGIResponder.__call__V   sd    	#IoGGKK,,DK7I   

D1**, 	X 	X
!!$++t4'' X Xoo..tyy'4CVCVWWWX X	X 	X ==$--"11$--2BDMMRSDTUU % &
	XXWX X X X	X 	X 	X 	Xs   F E	-F .F 0E1F 4-E+!E"E+%9EEE#E+.E/E+3F >E)?AF F E+EE+E&	EE&	"E+)F +E=1E42E=9F c                    K   | j                   4 d {    | j                   2 3 d {   } ||       d {    7 *7 7 	6 d d d       d {  7   y # 1 d {  7  sw Y   y xY wwr=   )rV   )r>   rA   rd   s      r6   r^   zWSGIResponder.senderf   si     && 	$ 	$!%!4!4 $ $g7m##	$$# "5	$ 	$ 	$ 	$ 	$sr   A,>A,AAA AAAAA, AAAA,AA,A)A A)%A,rO   rP   rX   c                    || _         | j                  sd| _        |j                  dd      \  }}t        |      }|D cg c]Q  \  }}|j	                         j                  d      j                         |j	                         j                  d      fS }	}}t        j                  j                  | j                  j                  d||	d       y y c c}}w )NT r   r   zhttp.response.start)rC   rO   r"   )rX   rW   splitintstripr*   lowerrQ   from_threadrunrU   rA   )
r>   rO   rP   rX   status_code_stringr'   status_coder3   r4   r"   s
             r6   rb   zWSGIResponder.start_responsek   s     !$$$(D!$*LLa$8!01K $4D% $$W-335u{{}7K7KG7TUG  !!  %%1)& %s    ACr2   rb   c                    | j                  ||      D ]:  }t        j                  j                  | j                  j
                  d|dd       < t        j                  j                  | j                  j
                  ddd       y )Nzhttp.response.bodyT)rC   r   rZ   r8   )rC   r   )r;   rQ   rm   rn   rU   rA   )r>   r2   rb   chunks       r6   ra   zWSGIResponder.wsgi   sv    XXg~6 	E!!  %%-u4P	 	!!,@##N	
r8   r=   )rG   rH   rI   rJ   rK   r   r?   r   r   rF   r^   strListTupleAnyrb   dictra   rL   r8   r6   rD   rD   J   s    	)FOO 	)E 	)d 	)Vg VT Vd V $ $$ $  $	 !++fll38&<= **	
 
0	
D 	
&// 	
d 	
r8   rD   )r,   rS   r.   rJ   warningsrQ   starlette.typesr   r   r   warnDeprecationWarningbytesrw   r7   r:   rD   rL   r8   r6   <module>r}      se    	  
    0 0 N+ +e + +\' 'B
 B
r8   