Commit adfdbbeb28f62e7221e0b97be78147e4005ba7d8

Authored by Nattapon Wongpaet
2 parents 6f98e3d0 72409a48
Exists in master and in 1 other branch dev

Merge branch 'master' into dev

Showing 1 changed file with 241 additions and 109 deletions   Show diff stats
ais-structure/src/modules/helper/connection.js
... ... @@ -34,20 +34,25 @@ connection.requestSoapToSACF = async function (req,soap,cmd,myMethod) {
34 34 curRetry : 1
35 35 }
36 36  
37   - var funS = function(){
38   - stats.sendSACFRequest(service.Name,cmd);
39   - log.logDetail.addOutput(req,service.Name,myMethod+"_"+cmd,constants.REQUEST,params,soap);
40   - };
  37 +
41 38  
42 39 var funStats = {
43   - start : funS,
44   - error : function(response){log.addErrorSummary(req,service.Name,myMethod+"_"+cmd,response.resultCode,response.resultDescription);}
  40 + start : function(){
  41 + stats.sendSACFRequest(service.Name,cmd);
  42 + log.logDetail.addOutput(req,service.Name,myMethod+"_"+cmd,constants.REQUEST,params,soap);
  43 + },
  44 + end : function(){
  45 + // stats.sendSACFRequest(service.Name,cmd);
  46 + // log.logDetail.addOutput(req,service.Name,myMethod+"_"+cmd,constants.REQUEST,params,soap);
  47 + },
  48 + // error : function(response){log.addErrorSummary(req,service.Name,myMethod+"_"+cmd,response.resultCode,response.resultDescription);}
45 49 };
46 50  
47 51  
48 52 var result = await asyncRequest(params,objectData,funStats);
49 53  
50   - return checkResponse(result,funStats);
  54 + // return checkResponse(result,funStats);
  55 + return result;
