o
    ¹i†
  ã                   @   s    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„ 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S )zAPI handlers for terminals.é    N)ÚPath)ÚOptional)Ú
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   ú`/var/www/edux/Edux_v2/venv/lib/python3.10/site-packages/jupyter_server_terminals/api_handlers.pyr
      s    r
   c                   @   s4   e Zd ZdZejedd„ ƒƒZejedd„ ƒƒZdS )ÚTerminalRootHandlerzThe root termanal API handler.c                 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 r_t|d ƒ}|dusJ ‚| ¡  ¡ s/t| jd ƒ ¡ | }| ¡  ¡ s/d}|du rL| jd }| j d| d¡› 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: 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   Úmodelr   r   r   Úpost   s(   
ÿÿzTerminalRootHandler.postN)	r   r   r   r   r   Úauthenticatedr   r   r*   r   r   r   r   r      s    r   c                   @   s8   e Zd ZdZdZejedd„ ƒƒZejedd„ ƒƒZ	dS )ÚTerminalHandlerz"A handler for a specific terminal.)ÚGETÚDELETEc                 C   s    | j  |¡}|  t |¡¡ dS )zGet a terminal by name.N)r   r   r   r   r   )r   Únamer)   r   r   r   r   D   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   r/   r   r   r   ÚdeleteK   s   €
zTerminalHandler.deleteN)
r   r   r   r   ÚSUPPORTED_METHODSr   r+   r   r   r4   r   r   r   r   r,   ?   s    r,   z/api/terminalsz/api/terminals/(\w+))r   r   Úpathlibr   Útypingr   Újupyter_server.auth.decoratorr   Újupyter_server.base.handlersr   Útornador   Úbaser   r   r
   r   r,   Údefault_handlersr   r   r   r   Ú<module>   s    *þ