o
    ”^©i  ã                   @  s¶   U 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ZG dd„ deƒZG dd„ deeƒZG dd„ deeƒZdefdefgZded< dS )zAPI handlers for terminals.é    )ÚannotationsN)ÚPath)ÚAny)Ú
authorized)Ú
APIHandler)Úwebé   )ÚTerminalsMixinÚ	terminalsc                   @  s   e Zd ZdZeZdS )ÚTerminalAPIHandlerzThe base terminal handler.N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚAUTH_RESOURCEÚauth_resource© r   r   ú`/home/ubuntu/hpml_nyu/venv/lib/python3.10/site-packages/jupyter_server_terminals/api_handlers.pyr      s    r   c                   @  s8   e Zd ZdZejed	dd„ƒƒZejed	dd„ƒƒZdS )
ÚTerminalRootHandlerzThe root termanal API handler.ÚreturnÚNonec                 C  s   | j  ¡ }|  t |¡¡ dS )zGet the list of terminals.N)Úterminal_managerÚlistÚfinishÚjsonÚdumps)ÚselfÚmodelsr   r   r   Úget   s   
zTerminalRootHandler.getc                 C  sÖ   |   ¡ pi }d|v rXt|d ƒ}|dusJ ‚| ¡  ¡ s/t| jd ƒ ¡ | }| ¡  ¡ s/d}|du rG| jd }| j d| d¡|¡ |d= n| j d| ¡ ¡ t	| ¡ ƒ|d< | j
jdi |¤Ž}|  t |¡¡ dS )z:POST /terminals creates a new terminal and redirects to itÚcwdNÚserver_root_dirz`Failed to find requested terminal cwd: %s
  It was not found within the server root neither: %s.zOpening terminal in: %sr   )Úget_json_bodyr   ÚresolveÚexistsÚsettingsÚ
expanduserÚlogÚdebugr   Ústrr   Úcreater   r   r   )r   Údatar   r    Úmodelr   r   r   Úpost!   s(   
üzTerminalRootHandler.postN)r   r   )	r   r   r   r   r   Úauthenticatedr   r   r,   r   r   r   r   r      s    r   c                   @  s<   e Zd ZdZdZejeddd„ƒƒZejedd	d
„ƒƒZ	dS )ÚTerminalHandlerz"A handler for a specific terminal.)ÚGETÚDELETEÚOPTIONSÚnamer(   r   r   c                 C  s    | j  |¡}|  t |¡¡ dS )zGet a terminal by name.N)r   r   r   r   r   )r   r2   r+   r   r   r   r   H   s   zTerminalHandler.getc                 Ã  s.   | j j|ddI dH  |  d¡ |  ¡  dS )zRemove a terminal by name.T)ÚforceNéÌ   )r   Ú	terminateÚ
set_statusr   )r   r2   r   r   r   ÚdeleteO   s   €
zTerminalHandler.deleteN)r2   r(   r   r   )
r   r   r   r   ÚSUPPORTED_METHODSr   r-   r   r   r7   r   r   r   r   r.   C   s    r.   z/api/terminalsz/api/terminals/(\w+)zlist[tuple[str, type[Any]]]Údefault_handlers)r   Ú
__future__r   r   Úpathlibr   Útypingr   Újupyter_server.auth.decoratorr   Újupyter_server.base.handlersr   Útornador   Úbaser	   r   r   r   r.   r9   Ú__annotations__r   r   r   r   Ú<module>   s     ,þ