Implementing type cleanup based on the input schema, specifically for booleans and numbers.

This commit is contained in:
mike12345567 2020-09-23 11:54:15 +01:00
parent 1c2d90fe3d
commit 93611d5d83
1 changed files with 31 additions and 0 deletions

View File

@ -29,6 +29,36 @@ function cleanMustache(string) {
return string return string
} }
// looks for inputs that need cleanup to the correct type
function cleanInputValue(inputs, schema) {
if (schema == null) {
return inputs
}
for (let inputKey of Object.keys(inputs)) {
let input = inputs[inputKey]
if (typeof input !== "string") {
continue
}
let propSchema = schema.properties[inputKey]
if (propSchema.type === "boolean") {
let lcInput = input.toLowerCase()
if (lcInput === "true") {
inputs[inputKey] = true
}
if (lcInput === "false") {
inputs[inputKey] = false
}
}
if (propSchema.type === "number") {
let floatInput = parseFloat(input)
if (!isNaN(floatInput)) {
inputs[inputKey] = floatInput
}
}
}
return inputs
}
function recurseMustache(inputs, context) { function recurseMustache(inputs, context) {
for (let key of Object.keys(inputs)) { for (let key of Object.keys(inputs)) {
let val = inputs[key] let val = inputs[key]
@ -77,6 +107,7 @@ class Orchestrator {
for (let step of automation.definition.steps) { for (let step of automation.definition.steps) {
let stepFn = await this.getStepFunctionality(step.type, step.stepId) let stepFn = await this.getStepFunctionality(step.type, step.stepId)
step.inputs = recurseMustache(step.inputs, this._context) step.inputs = recurseMustache(step.inputs, this._context)
step.inputs = cleanInputValue(step.inputs, step.schema.inputs)
// instanceId is always passed // instanceId is always passed
const outputs = await stepFn({ const outputs = await stepFn({
inputs: step.inputs, inputs: step.inputs,