51 56 }
52 57 catch(err) {
53 58 log.log(err);
... ... @@ -88,14 +93,121 @@ connection.requestJsonToD01 = async function (req,obj,cmd,myMethod,filter) {
88 93  
89 94 log.log("requestData : "+JSON.stringify(params))
90 95  
91   - var funStats = function(){
92   - stats.sendRestRequest(service.Name,myMethod,cmd);
93   - log.logDetail.addOutput(req,service.Name,myMethod+"_"+cmd,constants.Request,params,obj);
94   - };
95   -
96 96 var funStats = {
97   - start : funStats,
98   - error : function(response){log.addErrorSummary(req,service.Name,myMethod+"_"+cmd,response.resultCode,response.resultDescription);}
  97 + start : function(){
  98 + stats.sendRestRequest(service.Name,myMethod,cmd);
  99 + log.logDetail.addOutput(req,service.Name,myMethod+"_"+cmd,constants.REQUEST,params,obj);
  100 + },
  101 + end : function(resultObj){
  102 +
  103 + var returnData = {};
  104 +
  105 + if(resultObj.err)
  106 + {
  107 + //connect err => retry
  108 + var response = {};
  109 + if(resultObj.err.code == constants.RESPONSECONN.STATS.ETIMEDOUT){
  110 + response = constants.RESPONSECONN.MESSAGE.ETIMEDOUT;
  111 + } else if(resultObj.err.code == constants.RESPONSECONN.STATS.ECONNREFUSED){
  112 + response = constants.RESPONSECONN.MESSAGE.ECONNREFUSED;
  113 + } else if(resultObj.err.code == constants.RESPONSECONN.STATS.ESOCKETTIMEDOUT){
  114 + response = constants.RESPONSECONN.MESSAGE.ESOCKETTIMEDOUT;
  115 + }
  116 +
  117 + stats.receiveRestResponse(service.Name,myMethod,cmd,constants.ERROR);
  118 + log.logDetail.addInput(req,service.Name,myMethod+"_"+cmd,constants.RESPONSE,resultObj,response);
  119 + log.addErrorSummary(req,service.Name,myMethod+"_"+cmd,response.resultCode,response.resultDescription);
  120 +
  121 + returnData.retry = true;
  122 + }else
  123 + {
  124 + if(!resultObj.response)
  125 + {
  126 + //no response data => retry
  127 + var response = constants.RESPONSERESULT.ERROR;
  128 + stats.receiveBadRestResponse(service.Name,myMethod,cmd);
  129 + log.logDetail.addInput(req,service.Name,myMethod+"_"+cmd,constants.RESPONSE,resultObj,response);
  130 + log.addErrorSummary(req,service.Name,myMethod+"_"+cmd,response.resultCode,response.resultDescription);
  131 +
  132 + returnData.retry = true;
  133 + }else
  134 + {
  135 + try
  136 + {
  137 + var result = JSON.parse(resultObj.body);
  138 +
  139 + if(!result.resultCode || !result.resultDescription)
  140 + {
  141 + //Missing resultCode or resultDescription => retry
  142 + log.log("Missing resultCode or resultDescription");
  143 + var response = result;
  144 + stats.receiveBadRestResponse(service.Name,myMethod,cmd);
  145 + log.logDetail.addInput(req,service.Name,myMethod+"_"+cmd,constants.RESPONSE,resultObj,response);
  146 + log.addErrorSummary(req,service.Name,myMethod+"_"+cmd,response.resultCode,response.resultDescription);
  147 +
  148 + returnData.retry = true;
  149 + returnData.response = response;
  150 + returnData.err = constants.RESPONSERESULT.MISSING_INVALID.developerMessage;
  151 +
  152 + }else
  153 + {
  154 + //check normal
  155 + var response = result;
  156 + log.logDetail.addInput(req,service.Name,myMethod+"_"+cmd,constants.RESPONSE,resultObj,result);
  157 + if(result.resultCode.startsWith("2"))
  158 + {
  159 + if(result.resultData && result.resultData.length>0)
  160 + {
  161 + stats.receiveRestResponse(service.Name,myMethod,cmd,constants.SUCCESS);
  162 + log.addSuccessSummary(req,service.Name,myMethod+"_"+cmd,result.resultCode,constants.SUCCESS);
  163 + }else
  164 + {
  165 + stats.receiveRestResponse(service.Name,myMethod,cmd,constants.RESPONSERESULT.DATA_NOT_FOUND.developerMessage);
  166 + log.addErrorSummary(req,service.Name,myMethod+"_"+cmd,constants.RESPONSERESULT.DATA_NOT_FOUND.resultCode,constants.RESPONSERESULT.DATA_NOT_FOUND.developerMessage);
  167 + }
  168 +
  169 + returnData.retry = false;
  170 + returnData.response = response;
  171 + returnData.err = response.resultDescription;
  172 + } else if(result.resultCode.startsWith("404")){
  173 + stats.receiveRestResponse(service.Name,myMethod,cmd,constants.RESPONSERESULT.DATA_NOT_FOUND.developerMessage);
  174 + log.addErrorSummary(req,service.Name,myMethod+"_"+cmd,result.resultCode,result.developerMessage);
  175 +
  176 + returnData.retry = false;
  177 + returnData.response = response;
  178 + returnData.err = response.resultDescription;
  179 + } else if(result.resultCode.startsWith("5")){
  180 + stats.receiveRestResponse(service.Name,myMethod,cmd,constants.ERROR);
  181 + log.addErrorSummary(req,service.Name,myMethod+"_"+cmd,result.resultCode,result.developerMessage);
  182 + //retry
  183 +
  184 + returnData.retry = true;
  185 + returnData.response = response;
  186 + returnData.err = response.resultDescription;
  187 + } else {
  188 + stats.receiveRestResponse(service.Name,myMethod,cmd,constants.ERROR);
  189 + log.addErrorSummary(req,service.Name,myMethod+"_"+cmd,result.resultCode,result.developerMessage);
  190 + //retry
  191 +
  192 + returnData.retry = true;
  193 + returnData.response = response;
  194 + returnData.err = response.resultDescription;
  195 + }
  196 + }
  197 + }catch(err) {
  198 +
  199 + // returnData.response = constants.RESPONSERESULT.ERROR;
  200 + returnData.err = constants.RESPONSERESULT.ERROR;
  201 + returnData.retry = true;
  202 +
  203 + }
  204 +
  205 + }
  206 + }
  207 +
  208 + return returnData;
  209 +
  210 + }
99 211 };
100 212  
101 213  
... ... @@ -171,58 +283,64 @@ connection.requestJsonToD01 = async function (req,obj,cmd,myMethod,filter) {
171 283 params.url = genUrl[0];
172 284 delete params.body;
173 285  
174   - var resultRes = await asyncRequest(params,objectData,funStats);
  286 + result = await asyncRequest(params,objectData,funStats);
  287 + // var resultRes = await asyncRequest(params,objectData,funStats);
175 288  
176   - // console.log(resultRes);
177   - if(resultRes.response)
178   - {
179   - var data = JSON.parse(resultRes.response.body);
180   - result.response = data;
  289 + // // console.log(resultRes);
  290 + // if(resultRes.response)
  291 + // {
  292 + // var data = JSON.parse(resultRes.response.body);
  293 + // result.response = data;
181 294  
182   - } else {
183   - result = resultRes;
184   - }
  295 + // } else {
  296 + // result = resultRes;
  297 + // }
185 298 }
186 299  
187 300  
188 301 } else if(params.method == constants.METHOD.POST) {
189 302  
190 303 params.body = JSON.stringify(params.body);
191   -
192   - var resultRes = await asyncRequest(params,objectData,funStats);
193   -
194   - if(resultRes.response){
195   - result.response = JSON.parse(resultRes.body);
196   - } else {
197   - result = resultRes;
198   - }
  304 + result = await asyncRequest(params,objectData,funStats);
  305 + // var resultRes = await asyncRequest(params,objectData,funStats);
  306 +
  307 + // if(resultRes.response){
  308 + // result.response = JSON.parse(resultRes.body);
  309 + // } else {
  310 + // result = resultRes;
  311 + // }
199 312 } else if(params.method == constants.METHOD.PUT) {
200 313  
201 314 params.url = getUrlFilter(params.url,filter);
202 315  
203 316 params.body = JSON.stringify(params.body);
204 317  
205   - var resultRes = await asyncRequest(params,objectData,funStats);
  318 +
  319 + result = await asyncRequest(params,objectData,funStats);
  320 +
  321 + // var resultRes = await asyncRequest(params,objectData,funStats);
206 322  
207   - if(resultRes.response){
208   - result.response = JSON.parse(resultRes.body);
209   - } else {
210   - result = resultRes;
211   - }
  323 + // if(resultRes.response){
  324 + // result.response = JSON.parse(resultRes.body);
  325 + // } else {
  326 + // result = resultRes;
  327 + // }
212 328 }
213 329  
214   - // console.log(result);
  330 + console.log(result);
215 331  
216   - if(result.response)
217   - {
218   - if(!result.response.resultCode){
219   - result.err = "Missing resultCode";
220   - } else if(!result.response.resultDescription){
221   - result.err = "Missing resultDescription";
222   - }
223   - }
  332 + // if(result.response)
  333 + // {
  334 + // if(!result.response.resultCode){
  335 + // result.err = "Missing resultCode";
  336 + // } else if(!result.response.resultDescription){
  337 + // result.err = "Missing resultDescription";
  338 + // }
  339 + // }
224 340  
225   - return checkResponse(result,funStats);
  341 + // return checkResponse(result,funStats);
  342 +
  343 + return result;
226 344  
227 345 }
228 346 catch(err) {
... ... @@ -277,43 +395,61 @@ function asyncRequest (params = {},objectData,funStat) {
277 395  
278 396 if (error) {
279 397  
280   - if( objectData.maxRetry == objectData.curRetry-1)
281   - {
282   - resolve({
283   - 'body' : body,
284   - 'err' : error
285   - });
286   - }else
287   - {
288   - var errRes = {};
289   - log.log(error,'error');
290   - if(error.code == constants.RESPONSECONN.STATS.ETIMEDOUT){
291   - errRes.response = constants.RESPONSECONN.MESSAGE.ETIMEDOUT;
292   - } else if(error.code == constants.RESPONSECONN.STATS.ECONNREFUSED){
293   - errRes.response = constants.RESPONSECONN.MESSAGE.ECONNREFUSED;
294   - } else if(error.code == constants.RESPONSECONN.STATS.ESOCKETTIMEDOUT){
295   - errRes.response = constants.RESPONSECONN.MESSAGE.ESOCKETTIMEDOUT;
296   - } else {
297   - errRes.response = constants.RESPONSECONN.MESSAGE.ERROR;
298   - }
299   -
300   - // console.log("retry "+objectData.curRetry);
301   - funStat.error(errRes);
302   - objectData.curRetry++;
303   - resolve(asyncRequest(params,objectData,funStat));
304   - }
  398 + // if(objectData.maxRetry == objectData.curRetry-1)
  399 + // {
  400 +
  401 + // resolve({
  402 + // 'body' : body,
  403 + // 'err' : error
  404 + // });
  405 + // }else
  406 + // {
  407 + // var responseObj = {
  408 + // 'body' : body,
  409 + // 'err' : error
  410 + // };
  411 +
  412 +
  413 + // if(funStat.end(responseObj))
  414 + // {
  415 + // objectData.curRetry++;
  416 + // resolve(asyncRequest(params,objectData,funStat));
  417 + // }
  418 +
  419 + // }
305 420  
306 421  
307 422  
308   - } else {
309   -
310   - // stats.receiveResponse(node,cmd,"Success");
311   - log.log("Response : "+body);
312   - resolve({
313   - 'body' : body,
314   - 'response' : response
315   - });
  423 + } else {
  424 +
  425 +
  426 + // var responseObj = {
  427 + // 'body' : body,
  428 + // 'response' : response
  429 + // };
  430 + // resolve(funStat.end(responseObj));
316 431 }
  432 +
  433 + var responseObj = {
  434 + 'body' : body,
  435 + 'response' : response,
  436 + 'err' : error
  437 + };
  438 + var result = funStat.end(responseObj);
  439 +
  440 + if(result.retry)
  441 + {
  442 + if(objectData.maxRetry == objectData.curRetry-1)
  443 + resolve(result);
  444 + else
  445 + {
  446 + objectData.curRetry++;
  447 + resolve(asyncRequest(params,objectData,funStat));
  448 + }
  449 +
  450 + }else
  451 + resolve(result);
  452 +
317 453 });
318 454 });
319 455 };
... ... @@ -537,34 +673,30 @@ function arrayUrl(arrUrl,url,filter,fields,freeSpace,arrData)
537 673 return arrUrl;
538 674 }
539 675  
540   -function checkResponse(result,funStats)
541   -{
542   - if(result.err)
543   - {
544   - log.log("Final Response : "+result.err,'error');
545   - if(result.err.code == constants.RESPONSECONN.STATS.ETIMEDOUT){
546   - result.response = constants.RESPONSECONN.MESSAGE.ETIMEDOUT;
547   - // result.response.resultCode = "50003";
548   - // result.response.resultDescription = "Timeout";
549   - } else if(result.err.code == constants.RESPONSECONN.STATS.ECONNREFUSED){
550   - result.response = constants.RESPONSECONN.MESSAGE.ECONNREFUSED;
551   - // result.response.resultCode = "50002";
552   - // result.response.resultDescription = "Reject";
553   - } else if(result.err.code == constants.RESPONSECONN.STATS.ESOCKETTIMEDOUT){
554   - result.response = constants.RESPONSECONN.MESSAGE.ESOCKETTIMEDOUT;
555   - } else {
556   - if(result.err.resultDescription && result.err.resultDescription.indexOf(constants.RESPONSECONN.STATS.MISSING) != -1){
557   - result.response.resultCode = constants.RESPONSERESULT.MISSING_INVALID.resultCode;
558   - result.response.resultDescription = result.err;
559   - } else {
560   - result.response = constants.RESPONSECONN.MESSAGE.ERROR;
561   - }
562   - }
563   - funStats.error(result.response)
564   - }else
565   - log.log("Final Response : "+JSON.stringify(result));
566   -
567   - return result;
568   -}
  676 +// function checkResponse(result,funStats)
  677 +// {
  678 +// if(result.err)
  679 +// {
  680 +// log.log("Final Response : "+result.err,'error');
  681 +// if(result.err.code == constants.RESPONSECONN.STATS.ETIMEDOUT){
  682 +// result.response = constants.RESPONSECONN.MESSAGE.ETIMEDOUT;
  683 +// } else if(result.err.code == constants.RESPONSECONN.STATS.ECONNREFUSED){
  684 +// result.response = constants.RESPONSECONN.MESSAGE.ECONNREFUSED;
  685 +// } else if(result.err.code == constants.RESPONSECONN.STATS.ESOCKETTIMEDOUT){
  686 +// result.response = constants.RESPONSECONN.MESSAGE.ESOCKETTIMEDOUT;
  687 +// } else {
  688 +// if(result.err.resultDescription && result.err.resultDescription.indexOf(constants.RESPONSECONN.STATS.MISSING) != -1){
  689 +// result.response.resultCode = constants.RESPONSERESULT.MISSING_INVALID.resultCode;
  690 +// result.response.resultDescription = result.err;
  691 +// } else {
  692 +// result.response = constants.RESPONSECONN.MESSAGE.ERROR;
  693 +// }
  694 +// }
  695 +// funStats.error(result.response)
  696 +// }else
  697 +// log.log("Final Response : "+JSON.stringify(result));
  698 +
  699 +// return result;
  700 +// }
569 701  
570 702 module.exports = connection;
571 703 \ No newline at end of file
... ...