api_handlers.py
43 lines
| 1.3 KiB
| text/x-python
|
PythonLexer
Thomas Kluyver
|
r18483 | import json | |
from tornado import web | |||
from ..base.handlers import IPythonHandler, json_errors | |||
Min RK
|
r18616 | from ..utils import url_path_join | |
Thomas Kluyver
|
r18483 | ||
class TerminalRootHandler(IPythonHandler): | |||
@web.authenticated | |||
@json_errors | |||
def get(self): | |||
Min RK
|
r18616 | tm = self.terminal_manager | |
Thomas Kluyver
|
r18483 | terms = [{'name': name} for name in tm.terminals] | |
self.finish(json.dumps(terms)) | |||
Min RK
|
r18616 | @web.authenticated | |
@json_errors | |||
def post(self): | |||
"""POST /terminals creates a new terminal and redirects to it""" | |||
name, _ = self.terminal_manager.new_named_terminal() | |||
self.finish(json.dumps({'name': name})) | |||
Thomas Kluyver
|
r18483 | class TerminalHandler(IPythonHandler): | |
SUPPORTED_METHODS = ('GET', 'DELETE') | |||
@web.authenticated | |||
@json_errors | |||
def get(self, name): | |||
Min RK
|
r18616 | tm = self.terminal_manager | |
Thomas Kluyver
|
r18483 | if name in tm.terminals: | |
self.finish(json.dumps({'name': name})) | |||
else: | |||
raise web.HTTPError(404, "Terminal not found: %r" % name) | |||
@web.authenticated | |||
@json_errors | |||
def delete(self, name): | |||
Min RK
|
r18616 | tm = self.terminal_manager | |
Thomas Kluyver
|
r18483 | if name in tm.terminals: | |
tm.kill(name) | |||
# XXX: Should this wait for terminal to finish before returning? | |||
self.set_status(204) | |||
self.finish() | |||
else: | |||
raise web.HTTPError(404, "Terminal not found: %r" % name) |