From fd8cfbddcb969ca13cc272392a8360208f45eaa7 Mon Sep 17 00:00:00 2001 From: AlexHappy <1223408988@qq.com> Date: Fri, 29 Dec 2023 03:51:11 +0800 Subject: [PATCH 1/2] replace storage-server with dtable-server --- .../utils/dtable_storage_server_api.py | 31 +++++++++++-------- 1 file changed, 18 insertions(+), 13 deletions(-) diff --git a/dtable_events/utils/dtable_storage_server_api.py b/dtable_events/utils/dtable_storage_server_api.py index d74900d3..44f15c18 100644 --- a/dtable_events/utils/dtable_storage_server_api.py +++ b/dtable_events/utils/dtable_storage_server_api.py @@ -1,10 +1,7 @@ import uuid import requests -try: - from seahub.settings import DTABLE_STORAGE_SERVER_URL -except ImportError as err: - DTABLE_STORAGE_SERVER_URL = '' +from dtable_events.utils import get_inner_dtable_server_url TIMEOUT = 90 @@ -39,15 +36,23 @@ def __init__(self): """ :param server_url: str """ - self.server_url = DTABLE_STORAGE_SERVER_URL.rstrip('/') + self.server_url = get_inner_dtable_server_url().rstrip('/') def __str__(self): return '' % self.server_url + def get_headers(self, dtable_uuid): + payload = { + 'dtable_uuid': uuid_str_to_36_chars(dtable_uuid), + 'is_internal': True + } + access_token = jwt.encode(payload, settings.DTABLE_PRIVATE_KEY, algorithm='HS256') + return {'Authorization': f'Token {access_token}'} + def get_dtable(self, dtable_uuid): dtable_uuid = uuid_str_to_36_chars(dtable_uuid) - url = self.server_url + '/dtables/' + dtable_uuid - response = requests.get(url, timeout=TIMEOUT) + url = self.server_url + f'/api/v1/internal/storage/dtables/{dtable_uuid}/' + response = requests.get(url, headers=self.get_headers(dtable_uuid), timeout=TIMEOUT) try: data = parse_response(response) except StorageAPIError as e: @@ -57,22 +62,22 @@ def get_dtable(self, dtable_uuid): def create_empty_dtable(self, dtable_uuid): dtable_uuid = uuid_str_to_36_chars(dtable_uuid) - url = self.server_url + '/dtables/' + dtable_uuid - response = requests.put(url, timeout=TIMEOUT) + url = self.server_url + f'/api/v1/internal/storage/dtables/{dtable_uuid}/' + response = requests.put(url, headers=self.get_headers(dtable_uuid), timeout=TIMEOUT) data = parse_response(response) return data def save_dtable(self, dtable_uuid, json_string): dtable_uuid = uuid_str_to_36_chars(dtable_uuid) - url = self.server_url + '/dtables/' + dtable_uuid - response = requests.put(url, data=json_string, timeout=TIMEOUT) + url = self.server_url + f'/api/v1/internal/storage/dtables/{dtable_uuid}/' + response = requests.put(url, headers=self.get_headers(dtable_uuid), data=json_string, timeout=TIMEOUT) data = parse_response(response) return data def delete_dtable(self, dtable_uuid): dtable_uuid = uuid_str_to_36_chars(dtable_uuid) - url = self.server_url + '/dtables/' + dtable_uuid - response = requests.delete(url, timeout=TIMEOUT) + url = self.server_url + f'/api/v1/internal/storage/dtables/{dtable_uuid}/' + response = requests.delete(url, headers=self.get_headers(dtable_uuid), timeout=TIMEOUT) try: data = parse_response(response) except StorageAPIError as e: From 8fe8ae52d35613ba06178535abea293e2ea727f7 Mon Sep 17 00:00:00 2001 From: AlexCXC <1223408988@qq.com> Date: Fri, 29 Dec 2023 18:11:42 +0800 Subject: [PATCH 2/2] fix put data with content-type --- dtable_events/utils/dtable_storage_server_api.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/dtable_events/utils/dtable_storage_server_api.py b/dtable_events/utils/dtable_storage_server_api.py index 44f15c18..e926ace6 100644 --- a/dtable_events/utils/dtable_storage_server_api.py +++ b/dtable_events/utils/dtable_storage_server_api.py @@ -1,6 +1,9 @@ import uuid + +import jwt import requests +from dtable_events.app.config import DTABLE_PRIVATE_KEY from dtable_events.utils import get_inner_dtable_server_url @@ -46,7 +49,7 @@ def get_headers(self, dtable_uuid): 'dtable_uuid': uuid_str_to_36_chars(dtable_uuid), 'is_internal': True } - access_token = jwt.encode(payload, settings.DTABLE_PRIVATE_KEY, algorithm='HS256') + access_token = jwt.encode(payload, DTABLE_PRIVATE_KEY, algorithm='HS256') return {'Authorization': f'Token {access_token}'} def get_dtable(self, dtable_uuid): @@ -70,7 +73,9 @@ def create_empty_dtable(self, dtable_uuid): def save_dtable(self, dtable_uuid, json_string): dtable_uuid = uuid_str_to_36_chars(dtable_uuid) url = self.server_url + f'/api/v1/internal/storage/dtables/{dtable_uuid}/' - response = requests.put(url, headers=self.get_headers(dtable_uuid), data=json_string, timeout=TIMEOUT) + headers = self.get_headers(dtable_uuid) + headers['Content-Type'] = 'application/json' + response = requests.put(url, headers=headers, data=json_string, timeout=TIMEOUT) data = parse_response(response) return data