From 353cefd619b09e47214887593185f76e5b083d02 Mon Sep 17 00:00:00 2001 From: hsorby Date: Tue, 24 Aug 2021 13:46:18 +1200 Subject: [PATCH 1/4] Remove unused imports from app/main.py. --- app/main.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/app/main.py b/app/main.py index 3223ce2b..7732d5f8 100644 --- a/app/main.py +++ b/app/main.py @@ -29,8 +29,6 @@ from app.serializer import ContactRequestSchema from app.utilities import img_to_base64_str -from app.manifest_name_to_discover_name import name_map -from timeit import default_timer as timer app = Flask(__name__) # set environment variable From 41efaf3f19b4f8c9e2a411f9b69ba22a3fe0ac05 Mon Sep 17 00:00:00 2001 From: hsorby Date: Tue, 24 Aug 2021 18:22:24 +1200 Subject: [PATCH 2/4] Protect neurolucida requests against SSL errors. --- app/main.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/app/main.py b/app/main.py index 7732d5f8..b9f25a12 100644 --- a/app/main.py +++ b/app/main.py @@ -204,7 +204,12 @@ def thumbnail_from_neurolucida_file(): return abort(400, description=f"Query arguments are not valid.") url = f"{Config.NEUROLUCIDA_HOST}/thumbnail" - response = requests.get(url, params=query_args) + + try: + response = requests.get(url, params=query_args) + except requests.exceptions.SSLError: + response = type('ResponseObject', (object,), {'status_code': 400}) + if response.status_code == 200: if response.headers.get('Content-Type', 'unknown') == 'image/png': return base64.b64encode(response.content) From 92e9c39501f31e3a3880e542932bffcdff1c2bed Mon Sep 17 00:00:00 2001 From: hsorby Date: Wed, 25 Aug 2021 11:31:24 +1200 Subject: [PATCH 3/4] Add endpoint for blv link. --- app/main.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/app/main.py b/app/main.py index b9f25a12..e4b9270d 100644 --- a/app/main.py +++ b/app/main.py @@ -755,6 +755,18 @@ def image_search_by_dataset_id(dataset_id): return response.json() +@app.route("/image_blv_link/", methods=["GET"]) +def image_blv_link(image_id): + url = f'{Config.BIOLUCIDA_ENDPOINT}/image/blv_link/{image_id}' + result = requests.request("GET", url) + + response = result.json() + if response['status'] == 'success': + return response['link'] + + return '' + + @app.route("/image_xmp_info/", methods=["GET"]) def image_xmp_info(image_id): url = Config.BIOLUCIDA_ENDPOINT + "/image/xmpmetadata/{0}".format(image_id) @@ -762,6 +774,7 @@ def image_xmp_info(image_id): response = result.json() if response['status'] == 'success': + xml = ElementTree.fromstring(response['data']) ns = {'xmp': 'http://ns.adobe.com/xap/1.0/', 'rdf': 'http://www.w3.org/1999/02/22-rdf-syntax-ns#'} From 1523533c56c344bb29285aa9a61bc841c04315c4 Mon Sep 17 00:00:00 2001 From: hsorby Date: Wed, 25 Aug 2021 11:56:01 +1200 Subject: [PATCH 4/4] Add tests for image_blv_link endpoint. --- tests/test_biolucida.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/tests/test_biolucida.py b/tests/test_biolucida.py index 4b67aa0b..f0d98436 100644 --- a/tests/test_biolucida.py +++ b/tests/test_biolucida.py @@ -1,7 +1,7 @@ import pytest import unittest -from app.main import authenticate_biolucida, thumbnail_by_image_id, image_info_by_image_id +from app.main import authenticate_biolucida, thumbnail_by_image_id, image_info_by_image_id, image_blv_link from app.main import Biolucida from app import app @@ -49,5 +49,15 @@ def test_image_xmp_info(client): assert r.json['pixel_width'] == "0.415133" +def test_image_blv_link_success(client): + r = client.get('/image_blv_link/2720') + assert 'https://sparc.biolucida.net:443/link?l=zCl4b1' == r.data.decode() + + +def test_image_blv_link_failure(client): + r = client.get('/image_blv_link/31') + assert r.data.decode() == '' + + if __name__ == '__main__': unittest.main()