From 4429968f42464e5cd1740c2d018399b50660330f Mon Sep 17 00:00:00 2001 From: Catherine Noll Date: Tue, 6 Dec 2022 15:27:59 -0500 Subject: [PATCH] Show http method in the connector builder test panel request tab (#20109) Show http method in the connector builder test panel request tab --- .../generated/models/http_request.py | 2 ++ .../connector_builder/impl/default_api.py | 8 +++++++- .../src/main/openapi/openapi.yaml | 5 +++++ .../connector_builder/impl/test_default_api.py | 18 ++++++++++-------- 4 files changed, 24 insertions(+), 9 deletions(-) diff --git a/airbyte-connector-builder-server/connector_builder/generated/models/http_request.py b/airbyte-connector-builder-server/connector_builder/generated/models/http_request.py index e72d94e9aaa9..5f29b9d0b7c5 100644 --- a/airbyte-connector-builder-server/connector_builder/generated/models/http_request.py +++ b/airbyte-connector-builder-server/connector_builder/generated/models/http_request.py @@ -20,11 +20,13 @@ class HttpRequest(BaseModel): parameters: The parameters of this HttpRequest [Optional]. body: The body of this HttpRequest [Optional]. headers: The headers of this HttpRequest [Optional]. + http_method: The http_method of this HttpRequest. """ url: str parameters: Optional[Dict[str, Any]] = None body: Optional[Dict[str, Any]] = None headers: Optional[Dict[str, Any]] = None + http_method: str HttpRequest.update_forward_refs() diff --git a/airbyte-connector-builder-server/connector_builder/impl/default_api.py b/airbyte-connector-builder-server/connector_builder/impl/default_api.py index 4a46c87834ee..4516dc79791b 100644 --- a/airbyte-connector-builder-server/connector_builder/impl/default_api.py +++ b/airbyte-connector-builder-server/connector_builder/impl/default_api.py @@ -177,7 +177,13 @@ def _create_request_from_log_message(self, log_message: AirbyteLogMessage) -> Op url = urlparse(request.get("url", "")) full_path = f"{url.scheme}://{url.hostname}{url.path}" if url else "" parameters = parse_qs(url.query) or None - return HttpRequest(url=full_path, headers=request.get("headers"), parameters=parameters, body=request.get("body")) + return HttpRequest( + url=full_path, + http_method=request.get("http_method", ""), + headers=request.get("headers"), + parameters=parameters, + body=request.get("body"), + ) except JSONDecodeError as error: self.logger.warning(f"Failed to parse log message into request object with error: {error}") return None diff --git a/airbyte-connector-builder-server/src/main/openapi/openapi.yaml b/airbyte-connector-builder-server/src/main/openapi/openapi.yaml index 97ae958a7ba3..56ef6aa35ea6 100644 --- a/airbyte-connector-builder-server/src/main/openapi/openapi.yaml +++ b/airbyte-connector-builder-server/src/main/openapi/openapi.yaml @@ -153,6 +153,7 @@ components: type: object required: - url + - http_method properties: url: type: string @@ -166,6 +167,10 @@ components: headers: type: object description: The headers of the HTTP request, if any + http_method: + type: string + enum: ["GET", "POST", "PUT", "PATCH"] + description: The http method of the request ("GET", "POST", "PUT", or "PATCH") HttpResponse: type: object required: diff --git a/airbyte-connector-builder-server/unit_tests/connector_builder/impl/test_default_api.py b/airbyte-connector-builder-server/unit_tests/connector_builder/impl/test_default_api.py index 1520ba893df2..c92497cc0cae 100644 --- a/airbyte-connector-builder-server/unit_tests/connector_builder/impl/test_default_api.py +++ b/airbyte-connector-builder-server/unit_tests/connector_builder/impl/test_default_api.py @@ -386,25 +386,27 @@ def test_read_stream_returns_error_if_stream_does_not_exist(): "log_message, expected_request", [ pytest.param( - 'request:{"url": "https://nichirin.com/v1/swords?color=orange", "headers": {"field": "name"}, "body":{"key": "value"}}', + 'request:{"url": "https://nichirin.com/v1/swords?color=orange", "http_method": "PUT", "headers": {"field": "name"}, "body":{"key": "value"}}', HttpRequest( - url="https://nichirin.com/v1/swords", parameters={"color": ["orange"]}, headers={"field": "name"}, body={"key": "value"} + url="https://nichirin.com/v1/swords", parameters={"color": ["orange"]}, headers={"field": "name"}, body={"key": "value"}, + http_method="PUT", ), id="test_create_request_with_all_fields", ), pytest.param( - 'request:{"url": "https://nichirin.com/v1/swords?color=orange", "headers": {"field": "name"}}', - HttpRequest(url="https://nichirin.com/v1/swords", parameters={"color": ["orange"]}, headers={"field": "name"}), + 'request:{"url": "https://nichirin.com/v1/swords?color=orange", "http_method": "GET", "headers": {"field": "name"}}', + HttpRequest(url="https://nichirin.com/v1/swords", parameters={"color": ["orange"]}, headers={"field": "name"}, + http_method="GET"), id="test_create_request_with_no_body", ), pytest.param( - 'request:{"url": "https://nichirin.com/v1/swords?color=orange", "body":{"key": "value"}}', - HttpRequest(url="https://nichirin.com/v1/swords", parameters={"color": ["orange"]}, body={"key": "value"}), + 'request:{"url": "https://nichirin.com/v1/swords?color=orange", "http_method": "PUT", "body":{"key": "value"}}', + HttpRequest(url="https://nichirin.com/v1/swords", parameters={"color": ["orange"]}, body={"key": "value"}, http_method="PUT"), id="test_create_request_with_no_headers", ), pytest.param( - 'request:{"url": "https://nichirin.com/v1/swords", "headers": {"field": "name"}, "body":{"key": "value"}}', - HttpRequest(url="https://nichirin.com/v1/swords", headers={"field": "name"}, body={"key": "value"}), + 'request:{"url": "https://nichirin.com/v1/swords", "http_method": "PUT", "headers": {"field": "name"}, "body":{"key": "value"}}', + HttpRequest(url="https://nichirin.com/v1/swords", headers={"field": "name"}, body={"key": "value"}, http_method="PUT"), id="test_create_request_with_no_parameters", ), pytest.param("request:{invalid_json: }", None, id="test_invalid_json_still_does_not_crash"),