From 193bcce236176abc939693f80f3584d2fb1f36eb Mon Sep 17 00:00:00 2001 From: Yeuoly Date: Sat, 9 Mar 2024 19:59:47 +0800 Subject: [PATCH] feat: http request --- api/core/workflow/nodes/code/code_node.py | 1 - .../workflow/nodes/http_request/entities.py | 31 +++++++++++++++++++ .../nodes/http_request/http_request_node.py | 20 ++++++++++-- 3 files changed, 49 insertions(+), 3 deletions(-) create mode 100644 api/core/workflow/nodes/http_request/entities.py diff --git a/api/core/workflow/nodes/code/code_node.py b/api/core/workflow/nodes/code/code_node.py index 170f2b9cd8..3d3c475d06 100644 --- a/api/core/workflow/nodes/code/code_node.py +++ b/api/core/workflow/nodes/code/code_node.py @@ -1,6 +1,5 @@ from typing import Optional, Union, cast -from core.workflow.entities.base_node_data_entities import BaseNodeData from core.workflow.entities.node_entities import NodeRunResult, NodeType from core.workflow.entities.variable_pool import VariablePool from core.workflow.nodes.base_node import BaseNode diff --git a/api/core/workflow/nodes/http_request/entities.py b/api/core/workflow/nodes/http_request/entities.py new file mode 100644 index 0000000000..8610e88e55 --- /dev/null +++ b/api/core/workflow/nodes/http_request/entities.py @@ -0,0 +1,31 @@ +from typing import Literal, Union + +from pydantic import BaseModel + +from core.workflow.entities.base_node_data_entities import BaseNodeData +from core.workflow.entities.variable_entities import VariableSelector + + +class HttpRequestNodeData(BaseNodeData): + """ + Code Node Data. + """ + class Authorization(BaseModel): + class Config(BaseModel): + type: Literal[None, 'basic', 'bearer', 'custom'] + api_key: Union[None, str] + header: Union[None, str] + + type: Literal['no-auth', 'api-key'] + + class Body(BaseModel): + type: Literal[None, 'form-data', 'x-www-form-urlencoded', 'raw'] + data: Union[None, str] + + variables: list[VariableSelector] + method: Literal['get', 'post', 'put', 'patch', 'delete'] + url: str + authorization: Authorization + headers: str + params: str + \ No newline at end of file diff --git a/api/core/workflow/nodes/http_request/http_request_node.py b/api/core/workflow/nodes/http_request/http_request_node.py index 5be25a9834..d0fa29646f 100644 --- a/api/core/workflow/nodes/http_request/http_request_node.py +++ b/api/core/workflow/nodes/http_request/http_request_node.py @@ -1,5 +1,21 @@ +from core.workflow.entities.base_node_data_entities import BaseNodeData +from core.workflow.entities.node_entities import NodeRunResult, NodeType +from core.workflow.entities.variable_pool import VariablePool from core.workflow.nodes.base_node import BaseNode - +from core.workflow.nodes.http_request.entities import HttpRequestNodeData class HttpRequestNode(BaseNode): - pass + _node_data_cls = HttpRequestNodeData + node_type = NodeType.HTTP_REQUEST + + def _run(self, variable_pool: VariablePool) -> NodeRunResult: + pass + + @classmethod + def _extract_variable_selector_to_variable_mapping(cls, node_data: BaseNodeData) -> dict[list[str], str]: + """ + Extract variable selector to variable mapping + :param node_data: node data + :return: + """ + pass \ No newline at end of file