55 lines
1.7 KiB
JavaScript
55 lines
1.7 KiB
JavaScript
// parse the params from http call
|
|
|
|
import {returnOnError} from "./reporterror.js"
|
|
|
|
const checkParams = (params, mo) => {
|
|
let o = {opts: {}, err: null}
|
|
if ((mo.mandatory.length !== 0) && (params === undefined)) {
|
|
return returnOnError(o, 'NOPARAMETER', checkParams.name )
|
|
}
|
|
for (let p of mo.mandatory) {
|
|
if (!(p.name in params)) {
|
|
return returnOnError(o, 'NOMANDPARAM', checkParams.name, p.name)
|
|
}
|
|
if (p.type === 'int') {
|
|
let x = parseInt(params[p.name])
|
|
if (isNaN(x)) {
|
|
return returnOnError(o, 'PARAMNONUM', checkParams.name, p.name)
|
|
} else {
|
|
o.opts[p.name] = x
|
|
continue
|
|
}
|
|
} else if (p.type === 'float') {
|
|
let x = parseFloat(params[p.name])
|
|
if (isNaN(x)) {
|
|
return returnOnError(o, 'PARAMNONUM', checkParams.name, p.name)
|
|
} else {
|
|
o.opts[p.name] = x
|
|
continue
|
|
}
|
|
}
|
|
o.opts[p.name] = params[p.name]
|
|
}
|
|
for(let p of mo.optional) {
|
|
if (!(p.name in params)) {
|
|
o.opts[p.name] = p.default
|
|
} else {
|
|
if (p.type === 'int') {
|
|
let x = parseInt(params[p.name])
|
|
if (isNaN(x)) {
|
|
o.opts[p.name] = p.default
|
|
} else {
|
|
o.opts[p.name] = x
|
|
}
|
|
} else if (p.type === 'bool') {
|
|
o.opts[p.name] = params[p.name] === 'true'
|
|
} else {
|
|
o.opts[p.name] = params[p.name]
|
|
}
|
|
}
|
|
}
|
|
return o
|
|
}
|
|
|
|
export default checkParams
|