##// END OF EJS Templates
Add GET /nbconvert to list available formats
Thomas Kluyver -
Show More
@@ -1,8 +1,9 b''
1 import json
1 2 import os
2 3
3 4 from tornado import web
4 5
5 from ..base.handlers import IPythonHandler
6 from ..base.handlers import IPythonHandler, json_errors
6 7 from IPython.nbformat.current import to_notebook_json
7 8 from IPython.nbconvert.exporters.export import exporter_map
8 9 from IPython.utils import tz
@@ -69,6 +70,19 b' class NbconvertPostHandler(IPythonHandler):'
69 70
70 71 self.finish(output)
71 72
73 class NbconvertRootHandler(IPythonHandler):
74 SUPPORTED_METHODS = ('GET',)
75
76 @web.authenticated
77 @json_errors
78 def get(self):
79 res = {}
80 for format, exporter in exporter_map.items():
81 res[format] = info = {}
82 info['output_mimetype'] = exporter.output_mimetype
83
84 self.finish(json.dumps(res))
85
72 86 #-----------------------------------------------------------------------------
73 87 # URL to handler mappings
74 88 #-----------------------------------------------------------------------------
@@ -82,4 +96,5 b' default_handlers = ['
82 96 (r"/nbconvert/%s%s" % (_format_regex, _notebook_path_regex),
83 97 NbconvertFileHandler),
84 98 (r"/nbconvert/%s" % _format_regex, NbconvertPostHandler),
99 (r"/nbconvert", NbconvertRootHandler),
85 100 ] No newline at end of file
@@ -32,6 +32,9 b' class NbconvertAPI(object):'
32 32 body = json.dumps(nbmodel)
33 33 return self._req('POST', format, body)
34 34
35 def list_formats(self):
36 return self._req('GET', '')
37
35 38 class APITest(NotebookTestBase):
36 39 def setUp(self):
37 40 nbdir = self.notebook_dir.name
@@ -91,4 +94,11 b' class APITest(NotebookTestBase):'
91 94
92 95 r = self.nbconvert_api.from_post(format='python', nbmodel=nbmodel)
93 96 self.assertIn(u'text/x-python', r.headers['Content-Type'])
94 self.assertIn(u'print(2*6)', r.text) No newline at end of file
97 self.assertIn(u'print(2*6)', r.text)
98
99 def test_list_formats(self):
100 formats = self.nbconvert_api.list_formats().json()
101 self.assertIsInstance(formats, dict)
102 self.assertIn('python', formats)
103 self.assertIn('html', formats)
104 self.assertEqual(formats['python']['output_mimetype'], 'text/x-python') No newline at end of file
General Comments 0
You need to be logged in to leave comments. Login now