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 = async 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 = async 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); } var result = await asyncRequest(params,cmd,cfg.service.D01.Name); // console.log(result); if(result.response) { var data = JSON.parse(result.response.body); if(!data.resultCode) result.err = "Miss resultCode"; if(!data.resultDescription) result.err = "Miss resultDescription" } return result; }; 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;