
    vh                        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 d dlm	Z	m
Z
 d dlZd dlmZmZ d dlmZmZmZ  ej&                  de       ddZ G d	 d
      Z G d d      Zy)    )annotationsN)MutableMapping)AnyCallable)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.c                (   | 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	            Q/var/www/html/luna/venv/lib/python3.12/site-packages/starlette/middleware/wsgi.pybuild_environr@      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)selfrF   s     r?   __init__zWSGIMiddleware.__init__K   s	    rA   c                r   K   |d   dk(  sJ t        | j                  |      } |||       d {    y 7 w)Ntyper   )WSGIResponderrF   )rG   r7   receivesend	responders        r?   __call__zWSGIMiddleware.__call__N   s8     V}&&&!$((E2	&&&s   -757N)rF   Callable[..., Any]returnNone)r7   r
   rL   r	   rM   r   rQ   rR   )__name__
__module____qualname__rH   rO    rA   r?   rC   rC   J   s    'rA   rC   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)rK   z*ObjectSendStream[MutableMapping[str, Any]]stream_sendz-ObjectReceiveStream[MutableMapping[str, Any]]stream_receivec                    || _         || _        d | _        d | _        t	        j
                  t        j                        \  | _        | _	        d| _
        d | _        y )NF)rF   r7   statusresponse_headersanyiocreate_memory_object_streammathinfrX   rY   response_startedexc_info)rG   rF   r7   s      r?   rH   zWSGIResponder.__init__X   sP    
 $050Q0QRVRZRZ0[-$- %!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)	NrA   Tr8   	more_bodyFr   r      )r,   r@   r7   r]   create_task_group
start_soonsenderrX   	to_threadrun_syncwsgistart_responserb   with_traceback)rG   rL   rM   r8   rd   messager;   
task_groups           r?   rO   zWSGIResponder.__call__a   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rE   )rY   )rG   rM   rn   s      r?   rh   zWSGIResponder.senderq   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)rJ   r[   r%   )rb   ra   splitintstripr-   lowerr]   from_threadrunrX   rM   )
rG   r[   r\   rb   status_code_stringr*   status_coder<   r=   r%   s
             r?   rl   zWSGIResponder.start_responsev   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)rJ   r8   rd   rA   )rJ   r8   )rF   r]   rw   rx   rX   rM   )rG   r;   rl   chunks       r?   rk   zWSGIResponder.wsgi   sv    
 XXg~6 	E!!  %%-u4P	 	d..33>R\_5`arA   )rF   rP   r7   r
   rQ   rR   )rL   r	   rM   r   rQ   rR   )rM   r   rQ   rR   rE   )r[   strr\   zlist[tuple[str, str]]rb   r   rQ   rR   )r;   dict[str, Any]rl   rP   rQ   rR   )	rS   rT   rU   __annotations__rH   rO   rh   rl   rk   rV   rA   r?   rK   rK   T   ss    ;;AA"V $ 	 0 	
 
0bb +b 
	brA   rK   )r7   r
   r8   bytesrQ   r~   )
__future__r   r1   r_   r3   warningscollections.abcr   typingr   r   r]   	anyio.abcr   r   starlette.typesr	   r
   r   warnDeprecationWarningr@   rC   rK   rV   rA   r?   <module>r      s[    " 	  
  *    ; 0 0 N1h' 'Eb EbrA   