drp-mesh
Version:
73 lines (67 loc) • 2.79 kB
JavaScript
//const DRP_AuthInfo = require("./auth").DRP_AuthInfo;
class DRP_MethodParams {
/**
* DRP Method Parameters
* @param {string} verb
* @param {string[]} pathList
* @param {any} reqBody
* @param {any} reqQuery
* @param {string} callerType
* @param {DRP_AuthInfo} authInfo
*/
constructor(verb, pathList, reqBody, reqQuery, callerType, authInfo) {
/** @type {string} */
this.__verb = verb;
/** @type {string[]} */
this.__pathList = pathList;
/** @type {object} */
this.__reqBody = reqBody;
/** @type {object} */
this.__reqQuery = reqQuery;
/** @type {string} */
this.__callerType = callerType;
/** @type {DRP_AuthInfo} */
this.__authInfo = authInfo;
}
}
/**
* Get parameters for Service Method
* @param {DRP_MethodParams} paramsObj Parameters object
* @param {string[]} paramNames Ordered list of parameters to extract
* @returns {Object.<string, any>}
*/
function DRP_GetParams(paramsObj, paramNames) {
/*
* Parameters can be passed four ways:
* - Ordered list of remaining path elements (params.__pathList[paramNames[x]])
* - POST or PUT body (params.__reqBody.myVar)
* - URL query (params.__reqQuery.myVar)
* - Directly in params (params.myVar)
*/
let returnObj = {};
if (!paramNames || !Array.isArray(paramNames)) return returnObj;
for (let i = 0; i < paramNames.length; i++) {
let thisParamName = paramNames[i];
returnObj[thisParamName] = null;
// First, see if the parameters were part of the remaining path (CLI or REST)
if (paramsObj.__pathList && Array.isArray(paramsObj.__pathList)) {
if (typeof paramsObj.__pathList[i] !== 'undefined') {
returnObj[thisParamName] = paramsObj.__pathList[i];
}
}
// Second, see if the parameters were passed in the payload (req.body)
if (paramsObj.__reqBody && typeof paramsObj.__reqBody[thisParamName] !== 'undefined') {
returnObj[thisParamName] = paramsObj.__reqBody[thisParamName];
}
// Third, see if the parameters were passed in params (req.query)
if (paramsObj.__reqQuery && typeof paramsObj.__reqQuery[thisParamName] !== 'undefined') {
returnObj[thisParamName] = paramsObj.__reqQuery[thisParamName];
}
// Fourth, see if the parameters were passed directly in the params (DRP Exec)
if (typeof paramsObj[thisParamName] !== 'undefined') {
returnObj[thisParamName] = paramsObj[thisParamName];
}
}
return returnObj;
}
module.exports = { DRP_MethodParams, DRP_GetParams };