request.js 1.55 KB
"use strict";

const request = require('request');

const coreUrl = require('komodo-sdk/core-url');
const logger = require('komodo-sdk/logger');
const commandError = require('../command-handler/error');

function execute(coreEndpoint, params, httpMethod, cb) {

    const requestOptions = {
        url: coreUrl + coreEndpoint,
        method: httpMethod || 'GET'
    }

    if (requestOptions.method === 'GET' && params) {
        requestOptions.qs = params;
    }
    else if (requestOptions.method === 'POST' && params) {
        requestOptions.data = params;
    }

    logger.verbose('COREAPI-REQUEST: Requesting to core', {url: requestOptions.url, http_method: httpMethod, params: params});

    request(requestOptions, function(err, res, body) {
        const responseParams = {
            directResponse: true,
            httpStatusCode: res ? res.statusCode : null,
            body: body
        }

        if (err) {
            cb(commandError.ERR_INVALID_CORE_RESPONSE, null, responseParams);
            return;
        }

        if (res.statusCode !== 200) {
            cb(commandError.ERR_INVALID_CORE_HTTP_STATUS_RESPONSE, null, responseParams);
            return;
        }

        try {
            var coreResponseObject = JSON.parse(body);
        }
        catch(e) {
            logger.verbose(commandError.ERR_INVALID_CORE_RESPONSE, {body: body})
            cb(commandError.ERR_INVALID_CORE_RESPONSE, null, responseParams);
            return;
        }

        
        cb(err, coreResponseObject, responseParams);
    })
    
}

module.exports = execute;