async function getDynamicSpotOptions()

in api/v1/src/spots/validateManager.js [210:250]


async function getDynamicSpotOptions(options) {
    let definitions = await getSpotOptions(options, true).catch(err => {
        console.warn(err.message);
        return { success: false, code: 400, errors: [err.message] };
    });

    var message;
    if (definitions.success === false) {
        message = `Missing query definitions: ${JSON.stringify(missingParams)}`;
        console.warn(message);
        return { success: false, code: 400, errors: [message] };
    }
    let requestDefinition = underscore.findWhere(definitions.data, { dataId: options.dataId });
    if (!requestDefinition) {
        message = `No valid query parameters: ${JSON.stringify(options)}`;
        console.warn(message);
        return { success: false, code: 400, errors: [message] };
    }

    console.log(`Request definition: ${JSON.stringify(requestDefinition)}`);

    let allParamsSupplied = true;

    let params = {};
    let missingParams = [];
    requestDefinition.params.forEach((p) => {
        let exists = underscore.contains(Object.keys(options.parameters), p.name);
        if (!exists) {
            missingParams.push(p.name);
            allParamsSupplied = false;
        }
        params[p.name] = options.parameters[p.name];
    });

    if (!allParamsSupplied) {
        message = `Missing params: ${JSON.stringify(missingParams)}`;
        console.warn(message);
        return { success: false, code: 400, errors: [message] };
    }
    return { query: requestDefinition.query, params: params };
}