
    !ni(                     Z    d dl Z d dlZd dlmZmZ d Zd Zd Z G d d      Zdeeeed	Z	y)
    N)ResponseWebSocketResponsec                     | j                   j                  ||j                         | j                   j                  ||j                         | j                   j	                  d||j                         y)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/homepc/tiktok-worker/venv/lib/python3.12/site-packages/engineio/async_drivers/aiohttp.pycreate_router      sZ     JJ(/*H*HIJJ)?+I+IJJJ$5(779    c                 V   i d| j                   dt        j                  ddddddd	dd
dddd| j                  d| j                  xs dd| j
                  dd| j                  d    d| j                  d    ddddddddd| }| j                  j                         D ]S  \  }}|j                         }|dk(  r||d<   !|dk(  r||d <   ,d!|j                  d"d#      z  }||v r
||    d$| }|||<   U |j                  d%d&      |d'<   | j                  |d(<   d|d)<   |S )*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 !)>>#~%&/GN#))(1G$%(**344'>"3<.)5I ! ")-Ev!NG"<<GKGMNr   c                 R    t        |t        | j                         d         |      S )zTThis 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                   .    e Zd ZdZd Zd Zd Zd Zd Zy)	WebSocketz
    This wrapper class provides a aiohttp WebSocket interface that is
    somewhat compatible with eventlet's implementation.
    c                      || _         d | _        y N)handler_sock)selfrI   servers      r   __init__zWebSocket.__init__P   s    
r   c                    K   |d   }t        d      | _        | j                  j                  |       d {    || _        | j	                  |        d {    | j                  S 7 07 w)Nr!   r   )max_msg_size)r   rJ   preparer9   rI   )rK   r9   r8   s      r   __call__zWebSocket.__call__T   sc     +,&A6
jj  )))ll4   zz	 	* 	!s!   5A,A(A,A*A,*A,c                 T   K   | j                   j                          d {    y 7 wrH   )rJ   close)rK   s    r   rS   zWebSocket.close]   s     jj   s   (&(c                    K   t        |t              r| j                  j                  }n| j                  j                  }t        j                  |      r ||       d {    y  ||       y 7 wrH   )
isinstancebytesrJ   
send_bytessend_strinspectiscoroutinefunction)rK   messagefs      r   sendzWebSocket.send`   sU     gu%

%%A

##A&&q)G*gJ s   AA1 A/!A1c                    K   | j                   j                          d {   }t        |j                  t              s$t        |j                  t
              s
t               |j                  S 7 NwrH   )rJ   receiverU   datarV   strOSError)rK   msgs     r   waitzWebSocket.waitj   sL     JJ&&((#((E*sxx-)Oxx	 )s   A1A/AA1N)	__name__
__module____qualname____doc__rM   rQ   rS   r]   rd    r   r   rF   rF   K   s     !r   rF   T)asyncior   r=   rD   	websocket)
rY   r,   aiohttp.webr   r   r   r=   rD   rF   _asyncri   r   r   <module>rn      sA     
 3
9,^%$ $P  *"
r   