fix: urlencoded fields are parsed for env variables. fixes #2094

This commit is contained in:
Andrew Bastin
2022-01-28 17:34:15 +05:30
parent 248b6d6b64
commit 9e0eeb5b56

View File

@@ -59,7 +59,7 @@ export const resolvesEnvsInBody = (
function getFinalBodyFromRequest( function getFinalBodyFromRequest(
request: HoppRESTRequest, request: HoppRESTRequest,
env: Environment envVariables: Environment["variables"]
): FormData | string | null { ): FormData | string | null {
if (request.body.contentType === null) { if (request.body.contentType === null) {
return null return null
@@ -73,7 +73,13 @@ function getFinalBodyFromRequest(
// Filter out active // Filter out active
A.filter((x) => x.active), A.filter((x) => x.active),
// Convert to tuple // Convert to tuple
A.map(({ key, value }) => [key, value] as [string, string]), A.map(
({ key, value }) =>
[
parseTemplateString(key, envVariables),
parseTemplateString(value, envVariables),
] as [string, string]
),
// Tuple to Record object // Tuple to Record object
tupleToRecord, tupleToRecord,
// Stringify // Stringify
@@ -98,19 +104,19 @@ function getFinalBodyFromRequest(
arrayFlatMap((x) => arrayFlatMap((x) =>
x.isFile x.isFile
? x.value.map((v) => ({ ? x.value.map((v) => ({
key: parseTemplateString(x.key, env.variables), key: parseTemplateString(x.key, envVariables),
value: v as string | Blob, value: v as string | Blob,
})) }))
: [ : [
{ {
key: parseTemplateString(x.key, env.variables), key: parseTemplateString(x.key, envVariables),
value: parseTemplateString(x.value, env.variables), value: parseTemplateString(x.value, envVariables),
}, },
] ]
), ),
toFormData toFormData
) )
} else return parseBodyEnvVariables(request.body.body, env.variables) } else return parseBodyEnvVariables(request.body.body, envVariables)
} }
/** /**
@@ -194,7 +200,7 @@ export function getEffectiveRESTRequest(
} }
} }
const effectiveFinalBody = getFinalBodyFromRequest(request, environment) const effectiveFinalBody = getFinalBodyFromRequest(request, envVariables)
if (request.body.contentType) if (request.body.contentType)
effectiveFinalHeaders.push({ effectiveFinalHeaders.push({
active: true, active: true,