pull/13884/merge
litterGuy 7 months ago committed by GitHub
commit bc7fbf7496
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -164,6 +164,20 @@ class VariablePool(BaseModel):
segments.append(variable_factory.build_segment(part))
return SegmentGroup(value=segments)
def convert_template_escape(self, template: str, /):
parts = VARIABLE_PATTERN.split(template)
segments = []
for part in filter(lambda x: x, parts):
if "." in part and (variable := self.get(part.split("."))):
if isinstance(variable.value, str):
escape_string = variable.value.replace('"', '\\"').replace('\n', '\\n')
segments.append(variable_factory.build_segment(escape_string))
else:
segments.append(variable)
else:
segments.append(variable_factory.build_segment(part))
return SegmentGroup(value=segments)
def get_file(self, selector: Sequence[str], /) -> FileSegment | None:
segment = self.get(selector)
if isinstance(segment, FileSegment):

@ -177,7 +177,7 @@ class Executor:
case "json":
if len(data) != 1:
raise RequestBodyError("json body type should have exactly one item")
json_string = self.variable_pool.convert_template(data[0].value).text
json_string = self.variable_pool.convert_template_escape(data[0].value).text
try:
repaired = repair_json(json_string)
json_object = json.loads(repaired, strict=False)

Loading…
Cancel
Save