Skip to content

Commit ab6a227

Browse files
fix: route RequestBodyPlainText to request_body_data instead of request_body_json
RequestBodyPlainText was incorrectly grouped with RequestBodyJsonObject in _resolve_request_body, causing plain text body values to be routed to request_body_json. This caused a ValueError('Request body json cannot be a string') when using RequestBodyPlainText in connector builder. The fix routes RequestBodyPlainText to request_body_data, which correctly handles string payloads as plain text request bodies. Co-Authored-By: Vai Ignatavicius <vaidotas.ignatavicius@airbyte.io>
1 parent 7f41401 commit ab6a227

2 files changed

Lines changed: 19 additions & 9 deletions

File tree

airbyte_cdk/sources/declarative/requesters/request_options/interpolated_request_options_provider.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,8 +101,10 @@ def _resolve_request_body(self) -> None:
101101
self.request_body_data = self.request_body.value
102102
elif self.request_body.type == "RequestBodyGraphQL":
103103
self.request_body_json = self.request_body.value.dict(exclude_none=True)
104-
elif self.request_body.type in ("RequestBodyJsonObject", "RequestBodyPlainText"):
104+
elif self.request_body.type == "RequestBodyJsonObject":
105105
self.request_body_json = self.request_body.value
106+
elif self.request_body.type == "RequestBodyPlainText":
107+
self.request_body_data = self.request_body.value
106108
else:
107109
raise ValueError(f"Unsupported request body type: {self.request_body.type}")
108110

unit_tests/sources/declarative/requesters/request_options/test_interpolated_request_options_provider.py

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -211,14 +211,6 @@ def test_interpolated_request_json(test_name, input_request_json, expected_reque
211211
RequestBodyJsonObject(type="RequestBodyJsonObject", value={"none_value": "{{ None }}"}),
212212
{},
213213
),
214-
(
215-
"test_string",
216-
RequestBodyPlainText(
217-
type="RequestBodyPlainText",
218-
value="""{"nested": { "key": "{{ config['option'] }}" }}""",
219-
),
220-
{"nested": {"key": "OPTION"}},
221-
),
222214
(
223215
"test_nested_objects",
224216
RequestBodyJsonObject(
@@ -345,6 +337,22 @@ def test_interpolated_request_data(test_name, input_request_data, expected_reque
345337
),
346338
{"2020-01-01 - 12345": "ABC"},
347339
),
340+
(
341+
"test_plain_text_static_value",
342+
RequestBodyPlainText(
343+
type="RequestBodyPlainText",
344+
value="plain text body",
345+
),
346+
"plain text body",
347+
),
348+
(
349+
"test_plain_text_with_interpolation",
350+
RequestBodyPlainText(
351+
type="RequestBodyPlainText",
352+
value="{{ config['option'] }}",
353+
),
354+
"OPTION",
355+
),
348356
],
349357
)
350358
def test_interpolated_request_data_using_request_body(

0 commit comments

Comments
 (0)