Ë
    jûàga  ã                   óT   — d dl mZ d dlmZ d dlmZmZ  G d„ d«      Z G d„ d«      Zy)	é    )ÚBytesIO)ÚSpooledTemporaryFile)ÚAsyncToSyncÚsync_to_asyncc                   ó   — e Zd ZdZd„ Zd„ Zy)Ú
WsgiToAsgizG
    Wraps a WSGI application to make it into an ASGI application.
    c                 ó   — || _         y ©N)Úwsgi_application©Úselfr   s     úJ/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/asgiref/wsgi.pyÚ__init__zWsgiToAsgi.__init__   s
   € Ø 0ˆÕó    c              ƒ   óZ   K  —  t        | j                  «      |||«      ƒ d{  –—†  y7 Œ­w)z¸
        ASGI application instantiation point.
        We return a new WsgiToAsgiInstance here with the WSGI app
        and the scope, ready to respond when it is __call__ed.
        N)ÚWsgiToAsgiInstancer   )r   ÚscopeÚreceiveÚsends       r   Ú__call__zWsgiToAsgi.__call__   s(   è ø€ ð 8Ô  ×!6Ñ!6Ó7¸¸wÈÓM×MÒMús   ‚!+£)¤+N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   © r   r   r   r      s   „ ñò1óNr   r   c                   ó:   — e Zd ZdZd„ Zd„ Zd„ Zdd„Zed„ «       Z	y)	r   z;
    Per-socket instance of a wrapped WSGI application
    c                 ó.   — || _         d| _        d | _        y )NF)r   Úresponse_startedÚresponse_content_lengthr   s     r   r   zWsgiToAsgiInstance.__init__   s   € Ø 0ˆÔØ %ˆÔØ'+ˆÕ$r   c              ƒ   ó¬  K  — |d   dk7  rt        d«      ‚|| _        t        d¬«      5 }	  |«       ƒ d {  –—† }|d   dk7  rt        d«      ‚|j                  |j	                  dd	«      «       |j	                  d
«      snŒV|j                  d«       t        |«      | _        | j                  |«      ƒ d {  –—†  d d d «       y 7 ŒŽ7 Œ# 1 sw Y   y xY w­w)NÚtypeÚhttpz&WSGI wrapper received a non-HTTP scopei   )Úmax_sizezhttp.requestz0WSGI wrapper received a non-HTTP-request messageÚbodyr   Ú	more_bodyr   )	Ú
ValueErrorr   r   ÚwriteÚgetÚseekr   Ú	sync_sendÚrun_wsgi_app)r   r   r   r   r$   Úmessages         r   r   zWsgiToAsgiInstance.__call__"   sÐ   è ø€ Ø�‰=˜FÒ"ÜÐEÓFÐFØˆŒ
Ü!¨5Ô1ð 	*°TàÙ '£	Ÿ/�Ø˜6‘? nÒ4Ü$Ð%WÓXÐXØ—
‘
˜7Ÿ;™; v¨sÓ3Ô4Ø—{‘{ ;Ô/Øð ð �I‰I�aŒLä(¨Ó.ˆDŒNà×#Ñ# DÓ)×)Ð)÷	*ð 	*ð *øð *ø÷	*ð 	*üs?   ‚'C©CµC¶B CÂ6CÂ7CÂ;	CÃCÃCÃCÃCc                 ó  — |j                  dd«      j                  d«      j                  d«      }|d   j                  d«      j                  d«      }|j                  |«      r|t	        |«      d }|d   |||d   j                  d	«      d
|d   z  d|j                  dd«      |t        «       ddddœ}d|v r |d   d   |d<   t        |d   d   «      |d<   n
d|d<   d|d<   |j                  d«      �|d   d   |d<   | j                  j                  dg «      D ]n  \  }}|j                  d«      }|dk(  rd}n+|dk(  rd}n#d |j                  «       j                  d!d"«      z  }|j                  d«      }||v r||   d#z   |z   }|||<   Œp |S )$zM
        Builds a scope and request body into a WSGI environ object.
        Ú	root_pathÚ Úutf8Úlatin1ÚpathNÚmethodÚquery_stringÚasciizHTTP/%sÚhttp_version)é   r   Úschemer"   TF)Ú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Úserverr   ÚSERVER_NAMEr7   ÚSERVER_PORTÚ	localhostÚ80ÚclientÚREMOTE_ADDRÚheadersúcontent-lengthÚCONTENT_LENGTHzcontent-typeÚCONTENT_TYPEzHTTP_%sú-Ú_ú,)
