Add GET /nbconvert to list available formats

Thomas Kluyver 13 years ago
parent 47e9aad022
commit f53ad55284

@ -1,8 +1,9 @@
import json
import os
from tornado import web
from ..base.handlers import IPythonHandler
from ..base.handlers import IPythonHandler, json_errors
from IPython.nbformat.current import to_notebook_json
from IPython.nbconvert.exporters.export import exporter_map
from IPython.utils import tz
@ -69,6 +70,19 @@ class NbconvertPostHandler(IPythonHandler):
self.finish(output)
class NbconvertRootHandler(IPythonHandler):
SUPPORTED_METHODS = ('GET',)
@web.authenticated
@json_errors
def get(self):
res = {}
for format, exporter in exporter_map.items():
res[format] = info = {}
info['output_mimetype'] = exporter.output_mimetype
self.finish(json.dumps(res))
#-----------------------------------------------------------------------------
# URL to handler mappings
#-----------------------------------------------------------------------------
@ -82,4 +96,5 @@ default_handlers = [
(r"/nbconvert/%s%s" % (_format_regex, _notebook_path_regex),
NbconvertFileHandler),
(r"/nbconvert/%s" % _format_regex, NbconvertPostHandler),
(r"/nbconvert", NbconvertRootHandler),
]

@ -32,6 +32,9 @@ class NbconvertAPI(object):
body = json.dumps(nbmodel)
return self._req('POST', format, body)
def list_formats(self):
return self._req('GET', '')
class APITest(NotebookTestBase):
def setUp(self):
nbdir = self.notebook_dir.name
@ -91,4 +94,11 @@ class APITest(NotebookTestBase):
r = self.nbconvert_api.from_post(format='python', nbmodel=nbmodel)
self.assertIn(u'text/x-python', r.headers['Content-Type'])
self.assertIn(u'print(2*6)', r.text)
self.assertIn(u'print(2*6)', r.text)
def test_list_formats(self):
formats = self.nbconvert_api.list_formats().json()
self.assertIsInstance(formats, dict)
self.assertIn('python', formats)
self.assertIn('html', formats)
self.assertEqual(formats['python']['output_mimetype'], 'text/x-python')
Loading…
Cancel
Save