From f6c8390b0bd703d53f4ba67d38a499cee3293045 Mon Sep 17 00:00:00 2001 From: jyong <718720800@qq.com> Date: Tue, 20 Aug 2024 12:47:51 +0800 Subject: [PATCH] external knowledge --- api/services/external_knowledge_service.py | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/api/services/external_knowledge_service.py b/api/services/external_knowledge_service.py index 2ff272f87e..181af66a20 100644 --- a/api/services/external_knowledge_service.py +++ b/api/services/external_knowledge_service.py @@ -1,6 +1,7 @@ import json from datetime import datetime, timezone +from core.helper import ssrf_proxy from extensions.ext_database import db from extensions.ext_redis import redis_client from libs import helper @@ -169,8 +170,21 @@ class ExternalDatasetService: return dataset - @staticmethod - def process_external_api(api_template_id: str, data_source: dict, process_parameter: dict): - pass + def process_external_api(self, headers: dict[str, Any]) -> httpx.Response: + """ + do http request depending on api bundle + """ + kwargs = { + 'url': self.server_url, + 'headers': headers, + 'params': self.params, + 'timeout': (self.timeout.connect, self.timeout.read, self.timeout.write), + 'follow_redirects': True, + } + if self.method in ('get', 'head', 'post', 'put', 'delete', 'patch'): + response = getattr(ssrf_proxy, self.method)(data=self.body, files=self.files, **kwargs) + else: + raise ValueError(f'Invalid http method {self.method}') + return response \ No newline at end of file