connection.js 2.83 KB
var env = process.env.NODE_ENV || 'development'; 
var cfg = require('../../config/config.js').get(env);
var stats = require('../helper/stats.js'); 
var request = require('request');
var messageSOAP = require('../helper/messageSOAP.js'); 
var connection = [];

connection.requestSoapToSPW = function (soap,cmd,myMethod) {

    var params = {
        url               : cfg.service.SPW[myMethod+"_"+cmd+"_URL"],
        body              : messageSOAP.objectToSOAP(soap,cmd),
        method            : myMethod
    }

    return asyncRequest(params,cmd,cfg.service.SPW.Name);
};
connection.requestJsonToD01 = function (obj,cmd,myMethod) {

    // JSON.stringify(json)
    var params = {
        url               : cfg.service.D01[myMethod+"_"+cmd+"_URL"],
        body              : obj,
        method            : myMethod
    }

    if(params.method == "GET")
    {
        params.url = getUrl(params);
        delete params.body;
    }else if(params.method == "POST")
    {
        params.body = JSON.stringify(params.body);
    }

    return asyncRequest(params,cmd,cfg.service.D01.Name);

    
};

function asyncRequest (params = {},cmd,node) {

    // console.log(params);
    return new Promise((resolve, reject) => {
        request(params, function (error, response, body) {

            stats.sendRequest(node,cmd);

            if (error) {
                // console.log("error");
                stats.reciveResponse(node,cmd,"Error");
                resolve({
                    'body'  : body,
                    'err'   : error
                });
            } else {
                // console.log("normal"); 
                stats.reciveResponse(node,cmd,"Success");               
                resolve({
                    'body'      : body,
                    'response'  : response
                });
            }
        });
    });
};

function getUrl(params)
{
    var url = params.url;
    var fields = "";
    var filter = "";

    // console.log(params.body);   
    if(params.body)
    {
        var first = true;
        for (key in params.body) {

            if(key == "fields")
                fields = getFields(params.body.fields,first);
            else
                filter = getfilter(filter,key,params.body[key]);

            first = false;
        }
        
       
    }   

    if(filter != "")
        filter = "?filter=(&"+filter+")";     

    // console.log(url);
    // console.log(filter);
    // console.log(fields);

    return url+filter+fields;
}

function getFields(fields,first)
{
    var returnData;
    var prefix;
    if(first)
        prefix = "?fields=";
    else
        prefix = "&fields=";

    returnData = prefix+fields;

    return returnData;
}

function getfilter(filter,key,newfilter)
{
    var returnData;
    returnData =  filter+"("+key+"="+newfilter+")"
    return returnData;
}

module.exports = connection;