Skip to content

Commit

Permalink
Add details endpoint to visualizer api (#38)
Browse files Browse the repository at this point in the history
* implementation of REST api to get list of visualizers

* implementation of REST api to get list of visualizer settings
  • Loading branch information
jan-xyz authored and rhsimplex committed Sep 6, 2017
1 parent 27df237 commit 88cdf66
Show file tree
Hide file tree
Showing 3 changed files with 111 additions and 0 deletions.
77 changes: 77 additions & 0 deletions docs/api.rst
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,83 @@ Output:
GET /api/visualizers
###############
List all available visualizers

.. code-block:: bash
curl "localhost:5000/api/visualizers" -b /path/to/cookie -c /path/to/cookie
Output:

.. code-block:: json
{
"visualizers": [
{
"name": "ClassProbabilities"
},
{
"name": "PartialOcclusion"
},
{
"name": "SaliencyMaps"
}
]
}
GET /api/visualizers/<vis_name>
###############
List all available settings for visualizer ``<viz_name>``

.. code-block:: bash
curl "localhost:5000/api/visualizers/PartialOcclusion" -b /path/to/cookie -c /path/to/cookie
Output:

.. code-block:: json
{
"settings": {
"Occlusion": [
"grey",
"black",
"white"
],
"Strides": [
"2",
"5",
"10",
"20",
"30"
],
"Window": [
"0.50",
"0.40",
"0.30",
"0.20",
"0.10",
"0.05"
]
}
}
returns an empty settings object when no settings available:

.. code-block:: json
{
"settings": {}
}
GET /api/visualize
###################

Expand Down
24 changes: 24 additions & 0 deletions picasso/interfaces/rest.py
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,30 @@ def images():
return jsonify(images=session['image_list'])


@API.route('/visualizers', methods=['GET'])
def visualizers():
"""Get a list of available visualizers
Responses with a JSON list of available visualizers
"""
list_of_visualizers = []
for visualizer in get_visualizations():
list_of_visualizers.append({'name': visualizer})
return jsonify(visualizers=list_of_visualizers)


@API.route('/visualizers/<vis_name>', methods=['GET'])
def visualizers_information(vis_name):
vis = get_visualizations()[vis_name]
if hasattr(vis, 'ALLOWED_SETTINGS'):
settings = vis.ALLOWED_SETTINGS
else:
settings = {}

return jsonify(settings=settings)


@API.route('/visualize', methods=['GET'])
def visualize():
"""Trigger a visualization via the REST API
Expand Down
10 changes: 10 additions & 0 deletions tests/test_picasso.py
Original file line number Diff line number Diff line change
Expand Up @@ -119,6 +119,16 @@ def test_end_session(self, client):
response = client.get(url_for('api.reset'))
assert response.status_code == 200

def test_visualizers(self, client):
response = client.get(url_for('api.visualizers'))
assert response.status_code == 200

@pytest.mark.parametrize("vis", _get_visualization_classes())
def test_visualizers_informations(self, client, vis):
response = client.get(url_for('api.visualizers_information', vis_name=vis.__name__))
assert response.status_code == 200



class TestBaseModel:

Expand Down

0 comments on commit 88cdf66

Please sign in to comment.