From 5651766aa7f64056911dd3b3aa3ea656b02e60c8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Niccol=C3=B2=20Cant=C3=B9?= <niccolo.cantu@nina.no>
Date: Fri, 17 Nov 2023 13:12:40 +0100
Subject: [PATCH] implement openapi

---
 metadata_catalogue/datasets/geoapi/models.py | 6 +++++-
 metadata_catalogue/datasets/geoapi/views.py  | 4 ++--
 2 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/metadata_catalogue/datasets/geoapi/models.py b/metadata_catalogue/datasets/geoapi/models.py
index 270e530..115b36b 100644
--- a/metadata_catalogue/datasets/geoapi/models.py
+++ b/metadata_catalogue/datasets/geoapi/models.py
@@ -2,6 +2,7 @@
 
 from django.apps import apps
 from django.db import models
+from pygeoapi.openapi import get_oas
 from solo.models import SingletonModel
 
 from ..libs.utils import safe_get
@@ -24,7 +25,7 @@ def get_config(self, url=""):
             id: value for id, value in Dataset.objects.select_related("metadata").all().as_geoapi_resource(url)
         }
 
-        return {
+        conf = {
             "server": {
                 "mimetype": "application/xml; charset=UTF-8",
                 "encoding": "utf-8",
@@ -77,3 +78,6 @@ def get_config(self, url=""):
             },
             "resources": resources,
         }
+
+        openapi = get_oas(conf)
+        return conf, openapi
diff --git a/metadata_catalogue/datasets/geoapi/views.py b/metadata_catalogue/datasets/geoapi/views.py
index e562877..ec1da9e 100644
--- a/metadata_catalogue/datasets/geoapi/views.py
+++ b/metadata_catalogue/datasets/geoapi/views.py
@@ -453,8 +453,8 @@ def _feed_response(request: HttpRequest, api_definition: str, *args, **kwargs) -
     """Use pygeoapi api to process the input request"""
 
     config = GeoAPIConfig.get_solo()
-    as_dict = config.get_config(req_to_base(request))
-    api_ = API(as_dict, {})
+    geoapi_conf, openapi_def = config.get_config(req_to_base(request))
+    api_ = API(geoapi_conf, openapi_def)
     api = getattr(api_, api_definition)
     return api(request, *args, **kwargs)