
    XhG                        d Z ddlmZ ddlZddlmZ ddlmZ ddl	m
Z
 ddlmZ ddlmZ dd	lmZ dd
lmZ ddlmZ ddlmZ dZ G d deeee      Zy)z+Tornado handlers for the terminal emulator.    )annotationsN)ensure_async)utcnow)warn_disabled_authorization)JupyterHandler)WebSocketMixin)NamedTermManager)
TermSocket)web   )TerminalsMixin	terminalsc                  l     e Zd ZdZeZ	 	 	 	 	 	 	 	 ddZd	d
dZd fdZd fdZ	dd fdZ
ddZ xZS )r
   zA terminal websocket.c                ^    t        j                  | |fi | t        j                  | |       y)zInitialize the socket.N)BaseTermSocket
initializer   )selfnameterm_managerkwargss       U/var/www/html/myenv/lib/python3.12/site-packages/jupyter_server_terminals/handlers.pyr   zTermSocket.initialize   s)     	!!$??!!$-    c                     y)zuTerminado adds redundant origin_check
        Tornado already calls check_origin, so don't do anything here.
        T )r   origins     r   origin_checkzTermSocket.origin_check"   s     r   c                  K   | j                   }|st        j                  d      | j                  t	                n=| j                  j                  | |d| j                        st        j                  d      |d   | j                  j                  vrt        j                  d      t        | (  |i |}|t        |       d{    yy7 w)zGet the terminal socket.i  Nexecuter   i  )current_userr   	HTTPError
authorizerr   is_authorizedauth_resourcer   r   supergetr   )r   argsr   userresp	__class__s        r   r%   zTermSocket.get(   s       --$$ ??"')..tT9dFXFXY--$$7$++555--$$w{D+F+t$$$ $s   CC
CCc                r   K   t        t        | 	  |             d{    | j                          y7 w)zHandle a socket message.N)r   r$   
on_message_update_activity)r   messager)   s     r   r+   zTermSocket.on_message<   s0     57-g6777 	8s   757c                H    t         |   ||       | j                          y)zWrite a message to the socket.)binaryN)r$   write_messager,   )r   r-   r/   r)   s      r   r0   zTermSocket.write_messageA   s!    gf5r   c                    t               | j                  j                  d<   | j                  | j                  j
                  v r1t               | j                  j
                  | j                     _        y y )Nterminal_last_activity)r   applicationsettings	term_nameterminal_managerr   last_activity)r   s    r   r,   zTermSocket._update_activityF   sW    >Dh!!":;>>T22<<<LRHD!!++DNN;I =r   )r   strr   r	   r   t.AnyreturnNone)N)r   r9   r:   bool)r&   r9   r   r9   r:   r;   )r-   r9   r:   r;   )F)r-   r9   r/   r<   r:   r;   )r:   r;   )__name__
__module____qualname____doc__AUTH_RESOURCEr#   r   r   r%   r+   r0   r,   __classcell__)r)   s   @r   r
   r
      sJ    !M..'7.CH.	.%( 
 
Ur   r
   )r@   
__future__r   typingtjupyter_core.utilsr   jupyter_server._tzr   jupyter_server.auth.utilsr   jupyter_server.base.handlersr   jupyter_server.base.websocketr   terminado.managementr	   terminado.websocketr
   r   tornador   baser   rA   r   r   r   <module>rO      sD    1 #  + % A 7 8 1 <   4U 4Ur   