Commit f40deb5d245335c4e4f98bb05b4c181d26780075

Authored by Nattapon Wongpaet
1 parent 29faa44b
Exists in master and in 1 other branch dev

update api vizCard

package-lock.json
... ... @@ -153,6 +153,11 @@
153 153 "resolved": "https://registry.npmjs.org/character-parser/-/character-parser-1.2.1.tgz",
154 154 "integrity": "sha1-wN3kqxgnE7kZuXCVmhI+zBow/NY="
155 155 },
  156 + "circular-json": {
  157 + "version": "0.5.5",
  158 + "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.5.5.tgz",
  159 + "integrity": "sha512-13YaR6kiz0kBNmIVM87Io8Hp7bWOo4r61vkEANy8iH9R9bc6avud/1FT0SBpqR1RpIQADOh/Q+yHZDA1iL6ysA=="
  160 + },
156 161 "clean-css": {
157 162 "version": "3.4.28",
158 163 "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-3.4.28.tgz",
... ... @@ -276,6 +281,16 @@
276 281 "assert-plus": "1.0.0"
277 282 }
278 283 },
  284 + "date-format": {
  285 + "version": "1.2.0",
  286 + "resolved": "https://registry.npmjs.org/date-format/-/date-format-1.2.0.tgz",
  287 + "integrity": "sha1-YV6CjiM90aubua4JUODOzPpuytg="
  288 + },
  289 + "dateformat": {
  290 + "version": "3.0.3",
  291 + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz",
  292 + "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q=="
  293 + },
279 294 "debug": {
280 295 "version": "2.6.9",
281 296 "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
... ... @@ -543,6 +558,11 @@
543 558 "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
544 559 "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo="
545 560 },
  561 + "isarray": {
  562 + "version": "1.0.0",
  563 + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
  564 + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
  565 + },
546 566 "isstream": {
547 567 "version": "0.1.2",
548 568 "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
... ... @@ -619,6 +639,27 @@
619 639 "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz",
620 640 "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4="
621 641 },
  642 + "log4js": {
  643 + "version": "3.0.4",
  644 + "resolved": "https://registry.npmjs.org/log4js/-/log4js-3.0.4.tgz",
  645 + "integrity": "sha512-4rQ1TrOf85lxB0+hBiPF27Zw8pGTHxKZq8FYfum1TNhx/KMUlQ+LL4bMKcdzc7zoAFF992w8+MFQm3BQbUgePA==",
  646 + "requires": {
  647 + "circular-json": "0.5.5",
  648 + "date-format": "1.2.0",
  649 + "debug": "3.1.0",
  650 + "streamroller": "0.7.0"
  651 + },
  652 + "dependencies": {
  653 + "debug": {
  654 + "version": "3.1.0",
  655 + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
  656 + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
  657 + "requires": {
  658 + "ms": "2.0.0"
  659 + }
  660 + }
  661 + }
  662 + },
622 663 "longest": {
623 664 "version": "1.0.1",
624 665 "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz",
... ... @@ -733,6 +774,11 @@
733 774 "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
734 775 "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns="
735 776 },
  777 + "process-nextick-args": {
  778 + "version": "2.0.0",
  779 + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz",
  780 + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw=="
  781 + },
736 782 "promise": {
737 783 "version": "6.1.0",
738 784 "resolved": "https://registry.npmjs.org/promise/-/promise-6.1.0.tgz",
... ... @@ -776,6 +822,20 @@
776 822 "unpipe": "1.0.0"
777 823 }
778 824 },
  825 + "readable-stream": {
  826 + "version": "2.3.6",
  827 + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
  828 + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
  829 + "requires": {
  830 + "core-util-is": "1.0.2",
  831 + "inherits": "2.0.3",
  832 + "isarray": "1.0.0",
  833 + "process-nextick-args": "2.0.0",
  834 + "safe-buffer": "5.1.1",
  835 + "string_decoder": "1.1.1",
  836 + "util-deprecate": "1.0.2"
  837 + }
  838 + },
779 839 "repeat-string": {
780 840 "version": "1.6.1",
781 841 "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
... ... @@ -915,6 +975,35 @@
915 975 "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz",
916 976 "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew=="
917 977 },
  978 + "streamroller": {
  979 + "version": "0.7.0",
  980 + "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-0.7.0.tgz",
  981 + "integrity": "sha512-WREzfy0r0zUqp3lGO096wRuUp7ho1X6uo/7DJfTlEi0Iv/4gT7YHqXDjKC2ioVGBZtE8QzsQD9nx1nIuoZ57jQ==",
  982 + "requires": {
  983 + "date-format": "1.2.0",
  984 + "debug": "3.1.0",
  985 + "mkdirp": "0.5.1",
  986 + "readable-stream": "2.3.6"
  987 + },
  988 + "dependencies": {
  989 + "debug": {
  990 + "version": "3.1.0",
  991 + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
  992 + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
  993 + "requires": {
  994 + "ms": "2.0.0"
  995 + }
  996 + }
  997 + }
  998 + },
  999 + "string_decoder": {
  1000 + "version": "1.1.1",
  1001 + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
  1002 + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
  1003 + "requires": {
  1004 + "safe-buffer": "5.1.1"
  1005 + }
  1006 + },
918 1007 "tough-cookie": {
919 1008 "version": "2.3.4",
920 1009 "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz",
... ... @@ -1021,6 +1110,11 @@
1021 1110 "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
1022 1111 "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw="
1023 1112 },
  1113 + "util-deprecate": {
  1114 + "version": "1.0.2",
  1115 + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
  1116 + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
  1117 + },
