
    /j}                        d dl m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
 d dlZd dlmZmZ d dlmZ d dlmZ d dlmZmZmZ  ej.                  d	ed
       ddZ G d d      Z G d d      Zy)    )annotationsN)CallableMutableMapping)Any)ObjectReceiveStreamObjectSendStream)create_collapsing_task_group)StarletteDeprecationWarning)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.   )
stacklevelc                (   | j                  dd      j                  d      j                  d      }| d   j                  d      j                  d      }|j                  |      r|t	        |      d }| 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.
    	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)	scopebodyscript_name	path_infoenvironr"   namevaluecorrected_names	            W/var/www/html/maxservice/venv/lib/python3.12/site-packages/starlette/middleware/wsgi.pybuild_environrD      s   
 ))K,33F;BB8LKf$$V,33H=IK(c+.01	  /"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                      e Zd ZddZddZy)WSGIMiddlewarec                    || _         y N)app)selfrJ   s     rC   __init__zWSGIMiddleware.__init__N   s	    rE   c                r   K   |d   dk(  sJ t        | j                  |      } |||       d {    y 7 w)Ntyper   )WSGIResponderrJ   )rK   r;   receivesend	responders        rC   __call__zWSGIMiddleware.__call__Q   s8     V}&&&!$((E2	&&&s   -757N)rJ   Callable[..., Any]returnNone)r;   r   rP   r   rQ   r   rU   rV   )__name__
__module____qualname__rL   rS    rE   rC   rG   rG   M   s    'rE   rG   c                  h    e Zd ZU ded<   ded<   ddZddZddZ	 d	 	 	 	 	 	 	 dd	Z	 	 	 	 	 	 dd
Zy)rO   z*ObjectSendStream[MutableMapping[str, Any]]stream_sendz-ObjectReceiveStream[MutableMapping[str, Any]]stream_receivec                    || _         || _        d | _        d | _        t	        j
                  t        j                        \  | _        | _	        d| _
        d | _        y )NF)rJ   r;   statusresponse_headersanyiocreate_memory_object_streammathinfr\   r]   response_startedexc_info)rK   rJ   r;   s      rC   rL   zWSGIResponder.__init__[   sP    
 $050Q0QRVRZRZ0[-$- %!rE   c                  K   d}d}|r9 |        d {   }||j                  dd      z  }|j                  dd      }|r9t        | j                  |      }t               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 ,7 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)	NrE   Tr<   	more_bodyFr   r   r   )r0   rD   r;   r	   
start_soonsenderr\   ra   	to_threadrun_syncwsgistart_responserf   with_traceback)rK   rP   rQ   r<   rh   messager?   
task_groups           rC   rS   zWSGIResponder.__call__d   s^    	#IoGGKK,,DK7I   

D1/1 	X 	XZ!!$++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   E6D?-E6$E6&E'E6*-E!EE!9E
EE
E!$E%E!)E64E5AE6E6E!E
E!
E	EE	E!E6!E3'E*(E3/E6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rI   )r]   )rK   rQ   rp   s      rC   rj   zWSGIResponder.sendert   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,Nc                   || _         | 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)rN   r_   r)   )rf   re   splitintstripr1   lowerra   from_threadrunr\   rQ   )
rK   r_   r`   rf   status_code_stringr.   status_coder@   rA   r)   s
             rC   rn   zWSGIResponder.start_responsey   s     !$$$(D!$*LLa$8!01K $4D% $$W-335u{{}7K7KG7TUG  !!  %%1)& %s    ACc                   | j                  ||      D ]:  }t        j                  j                  | j                  j
                  d|dd       < t        j                  j                  | j                  j
                  ddd       y )Nzhttp.response.bodyT)rN   r<   rh   rE   )rN   r<   )rJ   ra   ry   rz   r\   rQ   )rK   r?   rn   chunks       rC   rm   zWSGIResponder.wsgi   sv    
 XXg~6 	E!!  %%-u4P	 	d..33>R\_5`arE   )rJ   rT   r;   r   rU   rV   )rP   r   rQ   r   rU   rV   )rQ   r   rU   rV   rI   )r_   strr`   zlist[tuple[str, str]]rf   r   rU   rV   )r?   dict[str, Any]rn   rT   rU   rV   )	rW   rX   rY   __annotations__rL   rS   rj   rn   rm   rZ   rE   rC   rO   rO   W   ss    ;;AA"V $ 	 0 	
 
0bb +b 
	brE   rO   )r;   r   r<   bytesrU   r   )
__future__r   r5   rc   r7   warningscollections.abcr   r   typingr   ra   	anyio.abcr   r   starlette._utilsr	   starlette.exceptionsr
   starlette.typesr   r   r   warnrD   rG   rO   rZ   rE   rC   <module>r      sd    " 	  
  4   ; 9 < 0 0 N	1h' 'Eb EbrE   