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, | ... | ... |