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 log = require('../helper/log.js'); var constants = require('../helper/constants.js'); var connection = []; connection.requestSoapToSACF = async function (req,soap,cmd,myMethod) { try { log.log("Connect to SACF") var service = cfg.service.SACF; var retry = service[myMethod+"_"+cmd+"_Retry"]; var params = { url : service[myMethod+"_"+cmd+"_URL"], body : messageSOAP.objectToSOAP(soap,cmd), method : myMethod, timeout : cfg.service.SACF[myMethod+"_"+cmd+"_Timeout"]*1000 } log.log("requestData : "+JSON.stringify(params)) if(!retry) retry = cfg.Default_Retry; var objectData = { maxRetry : retry, curRetry : 1 } var funS = function(){ stats.sendSACFRequest(service.Name,cmd); log.logDetail.addOutput(req,service.Name,myMethod+"_"+cmd,constants.REQUEST,params,soap); }; var funStats = { start : funS, error : function(response){log.addErrorSummary(req,service.Name,myMethod+"_"+cmd,response.resultCode,response.resultDescription);} }; var result = await asyncRequest(params,objectData,funStats); return checkResponse(result,funStats); } catch(err) { log.log(err); var result = { response : constants.RESPONSECONN.MESSAGE.ERROR }; return result; } }; connection.requestJsonToD01 = async function (req,obj,cmd,myMethod,filter) { try { log.log("Connect to D01") var service = cfg.service.D01; var retry = service[myMethod+"_"+cmd+"_Retry"]; if(!retry) retry = cfg.Default_Retry; var objectData = { maxRetry : retry, curRetry : 1 } // JSON.stringify(json) var params = { url : service[myMethod+"_"+cmd+"_URL"], body : obj, method : myMethod, timeout : service[myMethod+"_"+cmd+"_Timeout"]*1000 } log.log("requestData : "+JSON.stringify(params)) var funStats = function(){ stats.sendRestRequest(service.Name,myMethod,cmd); log.logDetail.addOutput(req,service.Name,myMethod+"_"+cmd,constants.Request,params,obj); }; var funStats = { start : funStats, error : function(response){log.addErrorSummary(req,service.Name,myMethod+"_"+cmd,response.resultCode,response.resultDescription);} }; var result = {}; result.response = {}; var resultData = []; if(params.method == constants.METHOD.GET) { var genUrl = getUrl(params,service["searchRecordLimit"]); if(genUrl.length > 1) { console.log("multi Send"); var multiSend = []; for(var i=0;i { request(params, function (error, response, body) { funStat.start(); log.log("URL : "+params.url); if (error) { if( objectData.maxRetry == objectData.curRetry-1) { resolve({ 'body' : body, 'err' : error }); }else { var errRes = {}; log.log(error,'error'); if(error.code == constants.RESPONSECONN.STATS.ETIMEDOUT){ errRes.response = constants.RESPONSECONN.MESSAGE.ETIMEDOUT; } else if(error.code == constants.RESPONSECONN.STATS.ECONNREFUSED){ errRes.response = constants.RESPONSECONN.MESSAGE.ECONNREFUSED; } else if(error.code == constants.RESPONSECONN.STATS.ESOCKETTIMEDOUT){ errRes.response = constants.RESPONSECONN.MESSAGE.ESOCKETTIMEDOUT; } else { errRes.response = constants.RESPONSECONN.MESSAGE.ERROR; } // console.log("retry "+objectData.curRetry); funStat.error(errRes); objectData.curRetry++; resolve(asyncRequest(params,objectData,funStat)); } } else { // stats.receiveResponse(node,cmd,"Success"); log.log("Response : "+body); resolve({ 'body' : body, 'response' : response }); } }); }); }; function getUrlFilter(url,filter){ var returnData = []; var myfilter = "" for(var i in filter){ myfilter += myfilter+"("+i+"="+filter[i]+")" } var myUrl = url+"?filter="+myfilter // var myUrl = url+"?filter=("+filter.base+")"; returnData.push(myUrl); for(var i=0;i 0) { //have multi var careData = filter.multi[0]; // console.log(freeSpace); for(var i=0;i careData.length) { filter.base = filter.base+"(|"+careData.data+")"; careData = filter.multi[i]; } } var myUrl = url+"?filter=:"+filter.base+":"+fields; var freeSpace = cfg.Uri_length - myUrl.length; var arr = careData.data.split(")("); for(var j=0;j (arrData[i].length+3)) { loopUrl = loopUrl + arrData[i]; loopSpace = loopSpace - arrData[i].length; }else { if(loopUrl != "") { arrUrl.push(url+"?filter=("+filter+"(|"+loopUrl+"))"+fields); loopUrl = arrData[i]; loopSpace = freeSpace - arrData[i].length; } } } if(loopUrl != "") arrUrl.push(url+"?filter=("+filter+"(|"+loopUrl+")"+fields); return arrUrl; } function checkResponse(result,funStats) { if(result.err) { log.log("Final Response : "+result.err,'error'); if(result.err.code == constants.RESPONSECONN.STATS.ETIMEDOUT){ result.response = constants.RESPONSECONN.MESSAGE.ETIMEDOUT; // result.response.resultCode = "50003"; // result.response.resultDescription = "Timeout"; } else if(result.err.code == constants.RESPONSECONN.STATS.ECONNREFUSED){ result.response = constants.RESPONSECONN.MESSAGE.ECONNREFUSED; // result.response.resultCode = "50002"; // result.response.resultDescription = "Reject"; } else if(result.err.code == constants.RESPONSECONN.STATS.ESOCKETTIMEDOUT){ result.response = constants.RESPONSECONN.MESSAGE.ESOCKETTIMEDOUT; } else { if(result.err.resultDescription && result.err.resultDescription.indexOf(constants.RESPONSECONN.STATS.MISSING) != -1){ result.response.resultCode = constants.RESPONSERESULT.MISSING_INVALID.resultCode; result.response.resultDescription = result.err; } else { result.response = constants.RESPONSECONN.MESSAGE.ERROR; } } funStats.error(result.response) }else log.log("Final Response : "+JSON.stringify(result)); return result; } module.exports = connection;