Commit 6efce50d56212f30f1747f9db2753e00f1e8f0e1
1 parent
ba477a68
Exists in
master
and in
1 other branch
update validate and messageSoap
Showing
7 changed files
with
251 additions
and
51 deletions
Show diff stats
ais-structure/src/config/config.js
ais-structure/src/config/express.js
| ... | ... | @@ -140,7 +140,7 @@ module.exports = function () { |
| 140 | 140 | app.all('/api/*', getCurrentUser, function (req, res, next) { |
| 141 | 141 | res.header("Access-Control-Allow-Origin", "*"); |
| 142 | 142 | res.header("Access-Control-Allow-Headers", "X-Requested-With"); |
| 143 | - // var headerLog = req.currentUser ? + '' + req.currentUser.username + ':'+req.id: req.id; | |
| 143 | + // var headerLog = req.currentUser ? + '' + req.currentUser.username + ':'+req.id: req.id; | |
| 144 | 144 | next(); |
| 145 | 145 | }); |
| 146 | 146 | |
| ... | ... | @@ -158,6 +158,9 @@ module.exports = function () { |
| 158 | 158 | var headerLog = 'IP|'+remoteIp+'|USER|'+username+'|REQUESTID|'+req.id; |
| 159 | 159 | |
| 160 | 160 | logger.setHeader(headerLog); |
| 161 | + // console.log("req " +req.headers['x-token']); | |
| 162 | + // console.log("fullUrl " +req.originalUrl); | |
| 163 | + // console.log("method " +req.method); | |
| 161 | 164 | next(); |
| 162 | 165 | }); |
| 163 | 166 | ... | ... |
| ... | ... | @@ -0,0 +1,84 @@ |
| 1 | +var soap = []; | |
| 2 | + | |
| 3 | +soap.objectToSOAP = function (objectData,tag){ | |
| 4 | + var header = '<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:tem="http://tempuri.org/"><soap:Header/><soap:Body>'; | |
| 5 | + var footer = "</soap:Body></soap:Envelope>"; | |
| 6 | + var body = "<tem:"+tag+">"+getBodySOAP(objectData)+"</tem:"+tag+">"; | |
| 7 | + | |
| 8 | + return header+body+footer; | |
| 9 | + | |
| 10 | +}; | |
| 11 | + | |
| 12 | +soap.soapToArray = function(req,resultSoap) | |
| 13 | +{ | |
| 14 | + var returnData = []; | |
| 15 | + | |
| 16 | + if(req.query.fields){ | |
| 17 | + var listFields = req.query.fields.split(","); | |
| 18 | + console.log(listFields) | |
| 19 | + } | |
| 20 | + | |
| 21 | + var resultSet = []; | |
| 22 | + if(Array.isArray(resultSoap)) | |
| 23 | + { | |
| 24 | + for(var i=0;i<resultSoap.length;i++) | |
| 25 | + { | |
| 26 | + var row = resultSoap[i]; | |
| 27 | + delete row._comment; | |
| 28 | + resultSet.push(row); | |
| 29 | + | |
| 30 | + } | |
| 31 | + }else | |
| 32 | + { | |
| 33 | + delete resultSoap._comment; | |
| 34 | + resultSet.push(resultSoap); | |
| 35 | + } | |
| 36 | + | |
| 37 | + | |
| 38 | + // console.log(resultSet); | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + for(var i=0;i<resultSet.length;i++) | |
| 43 | + { | |
| 44 | + var data = {} | |
| 45 | + for(var key in resultSet[i]){ | |
| 46 | + var keyObj = capitalizeFirstLetter(key.replace('tem:','')) | |
| 47 | + // console.log(keyObj+' : '+resultSet[i][key]['_text']); | |
| 48 | + if(listFields){ | |
| 49 | + if(listFields.includes(keyObj)){ | |
| 50 | + data[keyObj] = resultSet[i][key]['_text']; | |
| 51 | + } | |
| 52 | + } else { | |
| 53 | + data[keyObj] = resultSet[i][key]['_text']; | |
| 54 | + } | |
| 55 | + } | |
| 56 | + returnData.push(data); | |
| 57 | + } | |
| 58 | + | |
| 59 | + return returnData; | |
| 60 | + | |
| 61 | +}; | |
| 62 | + | |
| 63 | +function getBodySOAP(objectData) | |
| 64 | +{ | |
| 65 | + var body = ""; | |
| 66 | + if(typeof objectData != 'undefined') | |
| 67 | + { | |
| 68 | + var keyList = Object.keys(objectData); | |
| 69 | + for(var i=0;i<keyList.length;i++) | |
| 70 | + { | |
| 71 | + if(typeof objectData[keyList[i]] != 'object') | |
| 72 | + body += "<tem:"+keyList[i]+">"+objectData[keyList[i]]+"</tem:"+keyList[i]+">"; | |
| 73 | + else | |
| 74 | + body += "<tem:"+keyList[i]+">"+getBodySOAP(objectData[keyList[i]])+"</tem:"+keyList[i]+">"; | |
| 75 | + } | |
| 76 | + } | |
| 77 | + return body; | |
| 78 | +} | |
| 79 | + | |
| 80 | +function capitalizeFirstLetter(string) { | |
| 81 | + return string.charAt(0).toLowerCase() + string.slice(1); | |
| 82 | +} | |
| 83 | + | |
| 84 | +module.exports = soap; | |
| 0 | 85 | \ No newline at end of file | ... | ... |
| ... | ... | @@ -0,0 +1,33 @@ |
| 1 | +var env = process.env.NODE_ENV || 'development'; | |
| 2 | +var cfg = require('../../config/config.js').get(env); | |
| 3 | + | |
| 4 | +var nodeName = cfg.app_name; | |
| 5 | +var stat = []; | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | +stat.reciveRequest = function (api,pass){ | |
| 10 | + if(pass) | |
| 11 | + writeStats(nodeName+" Recive "+api+" Request"); | |
| 12 | + else | |
| 13 | + writeStats(nodeName+" Recive Bad "+api+" Request"); | |
| 14 | +}; | |
| 15 | + | |
| 16 | +stat.reciveResponse = function (fromNode,api,result){ | |
| 17 | + writeStats(nodeName+" Recive "+fromNode+" "+api+" Response "+result); | |
| 18 | +}; | |
| 19 | + | |
| 20 | +stat.sendRequest = function (toNode,api){ | |
| 21 | + writeStats(nodeName+" Send "+toNode+" "+api+" Request"); | |
| 22 | +}; | |
| 23 | + | |
| 24 | +stat.sendResponse = function (api,result){ | |
| 25 | + writeStats(nodeName+" Send "+api+" Response "+result); | |
| 26 | +}; | |
| 27 | + | |
| 28 | +function writeStats(string) { | |
| 29 | + console.log(string); | |
| 30 | + // console.log(cfg); | |
| 31 | +} | |
| 32 | + | |
| 33 | +module.exports = stat; | |
| 0 | 34 | \ No newline at end of file | ... | ... |
| ... | ... | @@ -0,0 +1,31 @@ |
| 1 | +var stats = require('../helper/stats.js'); | |
| 2 | + | |
| 3 | +module.exports = function (req,mandatoryList,api){ | |
| 4 | + | |
| 5 | + var err = []; | |
| 6 | + | |
| 7 | + for(var i=0;i<mandatoryList.length;i++) | |
| 8 | + { | |
| 9 | + if(typeof req.query[mandatoryList[i]] === 'undefined') | |
| 10 | + { | |
| 11 | + var errDes = { | |
| 12 | + Param : mandatoryList[i], | |
| 13 | + Reason : "Missing" | |
| 14 | + } | |
| 15 | + err.push(errDes); | |
| 16 | + }else | |
| 17 | + { | |
| 18 | + // invaild | |
| 19 | + } | |
| 20 | + } | |
| 21 | + | |
| 22 | + if(err.length > 0) | |
| 23 | + stats.reciveRequest(api,false); | |
| 24 | + else | |
| 25 | + stats.reciveRequest(api,true); | |
| 26 | + | |
| 27 | + // console.log(err); | |
| 28 | + | |
| 29 | + return err; | |
| 30 | +}; | |
| 31 | + | ... | ... |
ais-structure/src/modules/vizcard/postVizCard.ctrl.js
| ... | ... | @@ -4,8 +4,16 @@ var _ = require('lodash'); |
| 4 | 4 | var env = process.env.NODE_ENV || 'development'; |
| 5 | 5 | var rp = require('request-promise'); |
| 6 | 6 | var logger = require('../../logger/logger'); |
| 7 | -var cfg = require('../../config/config.js').get(env); | |
| 7 | +var cfg = require('../../config/config.js').get(env); | |
| 8 | + | |
| 9 | +var stats = require('../helper/stats.js'); | |
| 10 | +var messageSOAP = require('../helper/messageSOAP.js'); | |
| 8 | 11 | |
| 9 | 12 | exports.postVizcard = function (req, res, next){ |
| 13 | + stats.reciveRequest("Post Vizcard"); | |
| 10 | 14 | res.send("post viz card"); |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + // console.log(messageSOAP.objectToSOAP(req,"SearchCustomer")); | |
| 11 | 19 | }; |
| 12 | 20 | \ No newline at end of file | ... | ... |
ais-structure/src/modules/vizcard/vizCard.ctrl.js
| ... | ... | @@ -7,74 +7,114 @@ var logger = require('../../logger/logger'); |
| 7 | 7 | var cfg = require('../../config/config.js').get(env); |
| 8 | 8 | var request = require('request'); |
| 9 | 9 | var parseJson = require('xml-js'); |
| 10 | -var _url = `http://localhost:8080` | |
| 10 | +var _url = `http://localhost:8080`; | |
| 11 | + | |
| 12 | +var stats = require('../helper/stats.js'); | |
| 13 | +var messageSOAP = require('../helper/messageSOAP.js'); | |
| 14 | +var validatorHelper = require('../helper/validator.js'); | |
| 11 | 15 | |
| 12 | 16 | exports.vizcard = async function (req, res, next) { |
| 13 | - var requestXml = `<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:tem="http://tempuri.org/"> | |
| 14 | - <soap:Header/> | |
| 15 | - <soap:Body> | |
| 16 | - <tem:SearchCustomer> | |
| 17 | - <tem:username>axviz</tem:username> | |
| 18 | - <tem:password>1234</tem:password> | |
| 19 | - <tem:systemName>30</tem:systemName> | |
| 20 | - <tem:queryType>1</tem:queryType> | |
| 21 | - <tem:cardId>${req.params.id}</tem:cardId> | |
| 22 | - </tem:SearchCustomer> | |
| 23 | - </soap:Body> | |
| 24 | - </soap:Envelope>` | |
| 25 | - | |
| 26 | - // console.log(requestXml); | |
| 27 | - // console.log(req.query.fields) | |
| 28 | - | |
| 29 | - const result = await asyncRequest({ | |
| 30 | - url : _url, | |
| 31 | - body : requestXml, | |
| 32 | - method : 'POST' | |
| 33 | - }); | |
| 34 | 17 | |
| 35 | - // parseString(result.body, function (err, result1) { | |
| 36 | - // console.log(result1); | |
| 37 | - // }); | |
| 18 | + var err = validator(req,"GET VIZCard"); | |
| 19 | + | |
| 20 | + if(err.length > 0) | |
| 21 | + { | |
| 22 | + var response = { | |
| 23 | + resultCode : "40300", | |
| 24 | + developerMessage : "Missing or invalid parameter" | |
| 25 | + }; | |
| 38 | 26 | |
| 39 | - var result1 = parseJson.xml2json(result.body, {compact: true, spaces: 4}) | |
| 40 | - result1 = JSON.parse(result1) | |
| 41 | - result1 = result1['soap:Envelope']['soap:Body']['tem:SearchCustomerResponse']['tem:SearchCustomerResult']['tem:CustomerSearchResult']; | |
| 42 | - delete result1._comment; | |
| 27 | + res.status(200).json(response); | |
| 28 | + }else | |
| 29 | + { | |
| 30 | + // var requestXml = `<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:tem="http://tempuri.org/"> | |
| 31 | + // <soap:Header/> | |
| 32 | + // <soap:Body> | |
| 33 | + // <tem:SearchCustomer> | |
| 34 | + // <tem:username>axviz</tem:username> | |
| 35 | + // <tem:password>1234</tem:password> | |
| 36 | + // <tem:systemName>30</tem:systemName> | |
| 37 | + // <tem:queryType>1</tem:queryType> | |
| 38 | + // <tem:cardId>${req.params.id}</tem:cardId> | |
| 39 | + // </tem:SearchCustomer> | |
| 40 | + // </soap:Body> | |
| 41 | + // </soap:Envelope>` | |
| 43 | 42 | |
| 44 | - var response = {}; | |
| 43 | + var objectData = { | |
| 44 | + Username : "axviz", | |
| 45 | + Password : "1234", | |
| 46 | + SystemName : "30", | |
| 47 | + QueryType : "1", | |
| 48 | + CardId : req.params.id | |
| 49 | + }; | |
| 45 | 50 | |
| 46 | - response['resultCode'] = '20000'; | |
| 47 | - response['developerMessage'] = 'Success'; | |
| 51 | + var soap = messageSOAP.objectToSOAP(objectData,"SearchCustomer") | |
| 52 | + // console.log(soap); | |
| 48 | 53 | |
| 49 | - if(req.query.fields){ | |
| 50 | - var listFields = req.query.fields.split(","); | |
| 51 | - // console.log(listFields) | |
| 52 | - } | |
| 54 | + // console.log(requestXml); | |
| 55 | + // console.log(req.query.fields) | |
| 53 | 56 | |
| 54 | - for(var key in result1){ | |
| 55 | - var keyObj = capitalizeFirstLetter(key.replace('tem:','')) | |
| 56 | - // console.log(keyObj+' : '+result1[key]['_text']); | |
| 57 | - if(listFields){ | |
| 58 | - if(listFields.includes(keyObj)){ | |
| 59 | - response[keyObj] = result1[key]['_text']; | |
| 60 | - } | |
| 57 | + const result = await asyncRequest({ | |
| 58 | + url : _url, | |
| 59 | + body : soap, | |
| 60 | + method : 'POST' | |
| 61 | + }); | |
| 62 | + | |
| 63 | + console.log(result.err) | |
| 64 | + | |
| 65 | + // parseString(result.body, function (err, result1) { | |
| 66 | + // console.log(result1); | |
| 67 | + // }); | |
| 68 | + if(typeof result.err === 'undefined'){ | |
| 69 | + var resultSoap = parseJson.xml2json(result.body, {compact: true, spaces: 4}) | |
| 70 | + resultSoap = JSON.parse(resultSoap) | |
| 71 | + resultSoap = resultSoap['soap:Envelope']['soap:Body']['tem:SearchCustomerResponse']['tem:SearchCustomerResult']['tem:CustomerSearchResult']; | |
| 72 | + | |
| 73 | + var resultData = messageSOAP.soapToArray(req,resultSoap); | |
| 74 | + | |
| 75 | + var response = { | |
| 76 | + resultCode : "20000", | |
| 77 | + developerMessage : "Success", | |
| 78 | + resultData : resultData, | |
| 79 | + rowCount : resultData.length | |
| 80 | + }; | |
| 61 | 81 | } else { |
| 62 | - response[keyObj] = result1[key]['_text']; | |
| 82 | + var response = { | |
| 83 | + resultCode : "50000", | |
| 84 | + developerMessage : "System error" | |
| 85 | + }; | |
| 63 | 86 | } |
| 87 | + | |
| 88 | + res.status(200).json(response); | |
| 64 | 89 | } |
| 65 | - | |
| 66 | - res.status(200).json(response); | |
| 67 | 90 | }; |
| 68 | 91 | |
| 69 | -function capitalizeFirstLetter(string) { | |
| 70 | - return string.charAt(0).toLowerCase() + string.slice(1); | |
| 92 | + | |
| 93 | +function validator(req,api) | |
| 94 | +{ | |
| 95 | + var list = []; | |
| 96 | + list.push("commandId"); | |
| 97 | + list.push("firstName"); | |
| 98 | + list.push("lastName"); | |
| 99 | + list.push("emailAddress"); | |
| 100 | + list.push("moblieNo"); | |
| 101 | + | |
| 102 | + return validatorHelper(req,list,api); | |
| 71 | 103 | } |
| 72 | 104 | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 73 | 109 | function asyncRequest (params = {}) { |
| 74 | 110 | return new Promise((resolve, reject) => { |
| 75 | 111 | request(params, function (error, response, body) { |
| 76 | 112 | if (error) { |
| 77 | - reject(error); | |
| 113 | + // reject(error); | |
| 114 | + resolve({ | |
| 115 | + 'body' : body, | |
| 116 | + 'err': error | |
| 117 | + }); | |
| 78 | 118 | } else { |
| 79 | 119 | resolve({ |
| 80 | 120 | 'body' : body, | ... | ... |