
    d
                         d 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
Z G d de	          Z G d dee          Z G d dee          ZdefdefgZdS )zAPI handlers for terminals.    N)Path)Optional)
authorized)
APIHandler)web   )TerminalsMixin	terminalsc                       e Zd ZdZeZdS )TerminalAPIHandlerzThe base terminal handler.N)__name__
__module____qualname____doc__AUTH_RESOURCEauth_resource     Elib/python3.11/site-packages/jupyter_server_terminals/api_handlers.pyr   r      s        $$!MMMr   r   c                   r    e Zd ZdZej        ed                         Zej        ed                         ZdS )TerminalRootHandlerzThe root termanal API handler.c                     | j                                         }|                     t          j        |                     dS )zGet the list of terminals.N)terminal_managerlistfinishjsondumps)selfmodelss     r   getzTerminalRootHandler.get   s:     &++--DJv&&'''''r   c                    |                                  pi }d|v r0t          |d                   }|J |                                                                sWt          | j        d                                                   |z  }|                                                                sd}|E| j        d         }| j                            d|                    d           d| d           |d= nS| j                            d|                                           t          |                                          |d<    | j
        j        di |}|                     t          j        |                     dS )	z:POST /terminals creates a new terminal and redirects to itcwdNserver_root_dirz'Failed to find requested terminal cwd: z4
  It was not found within the server root neither: .zOpening terminal in: r   )get_json_bodyr   resolveexistssettings
expanduserlogdebugr    strr   creater   r   r   )r   datar"   r#   models        r   postzTerminalRootHandler.post   s    !!##)r
 D=="&tE{"3"3C???;;=='')) 4=):;<<GGIICO{{}}++-- C{"&-0A"B]dhhuoo ] ]JY] ] ]   KKHs{{}}HHIII!#++--00U,%,44t44DJu%%&&&&&r   N)	r   r   r   r   r   authenticatedr   r    r0   r   r   r   r   r      sj        ((( ( Z (
 	' ' Z ' ' 'r   r   c                   v    e Zd ZdZdZej        ed                         Zej        ed                         Z	dS )TerminalHandlerz"A handler for a specific terminal.)GETDELETEc                     | j                             |          }|                     t          j        |                     dS )zGet a terminal by name.N)r   r    r   r   r   )r   namer/   s      r   r    zTerminalHandler.getD   s<     %))$//DJu%%&&&&&r   c                    K   | j                             |d           d{V  |                     d           |                                  dS )zRemove a terminal by name.T)forceN   )r   	terminate
set_statusr   )r   r7   s     r   deletezTerminalHandler.deleteK   sY       #--d$-?????????r   N)
r   r   r   r   SUPPORTED_METHODSr   r1   r   r    r=   r   r   r   r3   r3   ?   sp        ,,)' ' Z '
 	  Z   r   r3   z/api/terminalsz/api/terminals/(\w+))r   r   pathlibr   typingr   jupyter_server.auth.decoratorr   jupyter_server.base.handlersr   tornador   baser	   r   r   r   r3   default_handlersr   r   r   <module>rF      s+   ! !              4 4 4 4 4 4 3 3 3 3 3 3                  " " " " " " " "'' '' '' '' ''.*< '' '' ''T    n&8   , +,o.   r   