vizCard.ctrl.js
2.62 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
var fs = require('fs');
var moment = require('moment');
var _ = require('lodash');
var env = process.env.NODE_ENV || 'development';
var rp = require('request-promise');
var logger = require('../../logger/logger');
var cfg = require('../../config/config.js').get(env);
var request = require('request');
var parseJson = require('xml-js');
var _url = `http://localhost:8080`
exports.vizcard = async function (req, res, next) {
var requestXml = `<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:tem="http://tempuri.org/">
<soap:Header/>
<soap:Body>
<tem:SearchCustomer>
<tem:username>axviz</tem:username>
<tem:password>1234</tem:password>
<tem:systemName>30</tem:systemName>
<tem:queryType>1</tem:queryType>
<tem:cardId>${req.params.id}</tem:cardId>
</tem:SearchCustomer>
</soap:Body>
</soap:Envelope>`
// console.log(requestXml);
// console.log(req.query.fields)
const result = await asyncRequest({
url : _url,
body : requestXml,
method : 'POST'
});
// parseString(result.body, function (err, result1) {
// console.log(result1);
// });
var result1 = parseJson.xml2json(result.body, {compact: true, spaces: 4})
result1 = JSON.parse(result1)
result1 = result1['soap:Envelope']['soap:Body']['tem:SearchCustomerResponse']['tem:SearchCustomerResult']['tem:CustomerSearchResult'];
delete result1._comment;
var response = {};
response['resultCode'] = '20000';
response['developerMessage'] = 'Success';
if(req.query.fields){
var listFields = req.query.fields.split(",");
// console.log(listFields)
}
for(var key in result1){
var keyObj = capitalizeFirstLetter(key.replace('tem:',''))
// console.log(keyObj+' : '+result1[key]['_text']);
if(listFields){
if(listFields.includes(keyObj)){
response[keyObj] = result1[key]['_text'];
}
} else {
response[keyObj] = result1[key]['_text'];
}
}
res.status(200).json(response);
};
function capitalizeFirstLetter(string) {
return string.charAt(0).toLowerCase() + string.slice(1);
}
function asyncRequest (params = {}) {
return new Promise((resolve, reject) => {
request(params, function (error, response, body) {
if (error) {
reject(error);
} else {
resolve({
'body' : body,
'response': response
});
}
});
});
}