From 2eb68b71a599bac47b8c30fdf1f82ca2861722e9 Mon Sep 17 00:00:00 2001 From: Munyoki Kilyungi Date: Tue, 8 Oct 2024 17:24:41 +0300 Subject: Add end-point for fetching NCBI metadata. * gn3/api/metadata.py: Register "wiki.rif_blueprint". * gn3/api/metadata_api/wiki.py: Import "get_rif_entries_by_symbol". [rif_blueprint]: New blueprint. (get_ncbi_rif_entries): New endpoint: "metadata/rif/". Signed-off-by: Munyoki Kilyungi --- gn3/api/metadata_api/wiki.py | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) (limited to 'gn3/api/metadata_api/wiki.py') diff --git a/gn3/api/metadata_api/wiki.py b/gn3/api/metadata_api/wiki.py index 8df6cfb..e8c59b5 100644 --- a/gn3/api/metadata_api/wiki.py +++ b/gn3/api/metadata_api/wiki.py @@ -1,4 +1,4 @@ -"""API for accessing/editting wiki metadata""" +"""API for accessing/editing rif/wiki metadata""" import datetime from typing import Any, Dict @@ -12,10 +12,12 @@ from gn3.db.rdf.wiki import ( get_wiki_entries_by_symbol, get_comment_history, update_wiki_comment, + get_rif_entries_by_symbol, ) wiki_blueprint = Blueprint("wiki", __name__, url_prefix="wiki") +rif_blueprint = Blueprint("rif", __name__, url_prefix="rif") @wiki_blueprint.route("//edit", methods=["POST"]) @@ -83,7 +85,7 @@ def edit_wiki(comment_id: int): sparql_auth_uri=current_app.config["SPARQL_AUTH_URI"] ) except Exception as exc: - conn.rollback() # type: ignore + conn.rollback() # type: ignore raise exc return jsonify({"success": "ok"}) return jsonify(error="Error editing wiki entry, most likely due to DB error!"), 500 @@ -154,3 +156,20 @@ def get_history(comment_id): payload.headers["Content-Type"] = "application/ld+json" return payload, status_code return jsonify(data), status_code + + +@rif_blueprint.route("/", methods=["GET"]) +def get_ncbi_rif_entries(symbol: str): + """Fetch NCBI RIF entries""" + status_code = 200 + response = get_rif_entries_by_symbol( + symbol, + sparql_uri=current_app.config["SPARQL_ENDPOINT"]) + data = response.get("data") + if not data: + data, status_code = {}, 404 + if request.headers.get("Accept") == "application/ld+json": + payload = make_response(response) + payload.headers["Content-Type"] = "application/ld+json" + return payload, status_code + return jsonify(data), status_code -- cgit 1.4.1