
    =h                         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j                  de       dededej                   eej$                  f   fdZ G d	 d
      Z G d d      Zy)    N)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.scopebodyreturnc                 (   | 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)	r   r	   script_name	path_infoenvironr   namevaluecorrected_names	            i/var/www/html/phonemate/phone_mate_backend/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"' 0 N    c                   f    e Zd Zdej                  dej
                  f   ddfdZdedede	ddfd	Z
y)
WSGIMiddlewareapp.r
   Nc                     || _         y N)rA   )selfrA   s     r<   __init__zWSGIMiddleware.__init__H   s	    r>   r   receivesendc                 r   K   |d   dk(  sJ t        | j                  |      } |||       d {    y 7 w)Ntyper   )WSGIResponderrA   )rD   r   rF   rG   	responders        r<   __call__zWSGIMiddleware.__call__K   s8     V}&&&!$((E2	&&&s   -757)__name__
__module____qualname__typingCallableAnyrE   r   r   r   rL    r>   r<   r@   r@   G   sG    FOOCO<  'E 'G '4 'D 'r>   r@   c            	          e Zd ZU eej
                  eej                  f      ed<   e	ej
                  eej                  f      ed<   dej                  dej                  f   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j(                  eej                  f   dej                  dej                  f   ddfdZy)rJ   stream_sendstream_receiverA   .r   r
   Nc                     || _         || _        d | _        d | _        t	        j
                  t        j                        \  | _        | _	        d| _
        d | _        y )NF)rA   r   statusresponse_headersanyiocreate_memory_object_streammathinfrU   rV   response_startedexc_info)rD   rA   r   s      r<   rE   zWSGIResponder.__init__U   sR    
 $050Q0QHH1
-$- !&$(r>   rF   rG   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)	Nr>   Tr	   	more_bodyFr   r      )r+   r=   r   rZ   create_task_group
start_soonsenderrU   	to_threadrun_syncwsgistart_responser_   with_traceback)rD   rF   rG   r	   ra   messager8   
task_groups           r<   rL   zWSGIResponder.__call__`   s2    	#IoGGKK,,DK7I   

D1**,,
!!$++t4'''oo..tyy'4CVCVWWW (' -, ==$--"11$--2BDMMRSDTUU % &
 -'W (''' -,,,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rC   )rV   )rD   rG   rk   s      r<   re   zWSGIResponder.senderp   sU     &&&!%!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,rX   rY   r_   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)rI   rX   r$   )r_   r^   splitintstripr,   lowerrZ   from_threadrunrU   rG   )
rD   rX   rY   r_   status_code_stringr)   status_coder9   r:   r$   s
             r<   ri   zWSGIResponder.start_responseu   s     !$$$(D!$*LLa$8!01K $4#3KD% $$W-335u{{}7K7KG7TU#3   !!  %%1)& %s    ACr8   ri   c                    | j                  ||      D ]:  }t        j                  j                  | j                  j
                  d|dd       < t        j                  j                  | j                  j
                  ddd       y )Nzhttp.response.bodyT)rI   r	   ra   r>   )rI   r	   )rA   rZ   rt   ru   rU   rG   )rD   r8   ri   chunks       r<   rh   zWSGIResponder.wsgi   ss    
 XXg~6E!!  %%-u4P 7 	!!,@##N	
r>   rC   )rM   rN   rO   r   rP   MutableMappingstrrR   __annotations__r   rQ   r   rE   r   r   rL   re   ListTupleri   Dictrh   rS   r>   r<   rJ   rJ   Q   s'   !&"7"7VZZ"HII'(=(=c6::o(NOO	)FOOCO< 	)U 	)t 	)Vg VT Vd V $ $$ $  $	 !++fll38&<= **	
 
0
S&**_-
 VZZ8
 
	
r>   rJ   )r0   r\   r2   rP   warningsrZ   	anyio.abcr   r   starlette.typesr   r   r   warnDeprecationWarningbytesr   r{   rR   r=   r@   rJ   rS   r>   r<   <module>r      sy    	  
    ; 0 0 N1 1e 1CO0L 1h' 'I
 I
r>   