diff options
-rw-r--r-- | src/pydrilla/pydrilla.py | 29 | ||||
-rw-r--r-- | src/test/test_pydrilla.py | 13 |
2 files changed, 31 insertions, 11 deletions
diff --git a/src/pydrilla/pydrilla.py b/src/pydrilla/pydrilla.py index 2e91b89..3e5edc8 100644 --- a/src/pydrilla/pydrilla.py +++ b/src/pydrilla/pydrilla.py @@ -661,18 +661,19 @@ def index(): def get_item(identifier, item_type): ver = request.args.get('ver') + if ver == 'all': - definitions = content().get_item_all_versions(item_type, identifier) - return json.dumps(definitions) - if ver is not None: - try: - ver = normalize_version(parse_version(ver)) - except: - abort(400) + definition = content().get_item_all_versions(item_type, identifier) + else: + if ver is not None: + try: + ver = normalize_version(parse_version(ver)) + except: + abort(400) - definition = content().find_item(item_type, identifier, ver) - if definition is None: - abort(404) + definition = content().find_item(item_type, identifier, ver) + if definition is None: + abort(404) return json.dumps(definition) @@ -681,3 +682,11 @@ for item_type in ['mapping', 'resource']: return get_item(identifier, item_type) bp.add_url_rule(f'/{item_type}s/<string:identifier>', item_type, _get_item) + +@bp.route('/licenses/<string:identifier>') +def get_license(identifier): + definition = content().licenses.get(identifier) + if definition is None: + abort(404) + + return json.dumps(definition) diff --git a/src/test/test_pydrilla.py b/src/test/test_pydrilla.py index 9e87704..89b499f 100644 --- a/src/test/test_pydrilla.py +++ b/src/test/test_pydrilla.py @@ -61,15 +61,26 @@ def test_api_basic(client): response = client.get(f'/{item_type}s/helloapple?ver=2021.11.10.999') assert response.status_code == 404 - response = client.get(f'/{item_type}s/helloapple?ver=random_input') + response = client.get(f'/{item_type}s/helloapple?ver=random_bad_input') assert response.status_code == 400 + response = client.get(f'/{item_type}s/random-bad-identifier') + assert response.status_code == 404 + response = client.get(f'/{item_type}s/helloapple?ver=all') definitions = json.loads(response.data.decode()) assert type(definitions) is list assert all([d['type'] == item_type for d in definitions]) assert any([d['version'] == [2021, 11, 10] for d in definitions]) + response = client.get('/licenses/CC0-1.0') + definition = json.loads(response.data.decode()) + assert definition['long_name'] == 'Creative Commons Zero v1.0 Universal' + assert definition['source_name'] == 'hello' + + response = client.get('/licenses/random-bad-identifier') + assert response.status_code == 404 + def test_normalize_version(): assert pydrilla.normalize_version([4, 5, 3, 0, 0]) == [4, 5, 3] assert pydrilla.normalize_version([1, 0, 5, 0]) == [1, 0, 5] |