1024 1118 "utils-merge": {
1025 1119 "version": "1.0.0",
1026 1120 "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz",
... ... @@ -1086,6 +1180,28 @@
1086 1180 "xmldoc": "1.1.2"
1087 1181 }
1088 1182 },
  1183 + "xml-js": {
  1184 + "version": "1.6.7",
  1185 + "resolved": "https://registry.npmjs.org/xml-js/-/xml-js-1.6.7.tgz",
  1186 + "integrity": "sha512-1hn0xwwfMcWywnJxqiOXiv+pZaOJyf/YWcUeqJICF0BFb+IOkRFSkKyeA0V62WqTHXNdBxNuCFHhS/w2DtYpoA==",
  1187 + "requires": {
  1188 + "sax": "1.2.4"
  1189 + }
  1190 + },
  1191 + "xml2js": {
  1192 + "version": "0.4.19",
  1193 + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.19.tgz",
  1194 + "integrity": "sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q==",
  1195 + "requires": {
  1196 + "sax": "1.2.4",
  1197 + "xmlbuilder": "9.0.7"
  1198 + }
  1199 + },
  1200 + "xmlbuilder": {
  1201 + "version": "9.0.7",
  1202 + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz",
  1203 + "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0="
  1204 + },
1089 1205 "xmldoc": {
1090 1206 "version": "1.1.2",
1091 1207 "resolved": "https://registry.npmjs.org/xmldoc/-/xmldoc-1.1.2.tgz",
... ...
package.json
... ... @@ -8,11 +8,16 @@
8 8 "dependencies": {
9 9 "body-parser": "~1.18.2",
10 10 "cookie-parser": "~1.4.3",
  11 + "dateformat": "^3.0.3",
11 12 "debug": "~2.6.9",
12 13 "easysoap": "^2.0.1",
13 14 "express": "^4.15.5",
14 15 "jade": "~1.11.0",
  16 + "log4js": "^3.0.4",
15 17 "morgan": "~1.9.0",
16   - "serve-favicon": "~2.4.5"
  18 + "request": "^2.87.0",
  19 + "serve-favicon": "~2.4.5",
  20 + "xml-js": "^1.6.7",
  21 + "xml2js": "^0.4.19"
17 22 }
18 23 }
... ...
routes/CMF/vizCard.js
1 1 'use strict';
2 2 var express = require('express');
3 3 var router = express.Router();
4   -const EasySoap = require('easysoap');
  4 +const request = require('request');
  5 +var parseJson = require('xml-js');
  6 +var custom_log = require('../../config/logger');
  7 +var config = require('../../config/config');
  8 +var stat = require('../../utils/SutisStat');
  9 +var alarm = require('../../utils/SutisAlarm');
  10 +var detail = require('../../utils/SutisDetail');
  11 +var logger = require('../../utils/SutisLogSummary');
5 12  
6   -/* GET users listing. */
7   -router.get('/', function(req, res, next) {
8   - res.send('viz card id');
  13 +var _url = `http://localhost:8080`
  14 +
  15 +router.get('/',async function(req, res, next) {
  16 +
  17 + var cmd = 'vizCard'
  18 +
  19 + var requestXml = `<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:tem="http://tempuri.org/">
  20 + <soap:Header/>
  21 + <soap:Body>
  22 + <tem:SearchCustomer>
  23 + <tem:username>axviz</tem:username>
  24 + <tem:password>1234</tem:password>
  25 + <tem:systemName>30</tem:systemName>
  26 + <tem:queryType>0</tem:queryType>
  27 + <tem:cardId>${req.query.id}</tem:cardId>
  28 + </tem:SearchCustomer>
  29 + </soap:Body>
  30 + </soap:Envelope>`
  31 +
  32 + console.log(requestXml);
  33 + // console.log(req.query.fields)
  34 +
  35 + const result = await asyncRequest({
  36 + url : _url,
  37 + body : requestXml,
  38 + method : 'POST'
  39 + });
  40 +
  41 + // parseString(result.body, function (err, result1) {
  42 + // console.log(result1);
  43 + // });
  44 +
  45 + var result1 = parseJson.xml2json(result.body, {compact: true, spaces: 4})
  46 + result1 = JSON.parse(result1)
  47 + result1 = result1['soap:Envelope']['soap:Body']['tem:SearchCustomerResponse']['tem:SearchCustomerResult']['tem:CustomerSearchResult'];
  48 + delete result1._comment;
  49 +
  50 + var response = {};
  51 +
  52 + if(req.query.fields){
  53 + var listFields = req.query.fields.split(",");
  54 + // console.log(listFields)
  55 + }
  56 +
  57 + for(var key in result1){
  58 + var keyObj = capitalizeFirstLetter(key.replace('tem:',''))
  59 + // console.log(keyObj+' : '+result1[key]['_text']);
  60 + if(listFields){
  61 + if(listFields.includes(keyObj)){
  62 + response[keyObj] = result1[key]['_text'];
  63 + }
  64 + } else {
  65 + response[keyObj] = result1[key]['_text'];
  66 + }
  67 + }
  68 +
  69 + stat.recv(cmd, '20000');
  70 + stat.retn(cmd, '20000');
  71 +
  72 + res.status(200).json({
  73 + resultCode: '20000',
  74 + resultDescription: 'Success',
  75 + resultData: response
  76 + });
9 77 });
10 78  
  79 +function capitalizeFirstLetter(string) {
  80 + return string.charAt(0).toLowerCase() + string.slice(1);
  81 +}
  82 +
  83 +function asyncRequest (params = {}) {
  84 + return new Promise((resolve, reject) => {
  85 + request(params, function (error, response, body) {
  86 + if (error) {
  87 +
  88 +
  89 + (error);
  90 + } else {
  91 + resolve({
  92 + 'body' : body,
  93 + 'response': response
  94 + });
  95 + }
  96 + });
  97 + });
  98 +}
  99 +
11 100 module.exports = router;
... ...