fix(blocks): improve handling of plain text in send web request block (#9219)

### Changes 🏗️
This is to improve how we deal with plain text in the send web request
block.

-	Plain text stays as plain text (regardless of JSON toggle)
-	Valid JSON with JSON toggle enabled sends as JSON
-	JSON-like data with JSON toggle disabled sends as form data
pull/9223/head
Bently 2025-01-08 12:18:42 +00:00 committed by GitHub
parent 43a79d063f
commit e4d8502729
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 13 additions and 4 deletions

View File

@ -56,15 +56,24 @@ class SendWebRequestBlock(Block):
)
def run(self, input_data: Input, **kwargs) -> BlockOutput:
if isinstance(input_data.body, str):
input_data.body = json.loads(input_data.body)
body = input_data.body
if input_data.json_format:
if isinstance(body, str):
try:
# Try to parse as JSON first
body = json.loads(body)
except json.JSONDecodeError:
# If it's not valid JSON and just plain text,
# we should send it as plain text instead
input_data.json_format = False
response = requests.request(
input_data.method.value,
input_data.url,
headers=input_data.headers,
json=input_data.body if input_data.json_format else None,
data=input_data.body if not input_data.json_format else None,
json=body if input_data.json_format else None,
data=body if not input_data.json_format else None,
)
result = response.json() if input_data.json_format else response.text