
    i(                     Z    S SK r S SKrS SKJrJr  S rS rS r " S S5      rS\\\\S	.r	g)
    N)ResponseWebSocketResponsec                     U R                   R                  X!R                  5        U R                   R                  X!R                  5        U R                   R	                  SUUR                  5        g)zThis function sets up the engine.io endpoint as a route for the
application.

Note that both GET and POST requests must be hooked up on the engine.io
endpoint.
OPTIONSN)routeradd_gethandle_requestadd_post	add_route)appengineio_serverengineio_endpoints      [/home/admin/cozy_coffee/venv/lib/python3.13/site-packages/engineio/async_drivers/aiohttp.pycreate_router      sV     JJ(*H*HIJJ)+I+IJJJ$5(779    c                 d   0 SU R                   _S[        R                  _SS_SS_SS_S	S_S
S_SS_SU R                  _SU R                  =(       d    S_SU R
                  _SSU R                  S    SU R                  S    3_SS_SS_SS_SS_SU _nU R                  R                  5        HT  u  p#UR                  5       nUS:X  a  X1S'   M!  US:X  a  X1S '   M-  S!UR                  S"S#5      -  nXA;   a	  X    S$U 3nX1U'   MV     UR                  S%S&5      US''   U R                  US('   SUS)'   U$ )*zThis function takes the arguments passed to the request handler and
uses them to generate a WSGI compatible environ dictionary.
z
wsgi.inputzwsgi.errorszwsgi.version)   r   z
wsgi.asyncTzwsgi.multithreadFzwsgi.multiprocesszwsgi.run_onceSERVER_SOFTWAREaiohttpREQUEST_METHODQUERY_STRING RAW_URISERVER_PROTOCOLzHTTP/r   .r   REMOTE_ADDRz	127.0.0.1REMOTE_PORT0SERVER_NAMESERVER_PORTaiohttp.requestzCONTENT-TYPECONTENT_TYPEzCONTENT-LENGTHCONTENT_LENGTHzHTTP_%s-_,HTTP_X_FORWARDED_PROTOhttpzwsgi.url_scheme	PATH_INFOSCRIPT_NAME)contentsysstderrmethodquery_stringpath_qsversionheadersitemsupperreplacegetpath)requestenvironhdr_name	hdr_valuekeys        r   translate_requestr=      s   gooszz 	 	d	
 	E 	U 	 	9 	'.. 	,,2 	7?? 	U7??1#5"6a8J7KL 	{ 	s 	y  	s!" 	7#G(  '446>>#~%&/N#))(1$%(**344>"<.)5I   7 ")-Ev!NG"<<GKGMNr   c                 L    [        U[        U R                  5       S   5      US9$ )zLThis function generates an appropriate response object for this async
mode.
r   )bodystatusr2   )r   intsplit)r@   r2   payloadr9   s       r   make_responserD   C   s(     V\\^A->)?#% %r   c                   6    \ rS rSrSrS rS rS rS rS r	Sr
g	)
	WebSocketK   zw
This wrapper class provides a aiohttp WebSocket interface that is
somewhat compatible with eventlet's implementation.
c                     Xl         S U l        g N)handler_sock)selfrJ   servers      r   __init__WebSocket.__init__P   s    
r   c                    #    US   n[        SS9U l        U R                  R                  U5      I S h  vN   Xl        U R	                  U 5      I S h  vN   U R                  $  N/ N7f)Nr!   r   )max_msg_size)r   rK   preparer9   rJ   )rL   r9   r8   s      r   __call__WebSocket.__call__T   s_     +,&A6
jj  )))ll4   zz	 	* 	!s!   2A(A$A(A&A(&A(c                 T   #    U R                   R                  5       I S h  vN   g  N7frI   )rK   close)rL   s    r   rV   WebSocket.close]   s     jj   s   (&(c                    #    [        U[        5      (       a  U R                  R                  nOU R                  R                  n[
        R                  " U5      (       a  U" U5      I S h  vN   g U" U5        g  N7frI   )
isinstancebytesrK   
send_bytessend_strinspectiscoroutinefunction)rL   messagefs      r   sendWebSocket.send`   sZ     gu%%

%%A

##A&&q))G*gJ s   A)A<+A:,A<c                    #    U R                   R                  5       I S h  vN n[        UR                  [        5      (       d)  [        UR                  [
        5      (       d
  [        5       eUR                  $  NX7frI   )rK   receiverY   datarZ   strOSError)rL   msgs     r   waitWebSocket.waitj   sQ     JJ&&((#((E**sxx--)Oxx	 )s   A;A9AA;)rK   r9   rJ   N)__name__
__module____qualname____firstlineno____doc__rN   rS   rV   ra   ri   __static_attributes__ r   r   rF   rF   K   s     !r   rF   T)asyncior   r=   rD   	websocket)
r]   r,   aiohttp.webr   r   r   r=   rD   rF   _asyncrq   r   r   <module>rv      sA     
 3
9,^%$ $P  *"
r   