api_handlers.py
44 lines
| 1.3 KiB
| text/x-python
|
PythonLexer
Thomas Kluyver
|
r18483 | import json | ||
Min RK
|
r19975 | from tornado import web, gen | ||
Thomas Kluyver
|
r18483 | 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 | ||||
Min RK
|
r19975 | @gen.coroutine | ||
Thomas Kluyver
|
r18483 | def delete(self, name): | ||
Min RK
|
r18616 | tm = self.terminal_manager | ||
Thomas Kluyver
|
r18483 | if name in tm.terminals: | ||
Min RK
|
r19975 | yield tm.terminate(name, force=True) | ||
Thomas Kluyver
|
r18483 | self.set_status(204) | ||
self.finish() | ||||
else: | ||||
Min RK
|
r19975 | raise web.HTTPError(404, "Terminal not found: %r" % name) | ||