From 9d65ac11f7e3f75d943dde5199b793c4f28b92b2 Mon Sep 17 00:00:00 2001
From: Kenzo-Hugo Hillion <kenzo-hugo.hillion1@pasteur.fr>
Date: Thu, 14 Nov 2019 16:38:30 +0100
Subject: [PATCH] add endpoint to obtain detailed info from kegg through togows

---
 backend/metagenedb/api/external/urls.py       |  6 +++---
 .../metagenedb/api/external/views/__init__.py |  1 +
 .../metagenedb/api/external/views/togows.py   | 21 +++++++++++++------
 3 files changed, 19 insertions(+), 9 deletions(-)

diff --git a/backend/metagenedb/api/external/urls.py b/backend/metagenedb/api/external/urls.py
index 27a4b09..acc8c56 100644
--- a/backend/metagenedb/api/external/urls.py
+++ b/backend/metagenedb/api/external/urls.py
@@ -1,7 +1,7 @@
-from django.conf.urls import url
+from django.urls import path
 
-from metagenedb.api.external.views.togows import ListUsers
+from metagenedb.api.external.views import KeggInfoTogows
 
 urlpatterns = [
-    url(r'^togows/$', ListUsers.as_view()),
+    path(r'togows/<kegg_id>', KeggInfoTogows.as_view(), name='kegg-info'),
 ]
diff --git a/backend/metagenedb/api/external/views/__init__.py b/backend/metagenedb/api/external/views/__init__.py
index e69de29..fb67f87 100644
--- a/backend/metagenedb/api/external/views/__init__.py
+++ b/backend/metagenedb/api/external/views/__init__.py
@@ -0,0 +1 @@
+from .togows import KeggInfoTogows  # noqa
diff --git a/backend/metagenedb/api/external/views/togows.py b/backend/metagenedb/api/external/views/togows.py
index c09b93e..9fc60b1 100644
--- a/backend/metagenedb/api/external/views/togows.py
+++ b/backend/metagenedb/api/external/views/togows.py
@@ -1,16 +1,25 @@
+from bioapi.togows import TogoWSEntryAPI
+from requests.exceptions import HTTPError
+
 from rest_framework.views import APIView
 from rest_framework.response import Response
-from django.contrib.auth.models import User
+from rest_framework.status import (HTTP_200_OK, HTTP_404_NOT_FOUND)
 
 
-class ListUsers(APIView):
+class KeggInfoTogows(APIView):
     """
-    View to list all users in the system.
+    Obtain detailed information about KEGG orthology entry.
     """
 
-    def get(self, request, format=None):
+    def get(self, request, kegg_id=None):
         """
         Return a list of all users.
         """
-        usernames = [user.username for user in User.objects.all()]
-        return Response(usernames)
+        kegg_api = TogoWSEntryAPI("kegg-orthology")
+        try:
+            content = kegg_api.get(kegg_id)[0]
+            status = HTTP_200_OK
+        except HTTPError as http_err:
+            content = [{'error': str(http_err)}]
+            status = HTTP_404_NOT_FOUND
+        return Response(content, status=status)
-- 
GitLab