Skip to content
Closed
4 changes: 4 additions & 0 deletions mfr/server/app.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@
from mfr.server.handlers.export import ExportHandler
from mfr.server.handlers.render import RenderHandler
from mfr.server.handlers.status import StatusHandler
from mfr.server.handlers.exporters import ExportersHandler
from mfr.server.handlers.renderers import RenderersHandler
from mfr.server.handlers.core import ExtensionsStaticFileHandler

logger = logging.getLogger(__name__)
Expand All @@ -24,7 +26,9 @@ def make_app(debug):
(r'/static/(.*)', tornado.web.StaticFileHandler, {'path': server_settings.STATIC_PATH}),
(r'/assets/(.*?)/(.*\..*)', ExtensionsStaticFileHandler),
(r'/export', ExportHandler),
(r'/exporters', ExportersHandler),
(r'/render', RenderHandler),
(r'/renderers', RenderersHandler),
(r'/status', StatusHandler),
],
debug=debug,
Expand Down
15 changes: 15 additions & 0 deletions mfr/server/handlers/exporters.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
import pkg_resources
import tornado.web

class ExportersHandler(tornado.web.RequestHandler):

def get(self):
"""List available exporters"""

exporters = {}
for ep in pkg_resources.iter_entry_points(group='mfr.exporters'):
exporters.update({ep.name: ep.load().__name__})

self.write({
'exporters': exporters,
})
15 changes: 15 additions & 0 deletions mfr/server/handlers/renderers.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
import pkg_resources
import tornado.web

class RenderersHandler(tornado.web.RequestHandler):

def get(self):
"""List available renderers"""

renderers = {}
for ep in pkg_resources.iter_entry_points(group='mfr.renderers'):
renderers.update({ep.name: ep.load().__name__})

self.write({
'renderers': renderers,
})
3 changes: 2 additions & 1 deletion mfr/server/handlers/status.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,8 @@ class StatusHandler(tornado.web.RequestHandler):

def get(self):
"""List information about modular-file-renderer status"""

self.write({
'status': 'up',
'version': mfr.__version__
'version': mfr.__version__,
})
20 changes: 20 additions & 0 deletions tests/server/handlers/test_exporters.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
import json

from tornado import testing
import pkg_resources

from tests import utils


class TestExportersHandler(utils.HandlerTestCase):
@testing.gen_test
def test_get_status(self):
resp = yield self.http_client.fetch(self.get_url('/exporters'))

exporters = {}
for ep in pkg_resources.iter_entry_points(group='mfr.exporters'):
exporters.update({ep.name: ep.load().__name__})

data = json.loads(resp.body.decode('utf-8'))
assert resp.code == 200
assert data['exporters'] == exporters
19 changes: 19 additions & 0 deletions tests/server/handlers/test_renderers.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
import json

from tornado import testing
import pkg_resources

from tests import utils

class TestRenderersHandler(utils.HandlerTestCase):
@testing.gen_test
def test_get_status(self):
resp = yield self.http_client.fetch(self.get_url('/renderers'))

renderers = {}
for ep in pkg_resources.iter_entry_points(group='mfr.renderers'):
renderers.update({ep.name: ep.load().__name__})

data = json.loads(resp.body.decode('utf-8'))
assert resp.code == 200
assert data['renderers'] == renderers