From cd65a8362b0a5ff236b7c36b840f5e01ed4a27a6 Mon Sep 17 00:00:00 2001
From: Christian Boettcher <c.boettcher@fz-juelich.de>
Date: Tue, 14 Dec 2021 14:58:05 +0100
Subject: [PATCH] consistently use json-string as intermediate format

---
 src/datacat_integration/secrets.py | 13 +++++++------
 1 file changed, 7 insertions(+), 6 deletions(-)

diff --git a/src/datacat_integration/secrets.py b/src/datacat_integration/secrets.py
index b39b921..9b29b6d 100644
--- a/src/datacat_integration/secrets.py
+++ b/src/datacat_integration/secrets.py
@@ -3,8 +3,9 @@ from urllib.parse import urljoin
 from airflow.secrets import BaseSecretsBackend
 import requests
 import logging
+import json
 
-from datacat_integration.connection import DataCatConnection, get_connection_from_entry
+from datacat_integration.connection import DataCatConnection, DataCatalogEntry, get_connection_from_entry
 
 connection_backend_type = "airflow_connections"
 
@@ -42,7 +43,7 @@ class DataCatConnectionWithSecrets(DataCatConnection):
         url = urljoin(self.url, f"{datacat_type}/{oid}/secrets")
         response = requests.get(url, headers=headers)
         if response.ok:
-            return response.json()
+            return json.dumps(response.json())
         else:
             raise ConnectionError(response.text)
 
@@ -55,7 +56,7 @@ class DataCatConnectionWithSecrets(DataCatConnection):
         url = urljoin(self.url, f"{datacat_type}/{oid}/secrets_values")
         response = requests.get(url, headers=headers)
         if response.ok:
-            return response.json()
+            return json.dumps(response.json())
         else:
             raise ConnectionError(response.text)
 
@@ -68,7 +69,7 @@ class DataCatConnectionWithSecrets(DataCatConnection):
         url = urljoin(self.url, f"{datacat_type}/{oid}/secrets/{key}")
         response = requests.get(url, headers=headers)
         if response.ok:
-            return response.json()
+            return json.dumps(response.json())
         else:
             raise ConnectionError(response.text)
 
@@ -87,7 +88,7 @@ class DatacatSecretsBackend(BaseSecretsBackend):
         log.debug(f"Get connection: {conn_id}")
 
         secrets_conn = DataCatConnectionWithSecrets(self.url, self.user, self.password)
-        data = secrets_conn.get_entry(connection_backend_type, conn_id)
-        secrets = secrets_conn.get_all_secret_key_value(connection_backend_type, conn_id)
+        data = DataCatalogEntry.from_json(secrets_conn.get_entry(connection_backend_type, conn_id)).__dict__
+        secrets = json.loads(secrets_conn.get_all_secret_key_value(connection_backend_type, conn_id))
         conn = get_connection_with_secrets_from_entry(data, secrets, connection_backend_type, conn_id)
         return conn
\ No newline at end of file
-- 
GitLab