r(   ÚencodeÚdecodeÚ
startswithÚlenr   Ústrr   ÚupperÚreplace)	r   r   r$   Úscript_nameÚ	path_infoÚenvironÚnameÚvalueÚcorrected_names	            r   Úbuild_environz WsgiToAsgiInstance.build_environ5   sÏ  € ð —i‘i ¨RÓ0×7Ñ7¸Ó?×FÑFÀxÓPˆØ˜&‘M×(Ñ(¨Ó0×7Ñ7¸ÓAˆ	Ø×Ñ Ô,Ø!¤# kÓ"2Ð"4Ð5ˆIà# H™oØ&Ø"Ø! .Ñ1×8Ñ8¸ÓAØ(¨5°Ñ+@Ñ@Ø"Ø$Ÿy™y¨°6Ó:ØÜ"›9Ø $Ø!%Ø"ñ
ˆð �uÑØ%*¨8¡_°QÑ%7ˆG�MÑ"Ü%(¨¨x©¸Ñ);Ó%<ˆG�MÒ"à%0ˆG�MÑ"Ø%)ˆG�MÑ"à�9‰9�XÓÐ*Ø%*¨8¡_°QÑ%7ˆG�MÑ"ð  Ÿ:™:Ÿ>™>¨)°RÓ8ò 	,‰KˆD�%Ø—;‘;˜xÓ(ˆDØÐ'Ò'Ø!1‘Ø˜Ò'Ø!/‘à!*¨T¯Z©Z«\×-AÑ-AÀ#ÀsÓ-KÑ!K�à—L‘L Ó*ˆEØ Ñ(Ø Ñ/°#Ñ5¸Ñ=�Ø&+ˆG�NÒ#ð	,ð ˆr   Nc                 óÌ  — | j                   r|d   j                  |d   «      ‚t        | d«      r|€t        d«      ‚|j	                  dd«      \  }}t        |«      }|D ��cg c]5  \  }}|j                  «       j                  d«      |j                  d«      f‘Œ7 }}}d| _        |D ])  \  }}|j                  «       dk(  sŒt        |«      | _        Œ+ d	||d
œ| _	        yc c}}w )z/
        WSGI start_response callable.
        r7   é   Úresponse_startNz=You cannot call start_response a second time without exc_infoú r5   rF   zhttp.response.start)r!   ÚstatusrE   )
r   Úwith_tracebackÚhasattrr&   ÚsplitÚintÚlowerrL   r   r\   )	r   r^   Úresponse_headersÚexc_infoÚstatus_coderJ   rV   rW   rE   s	            r   Ústart_responsez!WsgiToAsgiInstance.start_responsef   sú   € ð
 × Ò Ø˜1‘+×,Ñ,¨X°a©[Ó9Ð9ä�4Ð)Ô*¨xÐ/?ÜØOóð ð  Ÿ™ c¨1Ó-‰ˆ�QÜ˜+Ó&ˆð  0÷
á��eð �Z‰Z‹\× Ñ  Ó)¨5¯<©<¸Ó+@ÒAð
ˆñ 
ð
 (,ˆÔ$Ø+ò 	:‰KˆD�%Ø�z‰z‹|Ð/Ó/Ü/2°5«z�Õ,ð	:ð
 *Ø!Øñ
ˆÕùó
s   Á":C c                 ó$  — | j                  | j                  |«      }d}| j                  || j                  «      D ]’  }| j                  s"d| _        | j                  | j                  «       | j                  �"| j                  |z
  }t        |«      |kD  r|d| }| j                  d|ddœ«       |t        |«      z  }|| j                  k(  sŒ’ n | j                  s"d| _        | j                  | j                  «       | j                  ddi«       y)zŸ
        Called in a subthread to run the WSGI app. We encapsulate like
        this so that the start_response callable is called in the same thread.
        r   TNzhttp.response.body)r!   r$   r%   r!   )	rY   r   r   rg   r   r*   r\   r   rO   )r   r$   rU   Ú
bytes_sentÚoutputÚbytes_alloweds         r   r+   zWsgiToAsgiInstance.run_wsgi_app†   s  € ð ×$Ñ$ T§Z¡Z°Ó6ˆàˆ
Ø×+Ñ+¨G°T×5HÑ5HÓIò 	ˆFà×(Ò(Ø(,�Ô%Ø—‘˜t×2Ñ2Ô3à×+Ñ+Ð7à $× <Ñ <¸zÑ I�Ü�v“; Ò.Ø# N ]Ð3�FØ�N‰NØ-°vÈDÑQôð œ#˜f›+Ñ%ˆJà˜T×9Ñ9Ó9Ùð#	ð& ×$Ò$Ø$(ˆDÔ!Ø�N‰N˜4×.Ñ.Ô/Ø�‰˜Ð 4Ð5Õ6r   r
   )
r   r   r   r   r   r   rY   rg   r   r+   r   r   r   r   r      s1   „ ñò,ò
*ò&/ób
ð@ ñ7ó ñ7r   r   N)	Úior   Útempfiler   Úasgiref.syncr   r   r   r   r   r   r   ú<module>ro      s&   ðÝ Ý )ç 3÷Nñ N÷"N7ò N7r   