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
| 1 | /* ------------- [START SERVER CONFIG VARIABLES] ------------ */ | 1 | /* ------------- [START SERVER CONFIG VARIABLES] ------------ */ |
| 2 | var config = { | 2 | var config = { |
| 3 | development: { | 3 | development: { |
| 4 | + app_name: "CMF", | ||
| 4 | app_host: "0.0.0.0", | 5 | app_host: "0.0.0.0", |
| 5 | app_port: "3000", | 6 | app_port: "3000", |
| 6 | app_https: false, | 7 | app_https: false, |
ais-structure/src/config/express.js
| @@ -140,7 +140,7 @@ module.exports = function () { | @@ -140,7 +140,7 @@ module.exports = function () { | ||
| 140 | app.all('/api/*', getCurrentUser, function (req, res, next) { | 140 | app.all('/api/*', getCurrentUser, function (req, res, next) { |
| 141 | res.header("Access-Control-Allow-Origin", "*"); | 141 | res.header("Access-Control-Allow-Origin", "*"); |
| 142 | res.header("Access-Control-Allow-Headers", "X-Requested-With"); | 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 | next(); | 144 | next(); |
| 145 | }); | 145 | }); |
| 146 | 146 | ||
| @@ -158,6 +158,9 @@ module.exports = function () { | @@ -158,6 +158,9 @@ module.exports = function () { | ||
| 158 | var headerLog = 'IP|'+remoteIp+'|USER|'+username+'|REQUESTID|'+req.id; | 158 | var headerLog = 'IP|'+remoteIp+'|USER|'+username+'|REQUESTID|'+req.id; |
| 159 | 159 | ||
| 160 | logger.setHeader(headerLog); | 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 | next(); | 164 | next(); |
| 162 | }); | 165 | }); |
| 163 | 166 |
| @@ -0,0 +1,84 @@ | @@ -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 | \ No newline at end of file | 85 | \ No newline at end of file |
| @@ -0,0 +1,33 @@ | @@ -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 | \ No newline at end of file | 34 | \ No newline at end of file |
| @@ -0,0 +1,31 @@ | @@ -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,8 +4,16 @@ var _ = require('lodash'); | ||
| 4 | var env = process.env.NODE_ENV || 'development'; | 4 | var env = process.env.NODE_ENV || 'development'; |
| 5 | var rp = require('request-promise'); | 5 | var rp = require('request-promise'); |
| 6 | var logger = require('../../logger/logger'); | 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 | exports.postVizcard = function (req, res, next){ | 12 | exports.postVizcard = function (req, res, next){ |
| 13 | + stats.reciveRequest("Post Vizcard"); | ||
| 10 | res.send("post viz card"); | 14 | res.send("post viz card"); |
| 15 | + | ||
| 16 | + | ||
| 17 | + | ||
| 18 | + // console.log(messageSOAP.objectToSOAP(req,"SearchCustomer")); | ||
| 11 | }; | 19 | }; |
| 12 | \ No newline at end of file | 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,74 +7,114 @@ var logger = require('../../logger/logger'); | ||
| 7 | var cfg = require('../../config/config.js').get(env); | 7 | var cfg = require('../../config/config.js').get(env); |
| 8 | var request = require('request'); | 8 | var request = require('request'); |
| 9 | var parseJson = require('xml-js'); | 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 | exports.vizcard = async function (req, res, next) { | 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 | } else { | 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 | function asyncRequest (params = {}) { | 109 | function asyncRequest (params = {}) { |
| 74 | return new Promise((resolve, reject) => { | 110 | return new Promise((resolve, reject) => { |
| 75 | request(params, function (error, response, body) { | 111 | request(params, function (error, response, body) { |
| 76 | if (error) { | 112 | if (error) { |
| 77 | - reject(error); | 113 | + // reject(error); |
| 114 | + resolve({ | ||
| 115 | + 'body' : body, | ||
| 116 | + 'err': error | ||
| 117 | + }); | ||
| 78 | } else { | 118 | } else { |
| 79 | resolve({ | 119 | resolve({ |
| 80 | 'body' : body, | 120 | 'body' : body, |