Commit aba3e1985d92153bb647ab36392f4c4b98b45589
1 parent
ea230db8
Exists in
develop
update mockup
Showing
17 changed files
with
2157 additions
and
19 deletions
Show diff stats
@@ -0,0 +1,89 @@ | @@ -0,0 +1,89 @@ | ||
1 | + | ||
2 | +module.exports.accountPayables = async (req, res) => { | ||
3 | + console.log('===== GET accountPayables =====') | ||
4 | + console.log('url', req.originalUrl); | ||
5 | + console.log('headers', req.headers); | ||
6 | + console.log('query', req.query); | ||
7 | + console.log('params', req.params); | ||
8 | + console.log('body', req.body); | ||
9 | + | ||
10 | + let response = { | ||
11 | + "link": { | ||
12 | + "prev": "ip:port/sgl/api/v1/accounting-management/accounting?transactionId=$transactionId&page=$page&limit=$limit&sortby=$sortby", | ||
13 | + "next": "ip:port/sgl/api/v1/accounting-management/accounting?transactionId=$transactionId&page=$page&limit=$limit&sortby=$sortby" | ||
14 | + }, | ||
15 | + "meta": { | ||
16 | + "currentPage": 1, | ||
17 | + "totalPages": 1, | ||
18 | + "limit": 10 | ||
19 | + }, | ||
20 | + "total": 4, | ||
21 | + "results": [ | ||
22 | + { | ||
23 | + "_id": "ia09igfyJD3", | ||
24 | + "vendorCode": "6100103130", | ||
25 | + "accountName": "บริษัท เคเอสไอ โซลูชั่น จำกัด", | ||
26 | + "partnerBank": "0001", | ||
27 | + "tradingPartner": "", | ||
28 | + "branch": "00000", | ||
29 | + "taxId": "0105556143098", | ||
30 | + "memberId": "75EzpNZ0Twt", | ||
31 | + "createdBy": "System", | ||
32 | + "createdDate": "2022-06-20T08:52:08.655Z", | ||
33 | + "updatedBy": "System", | ||
34 | + "updatedDate": "2022-06-20T08:52:08.655Z" | ||
35 | + } | ||
36 | + // , | ||
37 | + // { | ||
38 | + // "_id": "LkStgv7Pqjv", | ||
39 | + // "vendorCode": "7100000010", | ||
40 | + // "accountName": "บจ.แอดวานซ์ ไวร์เลส เน็ทเวอร์ค", | ||
41 | + // "partnerBank": null, | ||
42 | + // "tradingPartner": "1200", | ||
43 | + // "branch": "00000", | ||
44 | + // "memberId": "7tZlEVVBDiq", | ||
45 | + // "createdBy": "System", | ||
46 | + // "createdDate": "2021-06-22T09:51:37.907Z", | ||
47 | + // "updatedBy": "System", | ||
48 | + // "updatedDate": "2021-06-22T09:51:37.907Z", | ||
49 | + // "taxId": "0105548115897" | ||
50 | + // }, | ||
51 | + // { | ||
52 | + // "_id": "u2fc0do5gaB", | ||
53 | + // "vendorCode": "6300000003", | ||
54 | + // "accountName": "บจ.เกมมี่", | ||
55 | + // "partnerBank": "0601", | ||
56 | + // "tradingPartner": "", | ||
57 | + // "branch": "00001", | ||
58 | + // "memberId": "suVHEKylHuq", | ||
59 | + // "createdBy": "System", | ||
60 | + // "createdDate": "2021-05-21T09:51:37.907Z", | ||
61 | + // "updatedBy": "System", | ||
62 | + // "updatedDate": "2021-05-21T09:51:37.907Z", | ||
63 | + // "taxId": "1234567891113" | ||
64 | + // }, | ||
65 | + // { | ||
66 | + // "_id": "NEqCwA4l9Cv", | ||
67 | + // "vendorCode": "7100000030", | ||
68 | + // "accountName": "แอดวานซ์ ไวร์เลส เน็ทเวอร์ค", | ||
69 | + // "partnerBank": "0001", | ||
70 | + // "tradingPartner": "", | ||
71 | + // "branch": "00000", | ||
72 | + // "taxId": "0105548115897", | ||
73 | + // "memberId": "VsIsSNY9peQ", | ||
74 | + // "createdBy": "System", | ||
75 | + // "createdDate": "2022-09-26T06:52:42.875Z", | ||
76 | + // "updatedBy": "System", | ||
77 | + // "updatedDate": "2022-09-26T06:52:42.875Z" | ||
78 | + // } | ||
79 | + ] | ||
80 | + } | ||
81 | + | ||
82 | + | ||
83 | + // let response = { | ||
84 | + // "resultCode":"40109", | ||
85 | + // "resultDescription":"Authentication failed. Invalid username or password" | ||
86 | + // } | ||
87 | + | ||
88 | + res.send(response) | ||
89 | +} | ||
0 | \ No newline at end of file | 90 | \ No newline at end of file |
admd.js
@@ -40,10 +40,20 @@ module.exports.oauthToken = async (req, res) => { | @@ -40,10 +40,20 @@ module.exports.oauthToken = async (req, res) => { | ||
40 | // resultDescription: 'admd something error' | 40 | // resultDescription: 'admd something error' |
41 | // } | 41 | // } |
42 | 42 | ||
43 | + // response = { | ||
44 | + // resultCode: "40401", | ||
45 | + // resultDescription: 'Data not found' | ||
46 | + // } | ||
47 | + | ||
43 | // response = {error : 'invalid_grant'} | 48 | // response = {error : 'invalid_grant'} |
44 | 49 | ||
45 | } | 50 | } |
46 | 51 | ||
52 | + response = { | ||
53 | + resultCode: "40401", | ||
54 | + resultDescription: 'Data not found' | ||
55 | + } | ||
56 | + | ||
47 | res.send(response) | 57 | res.send(response) |
48 | } | 58 | } |
49 | 59 |
app.js
@@ -373,6 +373,8 @@ app.post('/auth/v3.1/oauth/token', require('./admd').oauthToken); | @@ -373,6 +373,8 @@ app.post('/auth/v3.1/oauth/token', require('./admd').oauthToken); | ||
373 | app.post('/auth/v3.1/logout', require('./admd').logout); | 373 | app.post('/auth/v3.1/logout', require('./admd').logout); |
374 | app.post('/validate/token', require('./admd').validateToken); | 374 | app.post('/validate/token', require('./admd').validateToken); |
375 | 375 | ||
376 | +app.post('/auth/v3.2/oauth/token', require('./admd').oauthToken); | ||
377 | + | ||
376 | app.post('/point/v1/deleteCustomer', require('./micro_point').deleteCustomer); | 378 | app.post('/point/v1/deleteCustomer', require('./micro_point').deleteCustomer); |
377 | app.post('/privilege/v1/history/delete', require('./privilege').deleteCustomer); | 379 | app.post('/privilege/v1/history/delete', require('./privilege').deleteCustomer); |
378 | 380 | ||
@@ -447,6 +449,14 @@ app.post('/api/v1/cst/wallets/checkWallet', require('./bot_gateway').checkWallet | @@ -447,6 +449,14 @@ app.post('/api/v1/cst/wallets/checkWallet', require('./bot_gateway').checkWallet | ||
447 | app.get('/api/v2/Account/:accountId/Destinations', require('./magellan').getAccountDestination); | 449 | app.get('/api/v2/Account/:accountId/Destinations', require('./magellan').getAccountDestination); |
448 | app.get('/api/v2/Account/:accountId/Things', require('./magellan').getAccountThings); | 450 | app.get('/api/v2/Account/:accountId/Things', require('./magellan').getAccountThings); |
449 | 451 | ||
452 | +app.get('/api/v1/pam-js/apiList/partner/:username', require('./pam').getApiForPartner); | ||
453 | + | ||
454 | +app.post('/api/authen/application', require('./cmsp-authen').authen); | ||
455 | + | ||
456 | +app.post('/graphql', require('./cirr').graphql); | ||
457 | + | ||
458 | +app.get('/sgl/api/v1/accounting-management/accountpayables', require('./account-api').accountPayables); | ||
459 | + | ||
450 | app.get('/api/random/leader', function (req, res) { | 460 | app.get('/api/random/leader', function (req, res) { |
451 | const months = ["เกมส์", "โน๊ต setup", "โน๊ต วัศรุต", "แบงค์", "มอส", "ปิ๊ค", "เต้นพอไม่ต้องตื่น", "เปา", "นัท", "kik", "new", "ann","na", "boky", "eve", "miki", "pla", "sugar"]; | 461 | const months = ["เกมส์", "โน๊ต setup", "โน๊ต วัศรุต", "แบงค์", "มอส", "ปิ๊ค", "เต้นพอไม่ต้องตื่น", "เปา", "นัท", "kik", "new", "ann","na", "boky", "eve", "miki", "pla", "sugar"]; |
452 | // const months = [ "ann"]; | 462 | // const months = [ "ann"]; |
@@ -614,28 +624,525 @@ q.on('success', function (result, job) { | @@ -614,28 +624,525 @@ q.on('success', function (result, job) { | ||
614 | 624 | ||
615 | app.listen(port, () => console.log('app listening on port ' + port + '!')) | 625 | app.listen(port, () => console.log('app listening on port ' + port + '!')) |
616 | 626 | ||
617 | -//test | 627 | +decryptAes256 = function (text) { |
628 | + const crypto = require('crypto'); | ||
629 | + try { | ||
630 | + const pwd = "l;ylfu;yo/o9drkp6g-hk#ohemj;,0hk" | ||
631 | + const iv = Buffer.alloc(16, 0); | ||
632 | + var mykey = crypto.createDecipheriv('aes-256-cbc', pwd, iv); | ||
633 | + var mystr = mykey.update(text, 'hex', 'utf8') | ||
634 | + mystr += mykey.final('utf8'); | ||
635 | + return mystr.toString() | ||
636 | + } catch (e) { | ||
637 | + return text | ||
638 | + } | ||
639 | + } | ||
640 | + | ||
641 | +console.log('decryptAes256', decryptAes256('54848fc27a3ecd9340da85bc201769d180721cedb4e472781920b05d09d9daf6')) | ||
618 | 642 | ||
643 | +//test | ||
644 | +const NodeRSA = require('node-rsa'); | ||
645 | +const jwt = require('jsonwebtoken') | ||
646 | +const crypto = require('crypto'); | ||
619 | test = () => { | 647 | test = () => { |
620 | - z = 0 | ||
621 | - j = 1 | ||
622 | - k = 0 | ||
623 | - while (!(j > 10)) { | ||
624 | - z = z + 1 | ||
625 | - k = 1 | ||
626 | - while(!(k > 10)) { | ||
627 | - k = k + 1 | ||
628 | - z = z + 1 | 648 | + // let key = new NodeRSA() |
649 | + // // key.importKey( Buffer.from(result.encryptPublicKey, 'base64') , 'pkcs8-public-der');; | ||
650 | + // key.importKey( Buffer.from(`MIIEpAIBAAKCAQEAtENoPR+2r0O/AaPcLwHPv67du7ZHE4XIPDT59oo5pL/vdQrmfapjYDsHdt9GW1ch8xfOWX4TERkBnTqudbNkN0uGzKzGCnJ6DUDfhURelTXpfl2wPLnf4G1EHxtN4AG9Juy+NTT3QDTRriHHUaw07Ra/ExbXB2uV1yDIg+zVTuZRmFDvkIsWMCconrSp1no0C6oz1i2sF+QFQ8atObtYPOf008NusZGfwk9d/RS3G6EQD5K9dgIzvkZB27lgQ+cCg7pifF6pNLvUkTEkbF6v3Uo5lD4gs7d0LfJ94DP2PbOqXDSBO1WtZWh950QtBS71CRnhJpGXt6XBgJMB4QlfZwIDAQABAoIBAQCugO6g9VlxU2DNoqXdL6DAi/SE6hDmWkUb26D7RJZG4bNal6HHlzG6j4pLThubAr+Px8Tvp3envpBsd8k5kd77FHc7HipdJLL4r4tyRFxXj6got2OLddi/NqeSgWki6CwHSXlcopiUJE2zh2mfq9hUiAeS4DJrMYANkOPrqlJYnEfOAlAHt0a2Q0GJ+6xpQqZ/EyklSpxBsPoFI2Wjll0hFzL472hg3NBqIU37O25JBLkQjhX5aM+t5M0sYvOZ00aDqBoCWV09KIX+zw8fLK1MvqxfGyUoRCaHUnjVq2cwdswOIzHQ6csRMcTh3/7PnKVr5XV9CdP3Lr6kilf5Rx/BAoGBAN4G8iTaNBs0n/0hj9rg3B8+03OOlhGWZk+8RPHhzdAPhNllhq4tgoWkyKcts6w4Rh545btr7U/p01NNqn0dXfcKvOHheWhEKhbivOAVDcyKc45afXRlTon2YyC+kIUVKrg6e+jD2q5Gp88lxAPNMdx6epo7s5CYSiDMrvJl9sNHAoGBAM/YhmurQhKeOmcN5hS4BWvueyUbfD07nCSjzrHL45pH8ejj5VJkcWyzy4+TD3qFmWgxEih9947uo5Mu1TizMSV+0IELBqJCuKKEBUkMkwSCv2PI42b7Nmd1Bd7cIOgR3JZzN6Q2Z1Vg/3PfcRMxTPV3Lbosr9Z6pkxeGatCDVLhAoGATsRED1Lh/WzT/Wd0s3/mV6dgOLSzBJZIwazXAMDM1S1MQhvEhfJbRbJKBRUvkr98EL9vMOh/DkSz1e/Ntgk/Fq9WhwQIoDbef7P8sbqGZLQRfsUXkL2H+WXRkQJKHwx9VVJaNx+UaxNh4RlSys53C/Lfn+viLj/4vF4hCpmly20CgYAJR5OIzxaeGi5lV3uERUsIrJcW6wk6+qRYBnA+A+pfgwLL8RDWAuIFhml6OYihYcGdo0M6R5V77i+jbJ3ccDOrhuPsPv/G0s/Hgblyr3sI4oWFAP0WJfUh3Vmrv4xAkDuXBAHh9QPcDf6Zv8oenz7eXrnN7BzVqJgwJKtkuAg8QQKBgQDQWOIB6rGZvzNFcmR6NOCCXo/n6LLO8yFbE/bnC8VhV9a+lvBvbF/5ydAQ59pF6HucG9CvCehaTURpLk8AIzPbX0YAp8vUz0uxQEqxZTliix5OQDOgGziKx2j5dEKiL3QyeVpcWgtR6H7j3FAveVfFsEZ4Z41klRFtDtlfoxRpcg==`, 'base64'), 'pkcs1-private-der' ); | ||
651 | + // // console.log(key.isPrivate()) | ||
652 | + // // const text = JSON.stringify(contentRSA); | ||
653 | + // // const encrypted = key.encrypt(text, 'base64'); | ||
654 | + // // console.log('encrypted:', encrypted); | ||
655 | + // let encrypted = "fWPDV0Pe7aXrobnTQykCStZ1wAdLEe3jd37sNcSai9O950qza4yE1e03eiWseFYNT480oKvvV774kZOIsM05ESVhsDEKscA/EMomuFyA15By7zENXSPx3TDaTyKMJ4ebGm1riXtODz9jlEWp8RPGIAi3Md9zItH7xsg0nKBqqffbblBFbZtVYjOFVRIG1notBSzqKiMk1M97TwuuPFEKj4rbGMZeQEl5LASr157+zqA3WtQewnHHf1v+BzHgMGmBUjzNDICvfHpAerZK5Krgn8STtvajHYcqX6qIRhCaKSDHpCncol3jCGuL5I47k/OiIg6uvdM7qZDWC/jhptvLfQ==" | ||
656 | + // const decrypted = key.decrypt(encrypted, 'utf8'); | ||
657 | + // console.log('decrypted:', decrypted); | ||
658 | + | ||
659 | + rsaPrivateKey = `-----BEGIN RSA PRIVATE KEY----- | ||
660 | +MIIEpAIBAAKCAQEAtENoPR+2r0O/AaPcLwHPv67du7ZHE4XIPDT59oo5pL/vdQrm | ||
661 | +fapjYDsHdt9GW1ch8xfOWX4TERkBnTqudbNkN0uGzKzGCnJ6DUDfhURelTXpfl2w | ||
662 | +PLnf4G1EHxtN4AG9Juy+NTT3QDTRriHHUaw07Ra/ExbXB2uV1yDIg+zVTuZRmFDv | ||
663 | +kIsWMCconrSp1no0C6oz1i2sF+QFQ8atObtYPOf008NusZGfwk9d/RS3G6EQD5K9 | ||
664 | +dgIzvkZB27lgQ+cCg7pifF6pNLvUkTEkbF6v3Uo5lD4gs7d0LfJ94DP2PbOqXDSB | ||
665 | +O1WtZWh950QtBS71CRnhJpGXt6XBgJMB4QlfZwIDAQABAoIBAQCugO6g9VlxU2DN | ||
666 | +oqXdL6DAi/SE6hDmWkUb26D7RJZG4bNal6HHlzG6j4pLThubAr+Px8Tvp3envpBs | ||
667 | +d8k5kd77FHc7HipdJLL4r4tyRFxXj6got2OLddi/NqeSgWki6CwHSXlcopiUJE2z | ||
668 | +h2mfq9hUiAeS4DJrMYANkOPrqlJYnEfOAlAHt0a2Q0GJ+6xpQqZ/EyklSpxBsPoF | ||
669 | +I2Wjll0hFzL472hg3NBqIU37O25JBLkQjhX5aM+t5M0sYvOZ00aDqBoCWV09KIX+ | ||
670 | +zw8fLK1MvqxfGyUoRCaHUnjVq2cwdswOIzHQ6csRMcTh3/7PnKVr5XV9CdP3Lr6k | ||
671 | +ilf5Rx/BAoGBAN4G8iTaNBs0n/0hj9rg3B8+03OOlhGWZk+8RPHhzdAPhNllhq4t | ||
672 | +goWkyKcts6w4Rh545btr7U/p01NNqn0dXfcKvOHheWhEKhbivOAVDcyKc45afXRl | ||
673 | +Ton2YyC+kIUVKrg6e+jD2q5Gp88lxAPNMdx6epo7s5CYSiDMrvJl9sNHAoGBAM/Y | ||
674 | +hmurQhKeOmcN5hS4BWvueyUbfD07nCSjzrHL45pH8ejj5VJkcWyzy4+TD3qFmWgx | ||
675 | +Eih9947uo5Mu1TizMSV+0IELBqJCuKKEBUkMkwSCv2PI42b7Nmd1Bd7cIOgR3JZz | ||
676 | +N6Q2Z1Vg/3PfcRMxTPV3Lbosr9Z6pkxeGatCDVLhAoGATsRED1Lh/WzT/Wd0s3/m | ||
677 | +V6dgOLSzBJZIwazXAMDM1S1MQhvEhfJbRbJKBRUvkr98EL9vMOh/DkSz1e/Ntgk/ | ||
678 | +Fq9WhwQIoDbef7P8sbqGZLQRfsUXkL2H+WXRkQJKHwx9VVJaNx+UaxNh4RlSys53 | ||
679 | +C/Lfn+viLj/4vF4hCpmly20CgYAJR5OIzxaeGi5lV3uERUsIrJcW6wk6+qRYBnA+ | ||
680 | +A+pfgwLL8RDWAuIFhml6OYihYcGdo0M6R5V77i+jbJ3ccDOrhuPsPv/G0s/Hgbly | ||
681 | +r3sI4oWFAP0WJfUh3Vmrv4xAkDuXBAHh9QPcDf6Zv8oenz7eXrnN7BzVqJgwJKtk | ||
682 | +uAg8QQKBgQDQWOIB6rGZvzNFcmR6NOCCXo/n6LLO8yFbE/bnC8VhV9a+lvBvbF/5 | ||
683 | +ydAQ59pF6HucG9CvCehaTURpLk8AIzPbX0YAp8vUz0uxQEqxZTliix5OQDOgGziK | ||
684 | +x2j5dEKiL3QyeVpcWgtR6H7j3FAveVfFsEZ4Z41klRFtDtlfoxRpcg== | ||
685 | +-----END RSA PRIVATE KEY-----` | ||
686 | + | ||
687 | + let token = 'eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJkaWdpdGFsLmFpcy50aC9hdXRoIiwic3ViIjoiaWRUb2tlbiIsImp0aSI6Ik45TmdVTmpJUUpyIiwiaW5mbyI6IkhhZ3V1SmdtVG5wbDVKZ2dIeUZ3cnlyMGRkbVlBNEtadlN6VlIwczZlMlM4NXRUMmVnMEM2RWhRSGNnTXdaSGRJdys5NFdOcUs2M1lVQVJXM2E4OEY1YVdyVnRzQWNTMC94dnQvOHl0VmcwR3BrM0Rqb2xMcWxCNFVCTXcwYjhsTjFtb0dzVTMwN2xXYXlzMVZUWDVaZHVxdk5kWEpaWHpLekRPSFhzSUhRbERGY1U5SmlkMW1lb2RJQnllL2tCVHRaMTVMWnlNRWpscm9adndlVVJSMXg4aEJiQ2RxZDJYQ05iWUNCOU1yaHcvQmR0RmszMUF5MzUxa3lJSkNUZkdmaVlNTWNMcHdPTlZQUEgzRHNrclU3UFh1TDR4eGVWSEVGQWRhTlJWQ3E4T25NU0s4cTY1S2VqKy9ncUNRRFJYa0FLRlplbzFKNCthcGtXUzNBMXBDQT09IiwiaWF0IjoxNjYwMTkyODIxLCJleHAiOjE2NjAxOTM0MjF9.MiQ92QxQ8t8atL9Kw12QEaT6f3HGY5uXHWNJrmti3zZR8QC9DO6XGEbEpR03cgT4Ialb2jZD2WzOums2CN08nbwiSvvEWaRL8Vl8j4w3f1vePw25w64E7rc426PY-nYlk-U-AoErYxzSw8iLo6pyVDUg7psZHZh73-OshSC4xySV2oJAdEwsFv5VlGdNrBJZitP7OVdF7Qu7UUQqQPFR76bkMcOEmyDsBGzXUT3A0AlK2ilCwV1a_VCnfmdaQiMbXZ4v2iyRB0LsTha7OBi51AredQ5HYIwcLF0Mu7r1CFMRd0zqDTycO3Aaag5Pb82zJwfsr2JyRcDSiGB8nKKCrQ' | ||
688 | + jwtPublicKey = `-----BEGIN PUBLIC KEY----- | ||
689 | +MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA84UZfRnq6v9WTTA2zKLT | ||
690 | +pKW8Zh7p0wipwTT59e7aT2znqGFD9xB5zx8BPIRGZ86aookOtI4CYGNS8TK8PMqB | ||
691 | +RcdBRt4xMO+bzHeHE0ichFg46eCU7Bj5NIGDb8n2rWPRTk/jmkAYPIhMuWy2Jcw+ | ||
692 | +u3Mu7lhvlnDAzQvaL45Reg4CqbRtjuNFFcLmTkWNzJidrOmrS9lFuy6wKrLvHNmP | ||
693 | +eQHFKVUU9qcmtODdmjsTJKekVnXO13fTE+PWQnWB0NbPpSyH8k3YlkoTDBFeZoY+ | ||
694 | +HH8M+vaXXg6OLNS8Ry8exz8iV5ofiwthNp3Ya/YzXMzrxSrewDNr4VBj3Ckv9IYW | ||
695 | +FQIDAQAB | ||
696 | +-----END PUBLIC KEY-----` | ||
697 | + let jwtDecoded = jwt.verify(token, jwtPublicKey) | ||
698 | + | ||
699 | + console.log('jwt decode:', jwtDecoded) | ||
700 | + | ||
701 | + const crypto = require('crypto'); | ||
702 | + const decryptedData = crypto.privateDecrypt( | ||
703 | + { | ||
704 | + key: rsaPrivateKey, | ||
705 | + padding: crypto.constants.RSA_PKCS1_PADDING, | ||
706 | + }, | ||
707 | + Buffer.from(jwtDecoded.info, 'base64') | ||
708 | + ); | ||
709 | + | ||
710 | + // The decrypted data is of the Buffer type, which we can convert to a | ||
711 | + // string to reveal the original data | ||
712 | + console.log("decrypted info data:", decryptedData.toString()); | ||
713 | + | ||
714 | +} | ||
715 | + | ||
716 | +// test() | ||
717 | + | ||
718 | + | ||
719 | +test1 = (text) => { | ||
720 | + try { | ||
721 | + const iv = Buffer.alloc(16, 0); | ||
722 | + var mykey = crypto.createDecipheriv('aes-256-cbc', 'mypasswordmypasswordmypassword12', iv); | ||
723 | + var mystr = mykey.update(text, 'hex', 'utf8') | ||
724 | + mystr += mykey.final('utf8'); | ||
725 | + return mystr.toString() | ||
726 | + } catch (e) { | ||
727 | + console.log(e) | ||
728 | + return text | ||
729 | + } | ||
730 | +} | ||
731 | + | ||
732 | +// console.log(test1('5B346775BE1213611D4E77D63795296E')) | ||
733 | + | ||
734 | +const fs = require('fs'); | ||
735 | +const { time } = require('console'); | ||
736 | +test2 = () => { | ||
737 | + var jwtPrivate = fs.readFileSync('./jwt.pem'); // get private key | ||
738 | + const token = jwt.sign({ | ||
739 | + "username": "dev@mail.com", | ||
740 | + "ssid": "747GSS5FMkJqcU45KUiMws", | ||
741 | + "refresh_token_expires_in": 86400 | ||
742 | + }, Buffer.from(jwtPrivate) , { algorithm: 'RS256' }); | ||
743 | + return token | ||
744 | +} | ||
745 | + | ||
746 | +// console.log(test2()) | ||
747 | + | ||
748 | +test3 = (seq) => { | ||
749 | + let most = 0; | ||
750 | + for(i in seq){ | ||
751 | + if((+i + 1) <= seq.length) { | ||
752 | + let v = shum(seq[i], seq.slice((+i + 1)), seq[i]) | ||
753 | + if(v > most) { | ||
754 | + most = v | ||
755 | + } | ||
629 | } | 756 | } |
630 | - j = j + 1 | ||
631 | } | 757 | } |
632 | - let a = "ABCDab" | ||
633 | - console.log(typeof a == 'string') | ||
634 | - if(typeof a == 'string') { | ||
635 | - console.log(a.toLowerCase()) | 758 | + console.log('result', most) |
759 | +} | ||
760 | + | ||
761 | +shum = (value, array, shummary) => { | ||
762 | + for(a in array) { | ||
763 | + if(value === array[a]) { | ||
764 | + return shummary + array[a] | ||
765 | + } else { | ||
766 | + return shum(value, array.slice(1), array[a] + shummary) | ||
767 | + } | ||
768 | + } | ||
769 | + return 0 | ||
770 | +} | ||
771 | + | ||
772 | +let arr = [1,2,1,4,5,6,1,8,9,2] | ||
773 | + | ||
774 | +// console.time('test3') | ||
775 | +// test3(arr) | ||
776 | +// console.timeEnd('test3') | ||
777 | + | ||
778 | +test4 = (seq) => { | ||
779 | + let most = 0 | ||
780 | + for(s in seq) { | ||
781 | + let i = seq.indexOf(seq[s], +s + 1) | ||
782 | + if(i !== -1) { | ||
783 | + let sum = seq[s] | ||
784 | + for(let j = s; j < i; j++) { | ||
785 | + sum += seq[j] | ||
786 | + } | ||
787 | + if(sum > most) { | ||
788 | + most = sum | ||
789 | + } | ||
790 | + } | ||
791 | + } | ||
792 | + console.log('result', most) | ||
793 | +} | ||
794 | + | ||
795 | +// console.time('test4') | ||
796 | +// test4(arr) | ||
797 | +// console.timeEnd('test4') | ||
798 | + | ||
799 | + | ||
800 | +test5 = (home) => { | ||
801 | + console.log('input >>', home) | ||
802 | + for(let ih in home) { | ||
803 | + let thisHomeHasTank = false | ||
804 | + let thisHomeHasLand = false | ||
805 | + if(home.charAt(ih) == 'H') { | ||
806 | + thisHomeHasTank = hasTank(home, ih) | ||
807 | + | ||
808 | + if(thisHomeHasTank) { | ||
809 | + continue | ||
810 | + } else { | ||
811 | + thisHomeHasLand = hasLand(home, ih) | ||
812 | + } | ||
813 | + | ||
814 | + if(thisHomeHasLand) { | ||
815 | + home = addTank(home, ih) | ||
816 | + } else { | ||
817 | + return -1 | ||
818 | + } | ||
819 | + } | ||
820 | + } | ||
821 | + | ||
822 | + console.log('result >>', home) | ||
823 | + let tankCount = 0 | ||
824 | + for(let t of home) { | ||
825 | + if(t == 'T') { | ||
826 | + tankCount += 1 | ||
827 | + } | ||
828 | + } | ||
829 | + | ||
830 | + return tankCount | ||
831 | +} | ||
832 | + | ||
833 | +hasTank = (home, i) => { | ||
834 | + if(home.charAt(+i-1)) { | ||
835 | + return home.charAt(+i-1) == 'T' | ||
836 | + } | ||
837 | + | ||
838 | + if(home.charAt(+i+1)) { | ||
839 | + return home.charAt(+i+1) == 'T' | ||
840 | + } | ||
841 | +} | ||
842 | + | ||
843 | +hasLand = (home, i) => { | ||
844 | + let hasLand = false | ||
845 | + if(home.charAt(+i-1)) { | ||
846 | + hasLand = home.charAt(+i-1) == '_' | ||
847 | + } | ||
848 | + | ||
849 | + if(home.charAt(+i+1) && !hasLand) { | ||
850 | + hasLand = home.charAt(+i+1) == '_' | ||
851 | + } | ||
852 | + | ||
853 | + return hasLand | ||
854 | +} | ||
855 | + | ||
856 | +addTank = (home, i) => { | ||
857 | + if(home.charAt(+i+1)) { | ||
858 | + if( home.charAt(+i+1) == '_' ){ | ||
859 | + home = replaceChar(home, +i+1, 'T') | ||
860 | + return home | ||
861 | + } | ||
862 | + } | ||
863 | + | ||
864 | + if(home.charAt(+i-1)) { | ||
865 | + if( home.charAt(+i-1) == '_' ){ | ||
866 | + home = replaceChar(home, +i-1, 'T') | ||
867 | + return home | ||
868 | + } | ||
869 | + } | ||
870 | +} | ||
871 | + | ||
872 | +replaceChar = (str, index, replacement) => { | ||
873 | + return str.substring(0, index) + replacement + str.substring(index + 1); | ||
874 | +} | ||
875 | + | ||
876 | +// console.time('test5') | ||
877 | +// console.log('number of tanks:', test5('_H_H_H_H_'), '\n') | ||
878 | +// console.timeEnd('test5') | ||
879 | +// console.log('number of tanks:', test5('H_HHH_'), '\n') | ||
880 | +// console.log('number of tanks:', test5('H_H_H_H_'), '\n') | ||
881 | +// console.log('number of tanks:', test5('_HH___HH_'), '\n') | ||
882 | +// console.log('number of tanks:', test5('_H_'), '\n') | ||
883 | +// console.log('\n') | ||
884 | + | ||
885 | +let current = [150,160,170] | ||
886 | +let future = [200,150,160] | ||
887 | +test6 = (saving) => { | ||
888 | + let profit = 0 | ||
889 | + | ||
890 | + for(let i in current) { | ||
891 | + if(saving > current[i]) { | ||
892 | + saving -= current[i] | ||
893 | + } | ||
894 | + } | ||
895 | + | ||
896 | + return profit | ||
897 | +} | ||
898 | + | ||
899 | +// console.log(test6(310)) | ||
900 | + | ||
901 | +// console.log(new URLSearchParams({ | ||
902 | +// client_id: '123clientId', | ||
903 | +// client_secret: '123clientSecret', | ||
904 | +// grant_type: '123authorization_code', | ||
905 | +// code: 'body.code', | ||
906 | +// redirect_uri: '123redirectUrl', | ||
907 | +// }).toString()) | ||
908 | + | ||
909 | +test7 = (amount) => { | ||
910 | + let tb = Math.floor(amount / 1000) | ||
911 | + amount = amount % 1000 | ||
912 | + let fhb = Math.floor(amount / 500) | ||
913 | + amount = amount % 500 | ||
914 | + let hb = Math.floor(amount / 100) | ||
915 | + amount = amount % 100 | ||
916 | + let twb = Math.floor(amount / 20) | ||
917 | + amount = amount % 20 | ||
918 | + let teb = Math.floor(amount / 10) | ||
919 | + amount = amount % 10 | ||
920 | + let fb = Math.floor(amount / 5) | ||
921 | + amount = amount % 5 | ||
922 | + let ob = Math.floor(amount) | ||
923 | + | ||
924 | + console.log(tb, fhb, hb, twb, teb, fb, ob) | ||
925 | +} | ||
926 | + | ||
927 | +// test7(15776) | ||
928 | + | ||
929 | + | ||
930 | +var jsonToGraphql = function (json) { | ||
931 | + const serviceEnv = {} | ||
932 | + const configField = serviceEnv['fieldGraphql'] || {} | ||
933 | + let data = {}; | ||
934 | + try { | ||
935 | + data = JSON.parse(json) | ||
936 | + } catch (e) { | ||
937 | + console.log('condition is not json format ', e) | ||
938 | + } | ||
939 | + let args = {} | ||
940 | + | ||
941 | + for(key in data) { | ||
942 | + if(typeof data[key] === 'object'){ | ||
943 | + for(key2 in data[key]) { | ||
944 | + args[key2] = data[key][key2] | ||
945 | + } | ||
946 | + } | ||
947 | + } | ||
948 | + | ||
949 | + // console.log(args) | ||
950 | + | ||
951 | + let query = { | ||
952 | + query: { apiList: Object.assign( { __args: data } , configField )} | ||
953 | + } | ||
954 | + | ||
955 | + console.log(JSON.stringify(query)) | ||
956 | + | ||
957 | + // const graphql_query = jsonToGraphQLQuery(query); | ||
958 | + // return graphql_query | ||
959 | + } | ||
960 | + | ||
961 | +// jsonToGraphql(`{ | ||
962 | +// "resourceName": "Resource Name", | ||
963 | +// "systemName": "System Name", | ||
964 | +// "status": "Approved", | ||
965 | +// "category": "Category", | ||
966 | +// "customParams": [ | ||
967 | +// { | ||
968 | +// "customKey": "Custom Parameter key", | ||
969 | +// "customValue": "Custom Parameter value" | ||
970 | +// }, | ||
971 | +// { | ||
972 | +// "customKey": "Custom Parameter key2", | ||
973 | +// "customValue": "Custom Parameter value2" | ||
974 | +// } | ||
975 | +// ] | ||
976 | +// }`) | ||
977 | + | ||
978 | + | ||
979 | +// urlChecker = function (url, checkUrl) { | ||
980 | +// // console.log(url, '--', checkUrl) | ||
981 | +// // console.log(url.split('/').slice(3, 5)) | ||
982 | +// let newUrl = url.split('/').slice(3, 5).map((value) => { | ||
983 | +// return value.split('.')[0] | ||
984 | +// }).join('/') | ||
985 | + | ||
986 | +// console.log(url, newUrl, checkUrl) | ||
987 | + | ||
988 | +// if(newUrl === checkUrl) { | ||
989 | +// return true | ||
990 | +// } | ||
991 | + | ||
992 | +// return false | ||
993 | +// } | ||
994 | + | ||
995 | + | ||
996 | +urlChecker = function (url, checkUrl) { | ||
997 | + let newUrl = url.split('/').slice(3, 5).map((value) => { | ||
998 | + return value.split('.')[0] | ||
999 | + }).join('/') | ||
1000 | + | ||
1001 | + if(newUrl === checkUrl) { | ||
1002 | + return true | ||
1003 | + } | ||
1004 | + | ||
1005 | + return false | ||
1006 | + } | ||
1007 | + | ||
1008 | + | ||
1009 | +// console.log(urlChecker('/api/v1/tq/tqTest', 'tq/tq')) | ||
1010 | +// console.log(urlChecker('/admd/v3/admd/test', 'admd/test')) | ||
1011 | +// console.log(urlChecker('/admd/v3/admd/test.json', 'admd/test')) | ||
1012 | +// console.log(urlChecker('/admd/v3/xx/admd/test', 'admd/test')) | ||
1013 | +// console.log(urlChecker('/api/v3/admd/test2', 'admd/test2')) | ||
1014 | +// console.log(urlChecker('/api/v3/admd/test2', 'admd/test')) | ||
1015 | +// console.log(urlChecker('/api/v3/admd/test2.json', 'admd/test')) | ||
1016 | +// console.log(urlChecker('/api/v3/admd/test/xxx.json', 'admd/test')) | ||
1017 | + | ||
1018 | +let errorMessage = { | ||
1019 | + "success": { | ||
1020 | + "resultCode": "20000", | ||
1021 | + "developerMessage": "Success" | ||
1022 | + }, | ||
1023 | + "successWithCondition": { | ||
1024 | + "resultCode": "20001", | ||
1025 | + "developerMessage": "Some information is missing" | ||
1026 | + }, | ||
1027 | + "successWithCondition2": { | ||
1028 | + "resultCode": "20002", | ||
1029 | + "developerMessage": "Some information has not been updated" | ||
1030 | + }, | ||
1031 | + "urlNotFound": { | ||
1032 | + "resultCode": "40400", | ||
1033 | + "developerMessage": "Unknown URL" | ||
1034 | + }, | ||
1035 | + "accessDenied": { | ||
1036 | + "resultCode": "40100", | ||
1037 | + "developerMessage": "Access denied" | ||
1038 | + }, | ||
1039 | + "unauthorizedUser": { | ||
1040 | + "resultCode": "40102", | ||
1041 | + "developerMessage": "Unauthorized User" | ||
1042 | + }, | ||
1043 | + "jwtExpired": { | ||
1044 | + "resultCode": "40103", | ||
1045 | + "developerMessage": "Token Expired" | ||
1046 | + }, | ||
1047 | + "missing": { | ||
1048 | + "resultCode": "40300", | ||
1049 | + "developerMessage": "Missing or Invalid parameter {param}" | ||
1050 | + }, | ||
1051 | + "dataExisted": { | ||
1052 | + "resultCode": "40301", | ||
1053 | + "developerMessage": "Data existed" | ||
1054 | + }, | ||
1055 | + "dataNotFound": { | ||
1056 | + "resultCode": "40401", | ||
1057 | + "developerMessage": "Data not found" | ||
1058 | + }, | ||
1059 | + "systemHasAProblem": { | ||
1060 | + "resultCode": "41700", | ||
1061 | + "developerMessage": "The system has a problem" | ||
1062 | + }, | ||
1063 | + "systemError": { | ||
1064 | + "resultCode": "50000", | ||
1065 | + "developerMessage": "System Error" | ||
1066 | + }, | ||
1067 | + "dbUnknownError": { | ||
1068 | + "resultCode": "50001", | ||
1069 | + "developerMessage": "DB Error" | ||
1070 | + }, | ||
1071 | + "dbConnectionTimeout": { | ||
1072 | + "resultCode": "50002", | ||
1073 | + "developerMessage": "Connection timeout" | ||
1074 | + }, | ||
1075 | + "dbConnectionError": { | ||
1076 | + "resultCode": "50003", | ||
1077 | + "developerMessage": "Connection error" | ||
1078 | + }, | ||
1079 | + "timeout": { | ||
1080 | + "resultCode": "50002", | ||
1081 | + "developerMessage": "Connection timeout" | ||
1082 | + }, | ||
1083 | + "connectionError": { | ||
1084 | + "resultCode": "50003", | ||
1085 | + "developerMessage": "Connection error" | ||
1086 | + }, | ||
1087 | + "destNodeError": { | ||
1088 | + "resultCode": "50010", | ||
1089 | + "developerMessage": "{destnode} error: {code}:{message}" | ||
1090 | + }, | ||
1091 | + "connectionNodeTimeout": { | ||
1092 | + "resultCode": "50011", | ||
1093 | + "developerMessage": "{destnode} timeout" | ||
1094 | + }, | ||
1095 | + "connectionNodeError": { | ||
1096 | + "resultCode": "50012", | ||
1097 | + "developerMessage": "{destnode} connection error" | ||
1098 | + }, | ||
1099 | + "admdError": { | ||
1100 | + "resultCode": "50004", | ||
1101 | + "developerMessage": "ADMD Error" | ||
1102 | + } | ||
1103 | +} | ||
1104 | + | ||
1105 | +mappingDeveloperMessage = function (resultCode) { | ||
1106 | + let e; | ||
1107 | + for(key in errorMessage) { | ||
1108 | + if(errorMessage[key].resultCode == resultCode) { | ||
1109 | + e = errorMessage[key] | ||
1110 | + } | ||
1111 | + } | ||
1112 | + | ||
1113 | + return e | ||
1114 | + } | ||
1115 | + | ||
1116 | +// console.log(mappingDeveloperMessage('40403')) | ||
1117 | + | ||
1118 | +let stateStatus = 'supplier-registration|waiting,supplier-registration|reject,supplier-registration|approve,business-agreement|waiting,business-agreement|reject' | ||
1119 | + | ||
1120 | +function createAQuery(query) { | ||
1121 | + let q = {} | ||
1122 | + let stateStatusList = query.stateStatus.split(',') | ||
1123 | + let groupState = {} | ||
1124 | + for (stateStatus of stateStatusList) { | ||
1125 | + if(stateStatus.includes('|')) { | ||
1126 | + // console.log(stateStatus) | ||
1127 | + let ss = stateStatus.split('|') | ||
1128 | + let state = ss[0] | ||
1129 | + let status = ss[1] | ||
1130 | + if(groupState[state]) { | ||
1131 | + groupState[state].push(status) | ||
1132 | + } else { | ||
1133 | + groupState[state] = [status] | ||
1134 | + } | ||
1135 | + } | ||
1136 | + } | ||
1137 | + // console.log(groupState) | ||
1138 | + q.$or = [] | ||
1139 | + for(g in groupState) { | ||
1140 | + q.$or.push({ | ||
1141 | + state: g, | ||
1142 | + status: { $in: groupState[g]} | ||
1143 | + }) | ||
636 | } | 1144 | } |
637 | - console.log(a) | ||
638 | - console.log(z) | 1145 | + return q; |
639 | } | 1146 | } |
640 | 1147 | ||
641 | -test() | ||
642 | \ No newline at end of file | 1148 | \ No newline at end of file |
1149 | +console.log(JSON.stringify(createAQuery({stateStatus}))) | ||
643 | \ No newline at end of file | 1150 | \ No newline at end of file |
@@ -0,0 +1,31 @@ | @@ -0,0 +1,31 @@ | ||
1 | +const { Configuration, OpenAIApi } = require("openai"); | ||
2 | +const api_key = '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'; | ||
3 | + | ||
4 | +const configuration = new Configuration({ apiKey: api_key }); | ||
5 | +const openai = new OpenAIApi(configuration); | ||
6 | + | ||
7 | +openai.createCompletion({ | ||
8 | + model: "text-davinci-003", | ||
9 | + prompt: "say hello in 3 random language", | ||
10 | + temperature: 0.6, | ||
11 | +}).then(response => { | ||
12 | + console.log(response.data.choices[0].text) | ||
13 | +}); | ||
14 | + | ||
15 | + | ||
16 | +// const client = new openai(api_key); | ||
17 | + | ||
18 | +// const prompt = 'Once upon a time, in a far-off kingdom, there lived a beautiful princess named...'; | ||
19 | +// const model = 'text-davinci-002'; | ||
20 | + | ||
21 | +// client.completions.create({ | ||
22 | +// engine: model, | ||
23 | +// prompt: prompt, | ||
24 | +// max_tokens: 50, | ||
25 | +// n: 1, | ||
26 | +// stop: '\n' | ||
27 | +// }).then(result => { | ||
28 | +// console.log(result.choices[0].text); | ||
29 | +// }).catch(err => { | ||
30 | +// console.log(err); | ||
31 | +// }); | ||
0 | \ No newline at end of file | 32 | \ No newline at end of file |
@@ -0,0 +1,245 @@ | @@ -0,0 +1,245 @@ | ||
1 | +let retryCondition = false | ||
2 | + | ||
3 | +module.exports.graphql = async (req, res) => { | ||
4 | + console.log('===== POST graphql =====') | ||
5 | + console.log('url', req.originalUrl); | ||
6 | + console.log('headers', req.headers); | ||
7 | + console.log('query', req.query); | ||
8 | + console.log('params', req.params); | ||
9 | + console.log('body', req.body); | ||
10 | + | ||
11 | + let response | ||
12 | + | ||
13 | + if(req.body.query.includes('"pam"')) { | ||
14 | + console.log('pam') | ||
15 | + response = { | ||
16 | + "data": { | ||
17 | + "apiList": [ | ||
18 | + { | ||
19 | + "api": { | ||
20 | + "_id": "636c9d7916831a1e82822cb7", | ||
21 | + "method": "GET", | ||
22 | + "uri": "/api/v1/pam1/test", | ||
23 | + "description": "test" | ||
24 | + }, | ||
25 | + "resource": { | ||
26 | + "resourceName": "QA_PAM1", | ||
27 | + "description": "QA_PAM1" | ||
28 | + } | ||
29 | + }, | ||
30 | + { | ||
31 | + "api": { | ||
32 | + "_id": "636c9d7916831a6efc822cc7", | ||
33 | + "method": "POST", | ||
34 | + "uri": "/api/v1/pam/test2", | ||
35 | + "description": "test" | ||
36 | + }, | ||
37 | + "resource": { | ||
38 | + "resourceName": "QA_PAM1", | ||
39 | + "description": "QA_PAM1" | ||
40 | + } | ||
41 | + }, | ||
42 | + { | ||
43 | + "api": { | ||
44 | + "_id": "640ec27fbc5c296d3cd5f385", | ||
45 | + "method": "GET", | ||
46 | + "uri": "/api/v1/pam1/test", | ||
47 | + "description": "test" | ||
48 | + }, | ||
49 | + "resource": { | ||
50 | + "resourceName": "QA_PAM1", | ||
51 | + "description": "QA_PAM1 - UPDATE RESOURCE" | ||
52 | + } | ||
53 | + }, | ||
54 | + { | ||
55 | + "api": { | ||
56 | + "_id": "640ec27fbc5c2996b3d5f395", | ||
57 | + "method": "POST", | ||
58 | + "uri": "/api/v1/pam/test2", | ||
59 | + "description": "test" | ||
60 | + }, | ||
61 | + "resource": { | ||
62 | + "resourceName": "QA_PAM1", | ||
63 | + "description": "QA_PAM1 - UPDATE RESOURCE" | ||
64 | + } | ||
65 | + } | ||
66 | + ] | ||
67 | + }, | ||
68 | + "resultCode": "20000", | ||
69 | + "resultDescription": "Success" | ||
70 | + } | ||
71 | + } else if(req.body.query.includes('"pam1"')) { | ||
72 | + console.log('pam1') | ||
73 | + response = { | ||
74 | + "data": { | ||
75 | + "apiList": [ | ||
76 | + { | ||
77 | + "api": { | ||
78 | + "_id": "636c9d7916831a1e82822cb7", | ||
79 | + "method": "GET", | ||
80 | + "uri": "/api/v1/pam1/test", | ||
81 | + "description": "test" | ||
82 | + }, | ||
83 | + "resource": { | ||
84 | + "resourceName": "QA_PAM1", | ||
85 | + "description": "QA_PAM1" | ||
86 | + } | ||
87 | + }, | ||
88 | + { | ||
89 | + "api": { | ||
90 | + "_id": "640ec27fbc5c296d3cd5f385", | ||
91 | + "method": "GET", | ||
92 | + "uri": "/api/v1/pam1/test", | ||
93 | + "description": "test" | ||
94 | + }, | ||
95 | + "resource": { | ||
96 | + "resourceName": "QA_PAM1", | ||
97 | + "description": "QA_PAM1 - UPDATE RESOURCE" | ||
98 | + } | ||
99 | + } | ||
100 | + ] | ||
101 | + }, | ||
102 | + "resultCode": "20000", | ||
103 | + "resultDescription": "Success" | ||
104 | + } | ||
105 | + } else if(req.body.query.includes('"resource"')) { | ||
106 | + console.log('resource') | ||
107 | + response = { | ||
108 | + "data": { | ||
109 | + "apiList": [ | ||
110 | + { | ||
111 | + "api": { | ||
112 | + "_id": "640ec968bc5c2918fed5f4b0", | ||
113 | + "method": "DELETE", | ||
114 | + "uri": "/api/v1/resource/test", | ||
115 | + "description": "Description test api" | ||
116 | + }, | ||
117 | + "resource": { | ||
118 | + "resourceName": "TQ_Resource_Test", | ||
119 | + "description": "Resource Description" | ||
120 | + } | ||
121 | + } | ||
122 | + ] | ||
123 | + }, | ||
124 | + "resultCode": "20000", | ||
125 | + "resultDescription": "Success" | ||
126 | + } | ||
127 | + } else { | ||
128 | + console.log('tq') | ||
129 | + response = { | ||
130 | + "data": { | ||
131 | + "apiList": [ | ||
132 | + { | ||
133 | + "api": { | ||
134 | + "_id": "640823c9151674235cf1b891", | ||
135 | + "method": "PATCH", | ||
136 | + "uri": "/api/v1/tq/tqTest", | ||
137 | + "description": "test00001" | ||
138 | + }, | ||
139 | + "resource": { | ||
140 | + "resourceName": "TQ_Test1", | ||
141 | + "description": "TQ_ResourceDescription1" | ||
142 | + } | ||
143 | + }, | ||
144 | + { | ||
145 | + "api": { | ||
146 | + "_id": "640e91b0bc5c2970afd5f067", | ||
147 | + "method": "PATCH", | ||
148 | + "uri": "/api/v1/tq/tqTest", | ||
149 | + "description": "test00001" | ||
150 | + }, | ||
151 | + "resource": { | ||
152 | + "resourceName": "TQ_Test1", | ||
153 | + "description": "TQ_ResourceDescription1" | ||
154 | + } | ||
155 | + }, | ||
156 | + { | ||
157 | + "api": { | ||
158 | + "_id": "640e91b0bc5c2921c3d5f075", | ||
159 | + "method": "GET", | ||
160 | + "uri": "/api/v1/tq2/tqTest", | ||
161 | + "description": "test" | ||
162 | + }, | ||
163 | + "resource": { | ||
164 | + "resourceName": "TQ_Test1", | ||
165 | + "description": "TQ_ResourceDescription1" | ||
166 | + } | ||
167 | + } | ||
168 | + ] | ||
169 | + }, | ||
170 | + "resultCode": "20000", | ||
171 | + "resultDescription": "Success" | ||
172 | + } | ||
173 | + } | ||
174 | + | ||
175 | + // if(req.body.query.includes('admd3')) { | ||
176 | + // response = { | ||
177 | + // "data": { | ||
178 | + // "apiList": "", | ||
179 | + // "message": "Data Not Found" | ||
180 | + // }, | ||
181 | + // "resultCode": "20000", | ||
182 | + // "resultDescription": "Success" | ||
183 | + // } | ||
184 | + // } | ||
185 | + | ||
186 | + // if(req.body.query.includes('admd2')) { | ||
187 | + // if(retryCondition) { | ||
188 | + // retryCondition = false | ||
189 | + // response = { | ||
190 | + // "resultCode": "40101", | ||
191 | + // "resultDescription": "Unauthorized" | ||
192 | + // } | ||
193 | + // } else { | ||
194 | + // response = { | ||
195 | + // "data": { | ||
196 | + // "apiList": [{ | ||
197 | + // "api": { | ||
198 | + // "_id": "635a05d5bc7f8b9de2595311", | ||
199 | + // "method": "GET", | ||
200 | + // "uri": "/api/v1/admd2/token2.json" | ||
201 | + // }, | ||
202 | + // "resource": { | ||
203 | + // "resourceName": "Resource Name GET", | ||
204 | + // "description": "Approved" | ||
205 | + // } | ||
206 | + // },{ | ||
207 | + // "api": { | ||
208 | + // "_id": "635a05d5bc7f8b9de2595311", | ||
209 | + // "method": "POST", | ||
210 | + // "uri": "/api/v1/admd2/token2/xxx.json" | ||
211 | + // }, | ||
212 | + // "resource": { | ||
213 | + // "resourceName": "Resource Name POST", | ||
214 | + // "description": "Approved" | ||
215 | + // } | ||
216 | + // },{ | ||
217 | + // "api": { | ||
218 | + // "_id": "635a05d5bc7f8b9de2595311", | ||
219 | + // "method": "POST", | ||
220 | + // "uri": "/api/v1/admd2/token5/xxx.json" | ||
221 | + // }, | ||
222 | + // "resource": { | ||
223 | + // "resourceName": "Resource Name POST", | ||
224 | + // "description": "Approved" | ||
225 | + // } | ||
226 | + // },{ | ||
227 | + // "api": { | ||
228 | + // "_id": "635a05d5bc7f8b9de2595311", | ||
229 | + // "method": "DELETE", | ||
230 | + // "uri": "/api/v1/admd2/token5/xxx.json" | ||
231 | + // }, | ||
232 | + // "resource": { | ||
233 | + // "resourceName": "Resource Name DELETE", | ||
234 | + // "description": "Approved" | ||
235 | + // } | ||
236 | + // }] | ||
237 | + // }, | ||
238 | + // "resultCode": "20000", | ||
239 | + // "resultDescription": "Success" | ||
240 | + // } | ||
241 | + // } | ||
242 | + // } | ||
243 | + | ||
244 | + res.status(200).send(response) | ||
245 | +} |
@@ -0,0 +1,26 @@ | @@ -0,0 +1,26 @@ | ||
1 | + | ||
2 | +module.exports.authen = async (req, res) => { | ||
3 | + console.log('===== POST authentication =====') | ||
4 | + console.log('url', req.originalUrl); | ||
5 | + console.log('headers', req.headers); | ||
6 | + console.log('query', req.query); | ||
7 | + console.log('params', req.params); | ||
8 | + console.log('body', req.body); | ||
9 | + | ||
10 | + let response = { | ||
11 | + "resultCode":"20000", | ||
12 | + "resultDescription":"Success", | ||
13 | + "data":{ | ||
14 | + "token_type":"Bearer", | ||
15 | + "expires_in":3600, | ||
16 | + "application_token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhcHBsaWNhdGlvbiI6ImRldl9ndWlkZSIsImlhdCI6MTY2ODU3Njc1NCwiZXhwIjoxNjY4NjYzMTU0fQ.KTJY9xkTZx_fwSNNKMlzbcx23jF-r4efSbZOaoZLVUw" | ||
17 | + } | ||
18 | + } | ||
19 | + | ||
20 | + // let response = { | ||
21 | + // "resultCode":"40109", | ||
22 | + // "resultDescription":"Authentication failed. Invalid username or password" | ||
23 | + // } | ||
24 | + | ||
25 | + res.send(response) | ||
26 | +} | ||
0 | \ No newline at end of file | 27 | \ No newline at end of file |
@@ -0,0 +1,135 @@ | @@ -0,0 +1,135 @@ | ||
1 | +const { v4: uuidv4 } = require('uuid'); | ||
2 | +const crypto = require('crypto'); | ||
3 | + | ||
4 | + | ||
5 | +const dayjs = require('dayjs'); | ||
6 | + | ||
7 | +function generateNumberUUID() { | ||
8 | + let numberUUID = ''; | ||
9 | + while (numberUUID.length < 19) { | ||
10 | + const uuid = uuidv4(); | ||
11 | + const hash = crypto.createHash('sha1').update(uuid).digest('hex'); | ||
12 | + numberUUID += BigInt(`0x${hash}`).toString().padStart(19, '0'); | ||
13 | + } | ||
14 | + return numberUUID.slice(0, 19); | ||
15 | +} | ||
16 | + | ||
17 | +function getRandomInteger(min, max) { | ||
18 | + min = Math.ceil(min); | ||
19 | + max = Math.floor(max); | ||
20 | + return Math.floor(Math.random() * (max - min + 1)) + min; | ||
21 | +} | ||
22 | +function getRandomDate() { | ||
23 | + const now = dayjs(); // Get current date and time | ||
24 | + const randomYear = now.year(); | ||
25 | + const randomMonth = now.month(); | ||
26 | + const randomDay = now.date(); | ||
27 | + const randomHour = Math.floor(Math.random() * 24); // Generate random hour (0-23) | ||
28 | + | ||
29 | + const randomDate = dayjs().year(randomYear).month(randomMonth).date(28).hour(randomHour).minute(0).second(0); | ||
30 | + | ||
31 | + return randomDate; | ||
32 | +} | ||
33 | + | ||
34 | +function getTimeFromDate(date) { | ||
35 | + const time = date.format('HH:mm'); | ||
36 | + return time; | ||
37 | +} | ||
38 | + | ||
39 | + | ||
40 | +class SummaryDailyUsage { | ||
41 | + constructor(ID, LogDate, LogTime, GroupName, Amount, CreatedAt) { | ||
42 | + this.ID = ID; | ||
43 | + this.log_date = LogDate; | ||
44 | + this.log_time = LogTime; | ||
45 | + this.group_name = GroupName; | ||
46 | + this.amount = Amount; | ||
47 | + this.created_at = CreatedAt; | ||
48 | + } | ||
49 | + } | ||
50 | + | ||
51 | + function generateInsertSQL(tableName, data) { | ||
52 | + let insertSQL = ''; | ||
53 | + | ||
54 | + for (let i = 0; i < data.length; i++) { | ||
55 | + const record = data[i]; | ||
56 | + const columns = Object.keys(record); | ||
57 | + const values = Object.values(record).map(formatValue); | ||
58 | + | ||
59 | + const columnsStr = columns.join(', '); | ||
60 | + const valuesStr = values.join(', '); | ||
61 | + | ||
62 | + const sql = `INSERT INTO ${tableName} (${columnsStr}) VALUES (${valuesStr});\n`; | ||
63 | + insertSQL += sql; | ||
64 | + } | ||
65 | + | ||
66 | + return insertSQL; | ||
67 | + } | ||
68 | + | ||
69 | + function formatValue(value) { | ||
70 | + if (typeof value === 'string') { | ||
71 | + if (value.startsWith('TO_TIMESTAMP')) { | ||
72 | + return value | ||
73 | + } | ||
74 | + return `'${value}'`; | ||
75 | + } else if (value instanceof Date) { | ||
76 | + const formattedDate = value.toISOString().slice(0, 19).replace('T', ' '); | ||
77 | + return `TO_TIMESTAMP('${formattedDate}', 'YYYY-MM-DD HH24:MI:SS')`; | ||
78 | + } else { | ||
79 | + return value; | ||
80 | + } | ||
81 | + } | ||
82 | + | ||
83 | +function generateTimeLocationData() { | ||
84 | + const timeLocationData = {}; | ||
85 | + const listGroup = ['ส่วนกลาง','คลินิกราชการ','สำนักงานสาธารณสุขจังหวัด','สำนักงานสาธารณสุขอำเภอ','สำนักงานป้องกันควบคุมโรค','ศูนย์บริการสาธารณสุข','โรงพยาบาล','คลินิกเอกชน','โรงพยาบาลส่งเสริมสุขภาพตำบล'] | ||
86 | + | ||
87 | + for (let hour = 0; hour < 24; hour++) { | ||
88 | + const time = dayjs().hour(hour).minute(0).format('HH:mm'); | ||
89 | + const locations = listGroup; | ||
90 | + | ||
91 | + timeLocationData[time] = locations; | ||
92 | + } | ||
93 | + | ||
94 | + return timeLocationData; | ||
95 | +} | ||
96 | + | ||
97 | +function getRandomValueFromArray(array) { | ||
98 | + const randomIndex = Math.floor(Math.random() * array.length); | ||
99 | + const randomValue = array[randomIndex]; | ||
100 | + return randomValue; | ||
101 | +} | ||
102 | + | ||
103 | +// Example usage: | ||
104 | +const timeLocationData = generateTimeLocationData(); | ||
105 | +let sdu = [] | ||
106 | + | ||
107 | +for (let i = 0; i <= 10; i++) { | ||
108 | + | ||
109 | + let checkUnique = {} | ||
110 | + | ||
111 | + let r = getRandomDate() | ||
112 | + let t = getTimeFromDate(r) | ||
113 | + | ||
114 | + let value = getRandomValueFromArray(timeLocationData[t]) | ||
115 | + | ||
116 | + if(!checkUnique[t+'_'+value]) { | ||
117 | + sdu.push(new SummaryDailyUsage( | ||
118 | + generateNumberUUID(), | ||
119 | + `TO_TIMESTAMP('${r.format('YYYY-MM-DD HH:mm:ss')}', 'YYYY-MM-DD HH24:MI:SS')`, // Replace with your LogDate value | ||
120 | + t, | ||
121 | + value, | ||
122 | + getRandomInteger(1, 100), | ||
123 | + new Date() // Replace with your CreatedAt value | ||
124 | + )) | ||
125 | + } else { | ||
126 | + console.log('is unique') | ||
127 | + } | ||
128 | + | ||
129 | + checkUnique[t+'_'+value] = true | ||
130 | + | ||
131 | +} | ||
132 | + | ||
133 | + | ||
134 | +const insertSQL = generateInsertSQL('ddc.SUM_DAILY_USAGE_BY_GROUP', sdu); | ||
135 | +console.log(insertSQL); | ||
0 | \ No newline at end of file | 136 | \ No newline at end of file |
@@ -0,0 +1,133 @@ | @@ -0,0 +1,133 @@ | ||
1 | +const { v4: uuidv4 } = require('uuid'); | ||
2 | +const crypto = require('crypto'); | ||
3 | + | ||
4 | + | ||
5 | +const dayjs = require('dayjs'); | ||
6 | + | ||
7 | +function generateNumberUUID() { | ||
8 | + let numberUUID = ''; | ||
9 | + while (numberUUID.length < 19) { | ||
10 | + const uuid = uuidv4(); | ||
11 | + const hash = crypto.createHash('sha1').update(uuid).digest('hex'); | ||
12 | + numberUUID += BigInt(`0x${hash}`).toString().padStart(19, '0'); | ||
13 | + } | ||
14 | + return numberUUID.slice(0, 19); | ||
15 | +} | ||
16 | + | ||
17 | +function getRandomInteger(min, max) { | ||
18 | + min = Math.ceil(min); | ||
19 | + max = Math.floor(max); | ||
20 | + return Math.floor(Math.random() * (max - min + 1)) + min; | ||
21 | +} | ||
22 | +function getRandomDate() { | ||
23 | + const now = dayjs(); // Get current date and time | ||
24 | + const randomYear = now.year(); | ||
25 | + const randomMonth = now.month(); | ||
26 | + const randomDay = now.date(); | ||
27 | + // const randomHour = Math.floor(Math.random() * 24); // Generate random hour (0-23) | ||
28 | + | ||
29 | + const randomDate = dayjs().year(randomYear).month(randomMonth).date(28).hour(0).minute(0).second(0); | ||
30 | + | ||
31 | + return randomDate; | ||
32 | +} | ||
33 | + | ||
34 | +function getTimeFromDate(date) { | ||
35 | + const time = date.format('HH:mm'); | ||
36 | + return time; | ||
37 | +} | ||
38 | + | ||
39 | + | ||
40 | +class SummaryDailyUsageMenu { | ||
41 | + constructor(ID, LogDate, Menu, SubMenu, GroupName, Amount, CreatedAt) { | ||
42 | + this.ID = ID; | ||
43 | + this.log_date = LogDate; | ||
44 | + this.menu = Menu; | ||
45 | + this.sub_menu = SubMenu; | ||
46 | + this.group_name = GroupName; | ||
47 | + this.amount = Amount; | ||
48 | + this.created_at = CreatedAt; | ||
49 | + } | ||
50 | + } | ||
51 | + | ||
52 | + function generateInsertSQL(tableName, data) { | ||
53 | + let insertSQL = ''; | ||
54 | + | ||
55 | + for (let i = 0; i < data.length; i++) { | ||
56 | + const record = data[i]; | ||
57 | + const columns = Object.keys(record); | ||
58 | + const values = Object.values(record).map(formatValue); | ||
59 | + | ||
60 | + const columnsStr = columns.join(', '); | ||
61 | + const valuesStr = values.join(', '); | ||
62 | + | ||
63 | + const sql = `INSERT INTO ${tableName} (${columnsStr}) VALUES (${valuesStr});\n`; | ||
64 | + insertSQL += sql; | ||
65 | + } | ||
66 | + | ||
67 | + return insertSQL; | ||
68 | + } | ||
69 | + | ||
70 | + function formatValue(value) { | ||
71 | + if (typeof value === 'string') { | ||
72 | + if (value.startsWith('TO_TIMESTAMP')) { | ||
73 | + return value | ||
74 | + } | ||
75 | + return `'${value}'`; | ||
76 | + } else if (value instanceof Date) { | ||
77 | + const formattedDate = value.toISOString().slice(0, 19).replace('T', ' '); | ||
78 | + return `TO_TIMESTAMP('${formattedDate}', 'YYYY-MM-DD HH24:MI:SS')`; | ||
79 | + } else { | ||
80 | + return value; | ||
81 | + } | ||
82 | + } | ||
83 | + | ||
84 | +function getRandomValueFromArray(array) { | ||
85 | + const randomIndex = Math.floor(Math.random() * array.length); | ||
86 | + const randomValue = array[randomIndex]; | ||
87 | + return randomValue; | ||
88 | +} | ||
89 | + | ||
90 | +// Example usage: | ||
91 | +const listGroup = ['ส่วนกลาง','คลินิกราชการ','สำนักงานสาธารณสุขจังหวัด','สำนักงานสาธารณสุขอำเภอ','สำนักงานป้องกันควบคุมโรค','ศูนย์บริการสาธารณสุข','โรงพยาบาล','คลินิกเอกชน','โรงพยาบาลส่งเสริมสุขภาพตำบล'] | ||
92 | +const menuList = ['แดชบอร์ด', 'การร้องขอข้อมูล', 'ประกาศและการแจ้งเตือน', 'การจัดการบทความ', 'จัดการแชทบอท', 'รายงานการใช้งานระบบ', 'เครื่องมือการจัดการ'] | ||
93 | +const menus = { | ||
94 | + 'แดชบอร์ด': ['กลุ่มโรคติดต่อ'], | ||
95 | + 'การร้องขอข้อมูล': ['รายงาน D506'], | ||
96 | + 'ประกาศและการแจ้งเตือน': ['ประเภทประกาศ', 'จัดการประกาศ', 'จัดการการแจ้งเตือน'], | ||
97 | + 'การจัดการบทความ': ['ประเภทบทความ', 'จัดการบทความสุขภาพ', 'ข้อมูลโรงพยาบาล', 'ข้อมูลผู้ใช้ (User profile)'], | ||
98 | + 'จัดการแชทบอท': ['ประวัติสนทนา', 'หัวข้อการตอบกลับ', 'จัดการข้อความแชทบอท', 'แดชบอร์ดสถิติคำถาม', 'บันทึกการสนทนา (Chat logs)'], | ||
99 | + 'รายงานการใช้งานระบบ': ['รายงานการใช้งานระบบ'], | ||
100 | + 'เครื่องมือการจัดการ': ['จัดการองค์กร', 'จัดการสิทธิ์ผู้ใช้งาน', 'จัดการกลุ่มผู้ใช้งาน', 'จัดการกลุ่มผู้ใช้งาน', 'จัดการผู้ใช้งาน', 'บันทึกการใช้งาน (Logs)'] | ||
101 | +} | ||
102 | +let sdu = [] | ||
103 | + | ||
104 | +for (let i = 0; i <= 10; i++) { | ||
105 | + | ||
106 | + let checkUnique = {} | ||
107 | + | ||
108 | + let r = getRandomDate() | ||
109 | + | ||
110 | + let menu = getRandomValueFromArray(menuList) | ||
111 | + let sub_menu = getRandomValueFromArray(menus[menu]) | ||
112 | + let group = getRandomValueFromArray(listGroup) | ||
113 | + | ||
114 | + if(!checkUnique[menu+'_'+sub_menu+'_'+group]) { | ||
115 | + sdu.push(new SummaryDailyUsageMenu( | ||
116 | + generateNumberUUID(), | ||
117 | + `TO_TIMESTAMP('${r.format('YYYY-MM-DD HH:mm:ss')}', 'YYYY-MM-DD HH24:MI:SS')`, // Replace with your LogDate value | ||
118 | + menu, | ||
119 | + sub_menu, | ||
120 | + group, | ||
121 | + getRandomInteger(1, 100), | ||
122 | + new Date() // Replace with your CreatedAt value | ||
123 | + )) | ||
124 | + } else { | ||
125 | + console.log('is unique') | ||
126 | + } | ||
127 | + | ||
128 | + checkUnique[menu+'_'+sub_menu+'_'+group] = true | ||
129 | + | ||
130 | +} | ||
131 | + | ||
132 | +const insertSQL = generateInsertSQL('ddc.SUM_DAILY_USAGE_BY_GROUP', sdu); | ||
133 | +console.log(insertSQL); | ||
0 | \ No newline at end of file | 134 | \ No newline at end of file |
@@ -0,0 +1,191 @@ | @@ -0,0 +1,191 @@ | ||
1 | +var express = require('express'); | ||
2 | +var { graphqlHTTP } = require('express-graphql'); | ||
3 | +var { buildSchema } = require('graphql'); | ||
4 | + | ||
5 | +// Construct a schema, using GraphQL schema language | ||
6 | +var schema = buildSchema(` | ||
7 | + type apiList { | ||
8 | + api: String | ||
9 | + } | ||
10 | + | ||
11 | + type Query { | ||
12 | + apiList: [apiList] | ||
13 | + } | ||
14 | +`); | ||
15 | + | ||
16 | +// The root provides a resolver function for each API endpoint | ||
17 | +var data = { | ||
18 | + "apiList": [{ | ||
19 | + "api": "hello" | ||
20 | + }], | ||
21 | + "resultCode": "20000", | ||
22 | + "resultDescription": "Success" | ||
23 | +}; | ||
24 | + | ||
25 | +const extensions = ({ | ||
26 | + document, | ||
27 | + variables, | ||
28 | + operationName, | ||
29 | + result, | ||
30 | + context, | ||
31 | + }) => { | ||
32 | + return { | ||
33 | + resultCode: "20000", | ||
34 | + resultDescription: "success" | ||
35 | + }; | ||
36 | + }; | ||
37 | + | ||
38 | +var app = express(); | ||
39 | +// app.use('/graphql', graphqlHTTP({ | ||
40 | +// schema: schema, | ||
41 | +// // rootValue: data, | ||
42 | +// graphiql: true, | ||
43 | +// extensions | ||
44 | +// })); | ||
45 | + | ||
46 | +app.use('/graphql', (req, res) => { | ||
47 | + console.log(req.body) | ||
48 | + res.status(200).send({ | ||
49 | + "data": { | ||
50 | + "apiList": [{ | ||
51 | + "api": { | ||
52 | + "_id": "635a05d5bc7f8b9de2595311", | ||
53 | + "method": "GET", | ||
54 | + "uri": "/api/v1/resource", | ||
55 | + "description": "URI Description", | ||
56 | + "exRequest": { | ||
57 | + "header": [{ | ||
58 | + "paramName": "test1", | ||
59 | + "isRequire": "1", | ||
60 | + "dataType": "String", | ||
61 | + "description": "test1" | ||
62 | + }, { | ||
63 | + "paramName": "test2", | ||
64 | + "isRequire": "0", | ||
65 | + "dataType": "Object", | ||
66 | + "description": "test2.1", | ||
67 | + "paramObj": [{ | ||
68 | + "paramName": "test2.1", | ||
69 | + "isRequire": "0", | ||
70 | + "dataType": "Object", | ||
71 | + "description": "test2.1", | ||
72 | + "paramObjParamObj": [{ | ||
73 | + "paramName": "test2.1.1", | ||
74 | + "isRequire": "0", | ||
75 | + "dataType": "Number", | ||
76 | + "description": "test2.1.1" | ||
77 | + } | ||
78 | + ] | ||
79 | + } | ||
80 | + ] | ||
81 | + } | ||
82 | + ], | ||
83 | + "exHeader": [{ | ||
84 | + "text": "Request Header Example" | ||
85 | + } | ||
86 | + ], | ||
87 | + "body": [{ | ||
88 | + "paramName": "test1", | ||
89 | + "isRequire": "1", | ||
90 | + "dataType": "String", | ||
91 | + "description": "test1" | ||
92 | + }, { | ||
93 | + "paramName": "test2", | ||
94 | + "isRequire": "0", | ||
95 | + "dataType": "String", | ||
96 | + "description": "test2" | ||
97 | + } | ||
98 | + ], | ||
99 | + "exBody": [{ | ||
100 | + "text": "Request Body Example" | ||
101 | + } | ||
102 | + ] | ||
103 | + }, | ||
104 | + "exResponse": { | ||
105 | + "header": [{ | ||
106 | + "paramName": "test1", | ||
107 | + "isRequire": "1", | ||
108 | + "dataType": "String", | ||
109 | + "description": "test1" | ||
110 | + } | ||
111 | + ], | ||
112 | + "exHeader": [{ | ||
113 | + "text": "Response Header Example (Success)" | ||
114 | + } | ||
115 | + ], | ||
116 | + "exHeaderErr": [{ | ||
117 | + "text": "Response Header Example (Error)" | ||
118 | + } | ||
119 | + ], | ||
120 | + "body": [{ | ||
121 | + "paramName": "test1", | ||
122 | + "isRequire": "0", | ||
123 | + "dataType": "String", | ||
124 | + "description": "test1" | ||
125 | + }, { | ||
126 | + "paramName": "test2", | ||
127 | + "isRequire": "1", | ||
128 | + "dataType": "String", | ||
129 | + "description": "test2" | ||
130 | + }, { | ||
131 | + "paramName": "test3", | ||
132 | + "isRequire": "1", | ||
133 | + "dataType": "Object", | ||
134 | + "description": "test3", | ||
135 | + "paramObj": [{ | ||
136 | + "paramName": "test3.1", | ||
137 | + "isRequire": "1", | ||
138 | + "dataType": "Number", | ||
139 | + "description": "test3.1" | ||
140 | + }, { | ||
141 | + "paramName": "test3.2", | ||
142 | + "isRequire": "0", | ||
143 | + "dataType": "Integer", | ||
144 | + "description": "test3.2" | ||
145 | + } | ||
146 | + ] | ||
147 | + } | ||
148 | + ], | ||
149 | + "exBody": [{ | ||
150 | + "text": "Response Body Example (Success)" | ||
151 | + } | ||
152 | + ], | ||
153 | + "exBodyNoData": [{ | ||
154 | + "text": "Response Body Example (Success no data)" | ||
155 | + } | ||
156 | + ], | ||
157 | + "exBodyErr": [{ | ||
158 | + "text": "Response Body Example (Error)" | ||
159 | + } | ||
160 | + ] | ||
161 | + }, | ||
162 | + "customParams": [{ | ||
163 | + "customKey": "Custom Parameter key", | ||
164 | + "customValue": "Custom Parameter value" | ||
165 | + }, { | ||
166 | + "customKey": "Custom Parameter key 2", | ||
167 | + "customValue": "Custom Parameter value 2" | ||
168 | + } | ||
169 | + ] | ||
170 | + }, | ||
171 | + "resource": { | ||
172 | + "_id": "635a05d5bc7f8b51b3595310", | ||
173 | + "resourceName": "Resource Name", | ||
174 | + "resourceOwner": "supps305", | ||
175 | + "systemName": "System Name", | ||
176 | + "status": "Approved" | ||
177 | + }, | ||
178 | + "microservicesDomain": { | ||
179 | + "_id": "635a05d5bc7f8bf46b59530d", | ||
180 | + "microservicesDomainName": "Microservices Domain", | ||
181 | + "description": "Microservices Domain Description" | ||
182 | + } | ||
183 | + } | ||
184 | + ] | ||
185 | + }, | ||
186 | + "resultCode": "40101", | ||
187 | + "resultDescription": "Success" | ||
188 | + }) | ||
189 | +}) | ||
190 | +app.listen(4000); | ||
191 | +console.log('Running a GraphQL API server at http://localhost:4000/graphql'); | ||
0 | \ No newline at end of file | 192 | \ No newline at end of file |
@@ -0,0 +1,27 @@ | @@ -0,0 +1,27 @@ | ||
1 | +-----BEGIN RSA PRIVATE KEY----- | ||
2 | +MIIEpQIBAAKCAQEAnGeADtUHNs2Nm/OCKgOB3JI9vGeCnqQ0BwQtmlzA+OKqeUnH | ||
3 | +I5AluPqUE2D1EVnVOKXsQb1QSHiL9bf19zJ++BR2l9gGgQWqKbd4sQkSrUHM6cri | ||
4 | +YjtvwEpXs5g/iw9cA0Svir4IV0HpMw2L4wx8m+a8MNp24SLVVfyH+tvYEuTpzl87 | ||
5 | +9PizlGFsLWeRvJMldSn3C65Sm0ihg1zl0DRxwduszMPgghdv1glqxQTcqdmIA5bF | ||
6 | +4OSL0Bo4LaJ+EQ2W9lxNGE3GMoqxaJQ0EW470YL0sSAhVqJgMdABYruU8Gf3S3sb | ||
7 | +Zua7bw9E8+cux2FXA8CArLshcmUSyPlZq7osJwIDAQABAoIBAQCVaNIOWTaxBZ/3 | ||
8 | +kKGRnRQbL6DGMGO5RMdmxHkD8wNtPqr3fqE7ueIvWUDHWmICFzz3BpoxGrZs5Ktf | ||
9 | +KkNPx+8+8d1wpK9h5ZVukJQ9Gpu64xbraCLnEDxrBxnMuO5K23tcq+q9sVeqc45g | ||
10 | +dNpjJXSMQdkZGjliTLJbmAgWfpllQbvWGnPavrjMl18B7qqPFfpto6AoLbGNEJ7k | ||
11 | +8NopU6mDeJGdv3nPJFmyzPQWHwddGTRR67QRy97CK/1lgV4/9Sx3F/H+3zp/JCJU | ||
12 | +du8A9cxpvitKIfbLlsageqmiTWYbBfWLm3oZ3BHGeeVSd3mZmS13F321StQ2jQiL | ||
13 | +wypH48bxAoGBAPyZBfYLke0FRst87hRwhbUgADKqr+I+oprNjP+z90osxfMK3f78 | ||
14 | +ikZgMUG9oLI4q2JXY70i4yTGNQmsVbGf5bPeIWVWkXxdCcteN3TVYBxfa3Jy0uyM | ||
15 | +fxsD++Q/kOwzN9X6JG42G2QeN2ceEp1I6LY3CDimPDnbtnlDkNVXdQSVAoGBAJ6C | ||
16 | +y1/hbOk8sTrGvrUGHGYJuD04QEYil18E+jlvwTH9DZeUaCCtyYNbmRyHPlxDRBM5 | ||
17 | +82Zw6y4kqtlMmNTovSDH/A9ieL1ZO/ehEmbcthRkBee7k8WA4T03cNbLF5YIrhh2 | ||
18 | +bBaLQpRneTScp14XEFHlX3z1jn6CphC/MBy3VOLLAoGBAMYZKFCnEEFnQvcxOfHz | ||
19 | +sRi0SRNzQ07WumVXUP30YLreVDvgSOvBmJvKsraRBebfhKEyUfkx1BuyCkRU0Dvm | ||
20 | +X5npWh2Ef8KdoKHKeQl6kc6OktCF9p8nLEO+oxyFMZ3cKSz56Po6Gs8w11hagFSz | ||
21 | +qjXFAQCUdmUVx4xgjcSSuyXlAoGBAJ5R4TQJAjELb7FXJM/GJMM93gk3j+r9TdeY | ||
22 | +Lx0DJCH7sIG/tyk8q1NKP+mgo4afoPTbIuMk0aGq+gJEYTn2pECDvpzXK+VjpWO2 | ||
23 | +O50Fwc8oAEXusq/IBDCSmV/QReSTEuBYF6mEuqFjoEoOVZTC0Igb4335/bMaZye+ | ||
24 | +7h0gd+Z1AoGAAPiUICh6iirA+tdvctZL74AN4JbIHU4AJV/PNhne15Uqx173UUbx | ||
25 | +yM2ccL5d1IWSAu6cKKyInsPGi8FKknAhbMGOgYnFCT9lT6acK20ccIq42aLRI7EA | ||
26 | +KaNtWZXn4zaqfFFAOoKhFmG963rEwpHW/oTSkYiiWAqmeSOQ9ew1jKk= | ||
27 | +-----END RSA PRIVATE KEY----- | ||
0 | \ No newline at end of file | 28 | \ No newline at end of file |
@@ -0,0 +1,9 @@ | @@ -0,0 +1,9 @@ | ||
1 | +-----BEGIN PUBLIC KEY----- | ||
2 | +MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnGeADtUHNs2Nm/OCKgOB | ||
3 | +3JI9vGeCnqQ0BwQtmlzA+OKqeUnHI5AluPqUE2D1EVnVOKXsQb1QSHiL9bf19zJ+ | ||
4 | ++BR2l9gGgQWqKbd4sQkSrUHM6criYjtvwEpXs5g/iw9cA0Svir4IV0HpMw2L4wx8 | ||
5 | +m+a8MNp24SLVVfyH+tvYEuTpzl879PizlGFsLWeRvJMldSn3C65Sm0ihg1zl0DRx | ||
6 | +wduszMPgghdv1glqxQTcqdmIA5bF4OSL0Bo4LaJ+EQ2W9lxNGE3GMoqxaJQ0EW47 | ||
7 | +0YL0sSAhVqJgMdABYruU8Gf3S3sbZua7bw9E8+cux2FXA8CArLshcmUSyPlZq7os | ||
8 | +JwIDAQAB | ||
9 | +-----END PUBLIC KEY----- | ||
0 | \ No newline at end of file | 10 | \ No newline at end of file |
magellan.js
@@ -96,7 +96,23 @@ module.exports.getAccountDestination = async (req, res) => { | @@ -96,7 +96,23 @@ module.exports.getAccountDestination = async (req, res) => { | ||
96 | } | 96 | } |
97 | } | 97 | } |
98 | 98 | ||
99 | - res.status(200).send(response) | 99 | + let response1 = { |
100 | + "DestinationInfo": [], | ||
101 | + "@Metadata": { | ||
102 | + "CurrentPage": 1, | ||
103 | + "TotalPages": 18, | ||
104 | + "Top": 10, | ||
105 | + "TotalCount": 172, | ||
106 | + "HasPrevious": false, | ||
107 | + "HasNext": true | ||
108 | + }, | ||
109 | + "OperationStatus": { | ||
110 | + "Code": "20000", | ||
111 | + "DeveloperMessage": "The requested operation was successfully." | ||
112 | + } | ||
113 | + } | ||
114 | + | ||
115 | + res.status(200).send(response1) | ||
100 | } | 116 | } |
101 | 117 | ||
102 | module.exports.getAccountThings = async (req, res) => { | 118 | module.exports.getAccountThings = async (req, res) => { |
package-lock.json
@@ -14,8 +14,12 @@ | @@ -14,8 +14,12 @@ | ||
14 | "body-parser": "^1.19.0", | 14 | "body-parser": "^1.19.0", |
15 | "connect-multiparty": "^2.2.0", | 15 | "connect-multiparty": "^2.2.0", |
16 | "cors": "^2.8.5", | 16 | "cors": "^2.8.5", |
17 | + "dayjs": "^1.11.7", | ||
17 | "express": "^4.17.1", | 18 | "express": "^4.17.1", |
19 | + "express-graphql": "^0.12.0", | ||
20 | + "graphql": "^15.8.0", | ||
18 | "http": "0.0.0", | 21 | "http": "0.0.0", |
22 | + "jsonwebtoken": "^8.5.1", | ||
19 | "jstoxml": "^1.6.5", | 23 | "jstoxml": "^1.6.5", |
20 | "loadtest": "^5.0.4", | 24 | "loadtest": "^5.0.4", |
21 | "lodash": "^4.17.15", | 25 | "lodash": "^4.17.15", |
@@ -24,6 +28,8 @@ | @@ -24,6 +28,8 @@ | ||
24 | "multiparty": "^4.2.1", | 28 | "multiparty": "^4.2.1", |
25 | "n_": "^2.0.2", | 29 | "n_": "^2.0.2", |
26 | "node-json-config": "0.0.5", | 30 | "node-json-config": "0.0.5", |
31 | + "node-rsa": "^1.1.1", | ||
32 | + "openai": "^3.2.1", | ||
27 | "queue": "^6.0.2", | 33 | "queue": "^6.0.2", |
28 | "run-parallel-limit": "^1.0.6", | 34 | "run-parallel-limit": "^1.0.6", |
29 | "unirest": "^0.6.0" | 35 | "unirest": "^0.6.0" |
@@ -142,6 +148,14 @@ | @@ -142,6 +148,14 @@ | ||
142 | "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.9.1.tgz", | 148 | "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.9.1.tgz", |
143 | "integrity": "sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug==" | 149 | "integrity": "sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug==" |
144 | }, | 150 | }, |
151 | + "node_modules/axios": { | ||
152 | + "version": "0.26.1", | ||
153 | + "resolved": "https://registry.npmjs.org/axios/-/axios-0.26.1.tgz", | ||
154 | + "integrity": "sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==", | ||
155 | + "dependencies": { | ||
156 | + "follow-redirects": "^1.14.8" | ||
157 | + } | ||
158 | + }, | ||
145 | "node_modules/azure": { | 159 | "node_modules/azure": { |
146 | "version": "2.3.1-preview", | 160 | "version": "2.3.1-preview", |
147 | "resolved": "https://registry.npmjs.org/azure/-/azure-2.3.1-preview.tgz", | 161 | "resolved": "https://registry.npmjs.org/azure/-/azure-2.3.1-preview.tgz", |
@@ -1367,6 +1381,11 @@ | @@ -1367,6 +1381,11 @@ | ||
1367 | "node": "*" | 1381 | "node": "*" |
1368 | } | 1382 | } |
1369 | }, | 1383 | }, |
1384 | + "node_modules/dayjs": { | ||
1385 | + "version": "1.11.7", | ||
1386 | + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.7.tgz", | ||
1387 | + "integrity": "sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ==" | ||
1388 | + }, | ||
1370 | "node_modules/debug": { | 1389 | "node_modules/debug": { |
1371 | "version": "2.6.9", | 1390 | "version": "2.6.9", |
1372 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", | 1391 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", |
@@ -1539,6 +1558,109 @@ | @@ -1539,6 +1558,109 @@ | ||
1539 | "node": ">= 0.10.0" | 1558 | "node": ">= 0.10.0" |
1540 | } | 1559 | } |
1541 | }, | 1560 | }, |
1561 | + "node_modules/express-graphql": { | ||
1562 | + "version": "0.12.0", | ||
1563 | + "resolved": "https://registry.npmjs.org/express-graphql/-/express-graphql-0.12.0.tgz", | ||
1564 | + "integrity": "sha512-DwYaJQy0amdy3pgNtiTDuGGM2BLdj+YO2SgbKoLliCfuHv3VVTt7vNG/ZqK2hRYjtYHE2t2KB705EU94mE64zg==", | ||
1565 | + "dependencies": { | ||
1566 | + "accepts": "^1.3.7", | ||
1567 | + "content-type": "^1.0.4", | ||
1568 | + "http-errors": "1.8.0", | ||
1569 | + "raw-body": "^2.4.1" | ||
1570 | + }, | ||
1571 | + "engines": { | ||
1572 | + "node": ">= 10.x" | ||
1573 | + }, | ||
1574 | + "peerDependencies": { | ||
1575 | + "graphql": "^14.7.0 || ^15.3.0" | ||
1576 | + } | ||
1577 | + }, | ||
1578 | + "node_modules/express-graphql/node_modules/bytes": { | ||
1579 | + "version": "3.1.2", | ||
1580 | + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", | ||
1581 | + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", | ||
1582 | + "engines": { | ||
1583 | + "node": ">= 0.8" | ||
1584 | + } | ||
1585 | + }, | ||
1586 | + "node_modules/express-graphql/node_modules/http-errors": { | ||
1587 | + "version": "1.8.0", | ||
1588 | + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.0.tgz", | ||
1589 | + "integrity": "sha512-4I8r0C5JDhT5VkvI47QktDW75rNlGVsUf/8hzjCC/wkWI/jdTRmBb9aI7erSG82r1bjKY3F6k28WnsVxB1C73A==", | ||
1590 | + "dependencies": { | ||
1591 | + "depd": "~1.1.2", | ||
1592 | + "inherits": "2.0.4", | ||
1593 | + "setprototypeof": "1.2.0", | ||
1594 | + "statuses": ">= 1.5.0 < 2", | ||
1595 | + "toidentifier": "1.0.0" | ||
1596 | + }, | ||
1597 | + "engines": { | ||
1598 | + "node": ">= 0.6" | ||
1599 | + } | ||
1600 | + }, | ||
1601 | + "node_modules/express-graphql/node_modules/inherits": { | ||
1602 | + "version": "2.0.4", | ||
1603 | + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", | ||
1604 | + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" | ||
1605 | + }, | ||
1606 | + "node_modules/express-graphql/node_modules/raw-body": { | ||
1607 | + "version": "2.5.1", | ||
1608 | + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", | ||
1609 | + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", | ||
1610 | + "dependencies": { | ||
1611 | + "bytes": "3.1.2", | ||
1612 | + "http-errors": "2.0.0", | ||
1613 | + "iconv-lite": "0.4.24", | ||
1614 | + "unpipe": "1.0.0" | ||
1615 | + }, | ||
1616 | + "engines": { | ||
1617 | + "node": ">= 0.8" | ||
1618 | + } | ||
1619 | + }, | ||
1620 | + "node_modules/express-graphql/node_modules/raw-body/node_modules/depd": { | ||
1621 | + "version": "2.0.0", | ||
1622 | + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", | ||
1623 | + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", | ||
1624 | + "engines": { | ||
1625 | + "node": ">= 0.8" | ||
1626 | + } | ||
1627 | + }, | ||
1628 | + "node_modules/express-graphql/node_modules/raw-body/node_modules/http-errors": { | ||
1629 | + "version": "2.0.0", | ||
1630 | + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", | ||
1631 | + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", | ||
1632 | + "dependencies": { | ||
1633 | + "depd": "2.0.0", | ||
1634 | + "inherits": "2.0.4", | ||
1635 | + "setprototypeof": "1.2.0", | ||
1636 | + "statuses": "2.0.1", | ||
1637 | + "toidentifier": "1.0.1" | ||
1638 | + }, | ||
1639 | + "engines": { | ||
1640 | + "node": ">= 0.8" | ||
1641 | + } | ||
1642 | + }, | ||
1643 | + "node_modules/express-graphql/node_modules/raw-body/node_modules/statuses": { | ||
1644 | + "version": "2.0.1", | ||
1645 | + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", | ||
1646 | + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", | ||
1647 | + "engines": { | ||
1648 | + "node": ">= 0.8" | ||
1649 | + } | ||
1650 | + }, | ||
1651 | + "node_modules/express-graphql/node_modules/raw-body/node_modules/toidentifier": { | ||
1652 | + "version": "1.0.1", | ||
1653 | + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", | ||
1654 | + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", | ||
1655 | + "engines": { | ||
1656 | + "node": ">=0.6" | ||
1657 | + } | ||
1658 | + }, | ||
1659 | + "node_modules/express-graphql/node_modules/setprototypeof": { | ||
1660 | + "version": "1.2.0", | ||
1661 | + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", | ||
1662 | + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" | ||
1663 | + }, | ||
1542 | "node_modules/ext": { | 1664 | "node_modules/ext": { |
1543 | "version": "1.4.0", | 1665 | "version": "1.4.0", |
1544 | "resolved": "https://registry.npmjs.org/ext/-/ext-1.4.0.tgz", | 1666 | "resolved": "https://registry.npmjs.org/ext/-/ext-1.4.0.tgz", |
@@ -1600,6 +1722,25 @@ | @@ -1600,6 +1722,25 @@ | ||
1600 | "node": ">= 0.8" | 1722 | "node": ">= 0.8" |
1601 | } | 1723 | } |
1602 | }, | 1724 | }, |
1725 | + "node_modules/follow-redirects": { | ||
1726 | + "version": "1.15.2", | ||
1727 | + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", | ||
1728 | + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", | ||
1729 | + "funding": [ | ||
1730 | + { | ||
1731 | + "type": "individual", | ||
1732 | + "url": "https://github.com/sponsors/RubenVerborgh" | ||
1733 | + } | ||
1734 | + ], | ||
1735 | + "engines": { | ||
1736 | + "node": ">=4.0" | ||
1737 | + }, | ||
1738 | + "peerDependenciesMeta": { | ||
1739 | + "debug": { | ||
1740 | + "optional": true | ||
1741 | + } | ||
1742 | + } | ||
1743 | + }, | ||
1603 | "node_modules/forever-agent": { | 1744 | "node_modules/forever-agent": { |
1604 | "version": "0.6.1", | 1745 | "version": "0.6.1", |
1605 | "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", | 1746 | "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", |
@@ -1645,6 +1786,14 @@ | @@ -1645,6 +1786,14 @@ | ||
1645 | "assert-plus": "^1.0.0" | 1786 | "assert-plus": "^1.0.0" |
1646 | } | 1787 | } |
1647 | }, | 1788 | }, |
1789 | + "node_modules/graphql": { | ||
1790 | + "version": "15.8.0", | ||
1791 | + "resolved": "https://registry.npmjs.org/graphql/-/graphql-15.8.0.tgz", | ||
1792 | + "integrity": "sha512-5gghUc24tP9HRznNpV2+FIoq3xKkj5dTQqf4v0CpdPbFVwFkWoxOM+o+2OC9ZSvjEMTjfmG9QT+gcvggTwW1zw==", | ||
1793 | + "engines": { | ||
1794 | + "node": ">= 10.x" | ||
1795 | + } | ||
1796 | + }, | ||
1648 | "node_modules/har-schema": { | 1797 | "node_modules/har-schema": { |
1649 | "version": "2.0.0", | 1798 | "version": "2.0.0", |
1650 | "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", | 1799 | "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", |
@@ -1824,6 +1973,32 @@ | @@ -1824,6 +1973,32 @@ | ||
1824 | "node >= 0.2.0" | 1973 | "node >= 0.2.0" |
1825 | ] | 1974 | ] |
1826 | }, | 1975 | }, |
1976 | + "node_modules/jsonwebtoken": { | ||
1977 | + "version": "8.5.1", | ||
1978 | + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz", | ||
1979 | + "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==", | ||
1980 | + "dependencies": { | ||
1981 | + "jws": "^3.2.2", | ||
1982 | + "lodash.includes": "^4.3.0", | ||
1983 | + "lodash.isboolean": "^3.0.3", | ||
1984 | + "lodash.isinteger": "^4.0.4", | ||
1985 | + "lodash.isnumber": "^3.0.3", | ||
1986 | + "lodash.isplainobject": "^4.0.6", | ||
1987 | + "lodash.isstring": "^4.0.1", | ||
1988 | + "lodash.once": "^4.0.0", | ||
1989 | + "ms": "^2.1.1", | ||
1990 | + "semver": "^5.6.0" | ||
1991 | + }, | ||
1992 | + "engines": { | ||
1993 | + "node": ">=4", | ||
1994 | + "npm": ">=1.4.28" | ||
1995 | + } | ||
1996 | + }, | ||
1997 | + "node_modules/jsonwebtoken/node_modules/ms": { | ||
1998 | + "version": "2.1.3", | ||
1999 | + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", | ||
2000 | + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" | ||
2001 | + }, | ||
1827 | "node_modules/jsprim": { | 2002 | "node_modules/jsprim": { |
1828 | "version": "1.4.1", | 2003 | "version": "1.4.1", |
1829 | "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", | 2004 | "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", |
@@ -1893,6 +2068,41 @@ | @@ -1893,6 +2068,41 @@ | ||
1893 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", | 2068 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", |
1894 | "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" | 2069 | "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" |
1895 | }, | 2070 | }, |
2071 | + "node_modules/lodash.includes": { | ||
2072 | + "version": "4.3.0", | ||
2073 | + "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", | ||
2074 | + "integrity": "sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8=" | ||
2075 | + }, | ||
2076 | + "node_modules/lodash.isboolean": { | ||
2077 | + "version": "3.0.3", | ||
2078 | + "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", | ||
2079 | + "integrity": "sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY=" | ||
2080 | + }, | ||
2081 | + "node_modules/lodash.isinteger": { | ||
2082 | + "version": "4.0.4", | ||
2083 | + "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", | ||
2084 | + "integrity": "sha1-YZwK89A/iwTDH1iChAt3sRzWg0M=" | ||
2085 | + }, | ||
2086 | + "node_modules/lodash.isnumber": { | ||
2087 | + "version": "3.0.3", | ||
2088 | + "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", | ||
2089 | + "integrity": "sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w=" | ||
2090 | + }, | ||
2091 | + "node_modules/lodash.isplainobject": { | ||
2092 | + "version": "4.0.6", | ||
2093 | + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", | ||
2094 | + "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=" | ||
2095 | + }, | ||
2096 | + "node_modules/lodash.isstring": { | ||
2097 | + "version": "4.0.1", | ||
2098 | + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", | ||
2099 | + "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=" | ||
2100 | + }, | ||
2101 | + "node_modules/lodash.once": { | ||
2102 | + "version": "4.1.1", | ||
2103 | + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", | ||
2104 | + "integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=" | ||
2105 | + }, | ||
1896 | "node_modules/log": { | 2106 | "node_modules/log": { |
1897 | "version": "1.4.0", | 2107 | "version": "1.4.0", |
1898 | "resolved": "https://registry.npmjs.org/log/-/log-1.4.0.tgz", | 2108 | "resolved": "https://registry.npmjs.org/log/-/log-1.4.0.tgz", |
@@ -2148,6 +2358,14 @@ | @@ -2148,6 +2358,14 @@ | ||
2148 | "resolved": "https://registry.npmjs.org/node-json-config/-/node-json-config-0.0.5.tgz", | 2358 | "resolved": "https://registry.npmjs.org/node-json-config/-/node-json-config-0.0.5.tgz", |
2149 | "integrity": "sha1-Iaaqgx7lV5djQ8ydqNgKnlSo0Oc=" | 2359 | "integrity": "sha1-Iaaqgx7lV5djQ8ydqNgKnlSo0Oc=" |
2150 | }, | 2360 | }, |
2361 | + "node_modules/node-rsa": { | ||
2362 | + "version": "1.1.1", | ||
2363 | + "resolved": "https://registry.npmjs.org/node-rsa/-/node-rsa-1.1.1.tgz", | ||
2364 | + "integrity": "sha512-Jd4cvbJMryN21r5HgxQOpMEqv+ooke/korixNNK3mGqfGJmy0M77WDDzo/05969+OkMy3XW1UuZsSmW9KQm7Fw==", | ||
2365 | + "dependencies": { | ||
2366 | + "asn1": "^0.2.4" | ||
2367 | + } | ||
2368 | + }, | ||
2151 | "node_modules/oauth-sign": { | 2369 | "node_modules/oauth-sign": { |
2152 | "version": "0.9.0", | 2370 | "version": "0.9.0", |
2153 | "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", | 2371 | "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", |
@@ -2175,6 +2393,28 @@ | @@ -2175,6 +2393,28 @@ | ||
2175 | "node": ">= 0.8" | 2393 | "node": ">= 0.8" |
2176 | } | 2394 | } |
2177 | }, | 2395 | }, |
2396 | + "node_modules/openai": { | ||
2397 | + "version": "3.2.1", | ||
2398 | + "resolved": "https://registry.npmjs.org/openai/-/openai-3.2.1.tgz", | ||
2399 | + "integrity": "sha512-762C9BNlJPbjjlWZi4WYK9iM2tAVAv0uUp1UmI34vb0CN5T2mjB/qM6RYBmNKMh/dN9fC+bxqPwWJZUTWW052A==", | ||
2400 | + "dependencies": { | ||
2401 | + "axios": "^0.26.0", | ||
2402 | + "form-data": "^4.0.0" | ||
2403 | + } | ||
2404 | + }, | ||
2405 | + "node_modules/openai/node_modules/form-data": { | ||
2406 | + "version": "4.0.0", | ||
2407 | + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", | ||
2408 | + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", | ||
2409 | + "dependencies": { | ||
2410 | + "asynckit": "^0.4.0", | ||
2411 | + "combined-stream": "^1.0.8", | ||
2412 | + "mime-types": "^2.1.12" | ||
2413 | + }, | ||
2414 | + "engines": { | ||
2415 | + "node": ">= 6" | ||
2416 | + } | ||
2417 | + }, | ||
2178 | "node_modules/parseurl": { | 2418 | "node_modules/parseurl": { |
2179 | "version": "1.3.3", | 2419 | "version": "1.3.3", |
2180 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", | 2420 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", |
@@ -2938,6 +3178,14 @@ | @@ -2938,6 +3178,14 @@ | ||
2938 | "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.9.1.tgz", | 3178 | "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.9.1.tgz", |
2939 | "integrity": "sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug==" | 3179 | "integrity": "sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug==" |
2940 | }, | 3180 | }, |
3181 | + "axios": { | ||
3182 | + "version": "0.26.1", | ||
3183 | + "resolved": "https://registry.npmjs.org/axios/-/axios-0.26.1.tgz", | ||
3184 | + "integrity": "sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==", | ||
3185 | + "requires": { | ||
3186 | + "follow-redirects": "^1.14.8" | ||
3187 | + } | ||
3188 | + }, | ||
2941 | "azure": { | 3189 | "azure": { |
2942 | "version": "2.3.1-preview", | 3190 | "version": "2.3.1-preview", |
2943 | "resolved": "https://registry.npmjs.org/azure/-/azure-2.3.1-preview.tgz", | 3191 | "resolved": "https://registry.npmjs.org/azure/-/azure-2.3.1-preview.tgz", |
@@ -4137,6 +4385,11 @@ | @@ -4137,6 +4385,11 @@ | ||
4137 | "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.2-1.2.3.tgz", | 4385 | "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.2-1.2.3.tgz", |
4138 | "integrity": "sha1-sCIMAt6YYXQztyhRz0fePfLNvuk=" | 4386 | "integrity": "sha1-sCIMAt6YYXQztyhRz0fePfLNvuk=" |
4139 | }, | 4387 | }, |
4388 | + "dayjs": { | ||
4389 | + "version": "1.11.7", | ||
4390 | + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.7.tgz", | ||
4391 | + "integrity": "sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ==" | ||
4392 | + }, | ||
4140 | "debug": { | 4393 | "debug": { |
4141 | "version": "2.6.9", | 4394 | "version": "2.6.9", |
4142 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", | 4395 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", |
@@ -4291,6 +4544,86 @@ | @@ -4291,6 +4544,86 @@ | ||
4291 | "vary": "~1.1.2" | 4544 | "vary": "~1.1.2" |
4292 | } | 4545 | } |
4293 | }, | 4546 | }, |
4547 | + "express-graphql": { | ||
4548 | + "version": "0.12.0", | ||
4549 | + "resolved": "https://registry.npmjs.org/express-graphql/-/express-graphql-0.12.0.tgz", | ||
4550 | + "integrity": "sha512-DwYaJQy0amdy3pgNtiTDuGGM2BLdj+YO2SgbKoLliCfuHv3VVTt7vNG/ZqK2hRYjtYHE2t2KB705EU94mE64zg==", | ||
4551 | + "requires": { | ||
4552 | + "accepts": "^1.3.7", | ||
4553 | + "content-type": "^1.0.4", | ||
4554 | + "http-errors": "1.8.0", | ||
4555 | + "raw-body": "^2.4.1" | ||
4556 | + }, | ||
4557 | + "dependencies": { | ||
4558 | + "bytes": { | ||
4559 | + "version": "3.1.2", | ||
4560 | + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", | ||
4561 | + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==" | ||
4562 | + }, | ||
4563 | + "http-errors": { | ||
4564 | + "version": "1.8.0", | ||
4565 | + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.0.tgz", | ||
4566 | + "integrity": "sha512-4I8r0C5JDhT5VkvI47QktDW75rNlGVsUf/8hzjCC/wkWI/jdTRmBb9aI7erSG82r1bjKY3F6k28WnsVxB1C73A==", | ||
4567 | + "requires": { | ||
4568 | + "depd": "~1.1.2", | ||
4569 | + "inherits": "2.0.4", | ||
4570 | + "setprototypeof": "1.2.0", | ||
4571 | + "statuses": ">= 1.5.0 < 2", | ||
4572 | + "toidentifier": "1.0.0" | ||
4573 | + } | ||
4574 | + }, | ||
4575 | + "inherits": { | ||
4576 | + "version": "2.0.4", | ||
4577 | + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", | ||
4578 | + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" | ||
4579 | + }, | ||
4580 | + "raw-body": { | ||
4581 | + "version": "2.5.1", | ||
4582 | + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", | ||
4583 | + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", | ||
4584 | + "requires": { | ||
4585 | + "bytes": "3.1.2", | ||
4586 | + "http-errors": "2.0.0", | ||
4587 | + "iconv-lite": "0.4.24", | ||
4588 | + "unpipe": "1.0.0" | ||
4589 | + }, | ||
4590 | + "dependencies": { | ||
4591 | + "depd": { | ||
4592 | + "version": "2.0.0", | ||
4593 | + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", | ||
4594 | + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" | ||
4595 | + }, | ||
4596 | + "http-errors": { | ||
4597 | + "version": "2.0.0", | ||
4598 | + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", | ||
4599 | + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", | ||
4600 | + "requires": { | ||
4601 | + "depd": "2.0.0", | ||
4602 | + "inherits": "2.0.4", | ||
4603 | + "setprototypeof": "1.2.0", | ||
4604 | + "statuses": "2.0.1", | ||
4605 | + "toidentifier": "1.0.1" | ||
4606 | + } | ||
4607 | + }, | ||
4608 | + "statuses": { | ||
4609 | + "version": "2.0.1", | ||
4610 | + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", | ||
4611 | + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==" | ||
4612 | + }, | ||
4613 | + "toidentifier": { | ||
4614 | + "version": "1.0.1", | ||
4615 | + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", | ||
4616 | + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" | ||
4617 | + } | ||
4618 | + } | ||
4619 | + }, | ||
4620 | + "setprototypeof": { | ||
4621 | + "version": "1.2.0", | ||
4622 | + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", | ||
4623 | + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" | ||
4624 | + } | ||
4625 | + } | ||
4626 | + }, | ||
4294 | "ext": { | 4627 | "ext": { |
4295 | "version": "1.4.0", | 4628 | "version": "1.4.0", |
4296 | "resolved": "https://registry.npmjs.org/ext/-/ext-1.4.0.tgz", | 4629 | "resolved": "https://registry.npmjs.org/ext/-/ext-1.4.0.tgz", |
@@ -4348,6 +4681,11 @@ | @@ -4348,6 +4681,11 @@ | ||
4348 | "unpipe": "~1.0.0" | 4681 | "unpipe": "~1.0.0" |
4349 | } | 4682 | } |
4350 | }, | 4683 | }, |
4684 | + "follow-redirects": { | ||
4685 | + "version": "1.15.2", | ||
4686 | + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", | ||
4687 | + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==" | ||
4688 | + }, | ||
4351 | "forever-agent": { | 4689 | "forever-agent": { |
4352 | "version": "0.6.1", | 4690 | "version": "0.6.1", |
4353 | "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", | 4691 | "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", |
@@ -4381,6 +4719,11 @@ | @@ -4381,6 +4719,11 @@ | ||
4381 | "assert-plus": "^1.0.0" | 4719 | "assert-plus": "^1.0.0" |
4382 | } | 4720 | } |
4383 | }, | 4721 | }, |
4722 | + "graphql": { | ||
4723 | + "version": "15.8.0", | ||
4724 | + "resolved": "https://registry.npmjs.org/graphql/-/graphql-15.8.0.tgz", | ||
4725 | + "integrity": "sha512-5gghUc24tP9HRznNpV2+FIoq3xKkj5dTQqf4v0CpdPbFVwFkWoxOM+o+2OC9ZSvjEMTjfmG9QT+gcvggTwW1zw==" | ||
4726 | + }, | ||
4384 | "har-schema": { | 4727 | "har-schema": { |
4385 | "version": "2.0.0", | 4728 | "version": "2.0.0", |
4386 | "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", | 4729 | "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", |
@@ -4531,6 +4874,30 @@ | @@ -4531,6 +4874,30 @@ | ||
4531 | "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.2.0.tgz", | 4874 | "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.2.0.tgz", |
4532 | "integrity": "sha1-XAxWhRBxYOcv50ib3eoLRMK8Z70=" | 4875 | "integrity": "sha1-XAxWhRBxYOcv50ib3eoLRMK8Z70=" |
4533 | }, | 4876 | }, |
4877 | + "jsonwebtoken": { | ||
4878 | + "version": "8.5.1", | ||
4879 | + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz", | ||
4880 | + "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==", | ||
4881 | + "requires": { | ||
4882 | + "jws": "^3.2.2", | ||
4883 | + "lodash.includes": "^4.3.0", | ||
4884 | + "lodash.isboolean": "^3.0.3", | ||
4885 | + "lodash.isinteger": "^4.0.4", | ||
4886 | + "lodash.isnumber": "^3.0.3", | ||
4887 | + "lodash.isplainobject": "^4.0.6", | ||
4888 | + "lodash.isstring": "^4.0.1", | ||
4889 | + "lodash.once": "^4.0.0", | ||
4890 | + "ms": "^2.1.1", | ||
4891 | + "semver": "^5.6.0" | ||
4892 | + }, | ||
4893 | + "dependencies": { | ||
4894 | + "ms": { | ||
4895 | + "version": "2.1.3", | ||
4896 | + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", | ||
4897 | + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" | ||
4898 | + } | ||
4899 | + } | ||
4900 | + }, | ||
4534 | "jsprim": { | 4901 | "jsprim": { |
4535 | "version": "1.4.1", | 4902 | "version": "1.4.1", |
4536 | "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", | 4903 | "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", |
@@ -4590,6 +4957,41 @@ | @@ -4590,6 +4957,41 @@ | ||
4590 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", | 4957 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", |
4591 | "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" | 4958 | "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" |
4592 | }, | 4959 | }, |
4960 | + "lodash.includes": { | ||
4961 | + "version": "4.3.0", | ||
4962 | + "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", | ||
4963 | + "integrity": "sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8=" | ||
4964 | + }, | ||
4965 | + "lodash.isboolean": { | ||
4966 | + "version": "3.0.3", | ||
4967 | + "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", | ||
4968 | + "integrity": "sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY=" | ||
4969 | + }, | ||
4970 | + "lodash.isinteger": { | ||
4971 | + "version": "4.0.4", | ||
4972 | + "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", | ||
4973 | + "integrity": "sha1-YZwK89A/iwTDH1iChAt3sRzWg0M=" | ||
4974 | + }, | ||
4975 | + "lodash.isnumber": { | ||
4976 | + "version": "3.0.3", | ||
4977 | + "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", | ||
4978 | + "integrity": "sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w=" | ||
4979 | + }, | ||
4980 | + "lodash.isplainobject": { | ||
4981 | + "version": "4.0.6", | ||
4982 | + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", | ||
4983 | + "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=" | ||
4984 | + }, | ||
4985 | + "lodash.isstring": { | ||
4986 | + "version": "4.0.1", | ||
4987 | + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", | ||
4988 | + "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=" | ||
4989 | + }, | ||
4990 | + "lodash.once": { | ||
4991 | + "version": "4.1.1", | ||
4992 | + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", | ||
4993 | + "integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=" | ||
4994 | + }, | ||
4593 | "log": { | 4995 | "log": { |
4594 | "version": "1.4.0", | 4996 | "version": "1.4.0", |
4595 | "resolved": "https://registry.npmjs.org/log/-/log-1.4.0.tgz", | 4997 | "resolved": "https://registry.npmjs.org/log/-/log-1.4.0.tgz", |
@@ -4796,6 +5198,14 @@ | @@ -4796,6 +5198,14 @@ | ||
4796 | "resolved": "https://registry.npmjs.org/node-json-config/-/node-json-config-0.0.5.tgz", | 5198 | "resolved": "https://registry.npmjs.org/node-json-config/-/node-json-config-0.0.5.tgz", |
4797 | "integrity": "sha1-Iaaqgx7lV5djQ8ydqNgKnlSo0Oc=" | 5199 | "integrity": "sha1-Iaaqgx7lV5djQ8ydqNgKnlSo0Oc=" |
4798 | }, | 5200 | }, |
5201 | + "node-rsa": { | ||
5202 | + "version": "1.1.1", | ||
5203 | + "resolved": "https://registry.npmjs.org/node-rsa/-/node-rsa-1.1.1.tgz", | ||
5204 | + "integrity": "sha512-Jd4cvbJMryN21r5HgxQOpMEqv+ooke/korixNNK3mGqfGJmy0M77WDDzo/05969+OkMy3XW1UuZsSmW9KQm7Fw==", | ||
5205 | + "requires": { | ||
5206 | + "asn1": "^0.2.4" | ||
5207 | + } | ||
5208 | + }, | ||
4799 | "oauth-sign": { | 5209 | "oauth-sign": { |
4800 | "version": "0.9.0", | 5210 | "version": "0.9.0", |
4801 | "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", | 5211 | "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", |
@@ -4814,6 +5224,27 @@ | @@ -4814,6 +5224,27 @@ | ||
4814 | "ee-first": "1.1.1" | 5224 | "ee-first": "1.1.1" |
4815 | } | 5225 | } |
4816 | }, | 5226 | }, |
5227 | + "openai": { | ||
5228 | + "version": "3.2.1", | ||
5229 | + "resolved": "https://registry.npmjs.org/openai/-/openai-3.2.1.tgz", | ||
5230 | + "integrity": "sha512-762C9BNlJPbjjlWZi4WYK9iM2tAVAv0uUp1UmI34vb0CN5T2mjB/qM6RYBmNKMh/dN9fC+bxqPwWJZUTWW052A==", | ||
5231 | + "requires": { | ||
5232 | + "axios": "^0.26.0", | ||
5233 | + "form-data": "^4.0.0" | ||
5234 | + }, | ||
5235 | + "dependencies": { | ||
5236 | + "form-data": { | ||
5237 | + "version": "4.0.0", | ||
5238 | + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", | ||
5239 | + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", | ||
5240 | + "requires": { | ||
5241 | + "asynckit": "^0.4.0", | ||
5242 | + "combined-stream": "^1.0.8", | ||
5243 | + "mime-types": "^2.1.12" | ||
5244 | + } | ||
5245 | + } | ||
5246 | + } | ||
5247 | + }, | ||
4817 | "parseurl": { | 5248 | "parseurl": { |
4818 | "version": "1.3.3", | 5249 | "version": "1.3.3", |
4819 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", | 5250 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", |
package.json
@@ -14,8 +14,12 @@ | @@ -14,8 +14,12 @@ | ||
14 | "body-parser": "^1.19.0", | 14 | "body-parser": "^1.19.0", |
15 | "connect-multiparty": "^2.2.0", | 15 | "connect-multiparty": "^2.2.0", |
16 | "cors": "^2.8.5", | 16 | "cors": "^2.8.5", |
17 | + "dayjs": "^1.11.7", | ||
17 | "express": "^4.17.1", | 18 | "express": "^4.17.1", |
19 | + "express-graphql": "^0.12.0", | ||
20 | + "graphql": "^15.8.0", | ||
18 | "http": "0.0.0", | 21 | "http": "0.0.0", |
22 | + "jsonwebtoken": "^8.5.1", | ||
19 | "jstoxml": "^1.6.5", | 23 | "jstoxml": "^1.6.5", |
20 | "loadtest": "^5.0.4", | 24 | "loadtest": "^5.0.4", |
21 | "lodash": "^4.17.15", | 25 | "lodash": "^4.17.15", |
@@ -24,6 +28,8 @@ | @@ -24,6 +28,8 @@ | ||
24 | "multiparty": "^4.2.1", | 28 | "multiparty": "^4.2.1", |
25 | "n_": "^2.0.2", | 29 | "n_": "^2.0.2", |
26 | "node-json-config": "0.0.5", | 30 | "node-json-config": "0.0.5", |
31 | + "node-rsa": "^1.1.1", | ||
32 | + "openai": "^3.2.1", | ||
27 | "queue": "^6.0.2", | 33 | "queue": "^6.0.2", |
28 | "run-parallel-limit": "^1.0.6", | 34 | "run-parallel-limit": "^1.0.6", |
29 | "unirest": "^0.6.0" | 35 | "unirest": "^0.6.0" |
@@ -0,0 +1,30 @@ | @@ -0,0 +1,30 @@ | ||
1 | +module.exports.getApiForPartner = async (req, res) => { | ||
2 | + console.log('===== GET inquiry Api for partner =====') | ||
3 | + console.log('url', req.originalUrl); | ||
4 | + console.log('headers', req.headers); | ||
5 | + console.log('query', req.query); | ||
6 | + console.log('params', req.params); | ||
7 | + | ||
8 | + let response = { | ||
9 | + "resultCode": "20000", | ||
10 | + "developerMessage": "Success", | ||
11 | + "result": { | ||
12 | + "listOfApi": [ | ||
13 | + "tq/tqTest:00001", | ||
14 | + "pam/test2:10000", | ||
15 | + "pam1/test:01000", | ||
16 | + "tq/tq:11111", | ||
17 | + "resource/test:11111" | ||
18 | + ] | ||
19 | + } | ||
20 | + } | ||
21 | + | ||
22 | + // let response = { | ||
23 | + // "resultCode": "40401", | ||
24 | + // "developerMessage": "Data Not Found", | ||
25 | + // } | ||
26 | + | ||
27 | + res.set('content-type', 'application/json') | ||
28 | + | ||
29 | + res.send(response) | ||
30 | +} | ||
0 | \ No newline at end of file | 31 | \ No newline at end of file |
@@ -0,0 +1,88 @@ | @@ -0,0 +1,88 @@ | ||
1 | +conn = new Mongo('10.1.2.146:27017'); | ||
2 | + | ||
3 | +company = conn.getDB("iot_partner_company"); | ||
4 | +workflow = conn.getDB("iot_partner_workflow"); | ||
5 | + | ||
6 | +companies = company.companies.find() | ||
7 | +worksheets = workflow.worksheets.find().sort( { "createdDate": 1 } ) | ||
8 | + | ||
9 | +let movedFileList = [] | ||
10 | +while ( worksheets.hasNext() ) { | ||
11 | + worksheet = worksheets.next() | ||
12 | + // print(worksheet.supplierRegistration.taxId) | ||
13 | + | ||
14 | + let fileList = [] | ||
15 | + | ||
16 | + // worksheet.files | ||
17 | + for(file of worksheet.files) { | ||
18 | + if(file.fileValue === 'companyFile') { | ||
19 | + if(worksheet.businessAgreement && worksheet.businessAgreement.companyFiles | ||
20 | + && worksheet.businessAgreement.companyFiles.companies | ||
21 | + && !worksheet.businessAgreement.companyFiles.companies.includes(file.fileId)) { | ||
22 | + worksheet.businessAgreement.companyFiles.companies.push(file.fileId) | ||
23 | + } | ||
24 | + fileList.push(file) | ||
25 | + } | ||
26 | + | ||
27 | + if(file.fileValue === 'CompanyProfilePresentation0') { | ||
28 | + if(worksheet.businessAgreement && worksheet.businessAgreement.companyFiles | ||
29 | + && worksheet.businessAgreement.companyFiles.companies | ||
30 | + && !worksheet.businessAgreement.companyFiles.companies.includes(file.fileId)) { | ||
31 | + worksheet.businessAgreement.companyFiles.companies.push(file.fileId) | ||
32 | + } | ||
33 | + fileList.push(file) | ||
34 | + } | ||
35 | + | ||
36 | + if(file.fileValue === 'vatFile') { | ||
37 | + if(worksheet.businessAgreement && worksheet.businessAgreement.companyFiles | ||
38 | + && worksheet.businessAgreement.companyFiles.companies | ||
39 | + && !worksheet.businessAgreement.companyFiles.companies.includes(file.fileId)) { | ||
40 | + worksheet.businessAgreement.companyFiles.companies.push(file.fileId) | ||
41 | + } | ||
42 | + fileList.push(file) | ||
43 | + } | ||
44 | + } | ||
45 | + | ||
46 | + if(worksheet.businessAgreement && worksheet.businessAgreement.companyFiles && worksheet.businessAgreement.companyFiles.companies) { | ||
47 | + workflow.worksheets.update({_id: worksheet._id}, { | ||
48 | + '$set': {'businessAgreement.companyFiles.companies' : worksheet.businessAgreement.companyFiles.companies} | ||
49 | + }) | ||
50 | + } | ||
51 | + | ||
52 | + | ||
53 | + for(i = 0; i < companies.length(); i++) { | ||
54 | + companie = companies[i] | ||
55 | + // print(companie.taxId, worksheet.supplierRegistration.taxId, companie.taxId === worksheet.supplierRegistration.taxId) | ||
56 | + if(companie.taxId === worksheet.supplierRegistration.taxId) { | ||
57 | + if(companie.files && Array.isArray(companie.files) && companie.files.length > 0) { | ||
58 | + for(j = 0; j < fileList.length; j++) { | ||
59 | + let alreadyFileInList = false | ||
60 | + for(k = 0; k < companie.files.length; k++) { | ||
61 | + if(companie.files[k].fileValue === fileList[j].fileValue) { | ||
62 | + alreadyFileInList = true | ||
63 | + break; | ||
64 | + } | ||
65 | + } | ||
66 | + if(!alreadyFileInList) { | ||
67 | + companie.files.push(fileList[j]) | ||
68 | + movedFileList.push(fileList[j]) | ||
69 | + } | ||
70 | + } | ||
71 | + } else { | ||
72 | + companie.files = fileList | ||
73 | + movedFileList.concat(fileList) | ||
74 | + } | ||
75 | + break | ||
76 | + } | ||
77 | + } | ||
78 | +} | ||
79 | + | ||
80 | +for(i = 0; i < companies.length(); i++) { | ||
81 | + company.companies.update({_id: companies[i]._id}, { | ||
82 | + '$set': {files : companies[i].files} | ||
83 | + }) | ||
84 | +} | ||
85 | + | ||
86 | +company.movedFiles.insert({ | ||
87 | + files: movedFileList | ||
88 | +}) |
@@ -0,0 +1,164 @@ | @@ -0,0 +1,164 @@ | ||
1 | +conn = new Mongo('mongodb://sandmongots:Aistsmongo@10.232.155.131:25000/admin'); | ||
2 | +// conn_iot_partner_company = new Mongo('mongodb://serveradm:mypassword@10.138.42.23:8080/iot_partner_company'); | ||
3 | +// conn_iot_partner_workflow = new Mongo('mongodb://serveradm:mypassword@10.138.42.23:8080/iot_partner_workflow'); | ||
4 | + | ||
5 | +company = conn.getDB("iot_partner_company"); | ||
6 | +workflow = conn.getDB("iot_partner_workflow"); | ||
7 | + | ||
8 | +companies = company.companies.find() | ||
9 | + | ||
10 | +// let movedFileList = [] | ||
11 | +issueCompanies = [] | ||
12 | + | ||
13 | +while ( companies.hasNext() ) { | ||
14 | + companie = companies.next() | ||
15 | + | ||
16 | + // print(companie.files) | ||
17 | + let hasVatFile, hasCompanyPresentation, hasCompanyFile | ||
18 | + for (let file of companie.files ) { | ||
19 | + // vatFile, companyPresentaion, companyFile | ||
20 | + // print(file) | ||
21 | + if(file.fileValue === 'vatFile') { | ||
22 | + hasVatFile = true | ||
23 | + } else if(file.fileValue === 'CompanyProfilePresentation0') { | ||
24 | + hasCompanyPresentation = true | ||
25 | + } else if(file.fileValue === 'companyFile') { | ||
26 | + hasCompanyFile = true | ||
27 | + } | ||
28 | + } | ||
29 | + | ||
30 | + if(!hasVatFile || !hasCompanyPresentation || !hasCompanyFile) { | ||
31 | + issueCompanies.push(companie) | ||
32 | + } | ||
33 | +} | ||
34 | + | ||
35 | +// searchWorksheetList = [] | ||
36 | + | ||
37 | +for(let issueComp of issueCompanies) { | ||
38 | + for(let file of issueComp.files) { | ||
39 | + let searchWorksheet = { | ||
40 | + 'files.fileId' : file.fileId, | ||
41 | + 'supplierRegistration.taxId': issueComp.taxId | ||
42 | + } | ||
43 | + | ||
44 | + worksheets = workflow.worksheets.find(searchWorksheet).sort( { "updatedDate": -1 } ) | ||
45 | + // print(worksheets.size() > 0) | ||
46 | + if(worksheets.size() > 0) { | ||
47 | + // print(worksheets) | ||
48 | + let worksheet = worksheets[0] | ||
49 | + | ||
50 | + let expectWorksheet = [] | ||
51 | + let alreadyVatFile, alreadyCompanyProfilePresentation, alreadycompanyFile | ||
52 | + let vFile, presentFile, compFile | ||
53 | + for(let worksheetFile of worksheet.files) { | ||
54 | + if(worksheetFile.fileValue === 'vatFile') { | ||
55 | + if(!vFile) { | ||
56 | + vFile = worksheetFile | ||
57 | + } | ||
58 | + if(worksheetFile.isPass === true) { | ||
59 | + if(!alreadyVatFile) { | ||
60 | + expectWorksheet.push(worksheetFile) | ||
61 | + } | ||
62 | + alreadyVatFile = true | ||
63 | + } | ||
64 | + } else if(worksheetFile.fileValue === 'CompanyProfilePresentation0') { | ||
65 | + if(!presentFile) { | ||
66 | + presentFile = worksheetFile | ||
67 | + } | ||
68 | + if(worksheetFile.isPass === true) { | ||
69 | + if(!alreadyCompanyProfilePresentation) { | ||
70 | + expectWorksheet.push(worksheetFile) | ||
71 | + } | ||
72 | + alreadyCompanyProfilePresentation = true | ||
73 | + } | ||
74 | + } else if(worksheetFile.fileValue === 'companyFile') { | ||
75 | + if(!compFile) { | ||
76 | + compFile = worksheetFile | ||
77 | + } | ||
78 | + if(worksheetFile.isPass === true) { | ||
79 | + if(!alreadycompanyFile) { | ||
80 | + expectWorksheet.push(worksheetFile) | ||
81 | + } | ||
82 | + alreadycompanyFile = true | ||
83 | + } | ||
84 | + } | ||
85 | + } | ||
86 | + | ||
87 | + if(!alreadyVatFile) { | ||
88 | + if(vFile) { | ||
89 | + expectWorksheet.push(vFile) | ||
90 | + } | ||
91 | + } | ||
92 | + | ||
93 | + if(!alreadyCompanyProfilePresentation) { | ||
94 | + if(presentFile) { | ||
95 | + expectWorksheet.push(presentFile) | ||
96 | + } | ||
97 | + } | ||
98 | + | ||
99 | + if(!alreadycompanyFile) { | ||
100 | + if(compFile) { | ||
101 | + expectWorksheet.push(compFile) | ||
102 | + } | ||
103 | + } | ||
104 | + | ||
105 | + newFileList = issueComp.files | ||
106 | + fileNameForMoved = [] | ||
107 | + | ||
108 | + for(let ws of expectWorksheet) { | ||
109 | + hasFile = false | ||
110 | + for(let file2 of issueComp.files) { | ||
111 | + if(ws.fileId === file2.fileId) { | ||
112 | + hasFile = true | ||
113 | + break | ||
114 | + } | ||
115 | + } | ||
116 | + | ||
117 | + if(!hasFile) { | ||
118 | + fileNameForMoved.push(ws.fileName) | ||
119 | + newFileList.push(ws) | ||
120 | + } | ||
121 | + | ||
122 | + hasCompany = false | ||
123 | + for(let wsComp of worksheet.businessAgreement.companyFiles.companies) { | ||
124 | + if(wsComp === ws.fileId) { | ||
125 | + hasCompany = true | ||
126 | + break | ||
127 | + } | ||
128 | + // | ||
129 | + } | ||
130 | + | ||
131 | + if(!hasCompany) { | ||
132 | + worksheet.businessAgreement.companyFiles.companies.push(ws.fileId) | ||
133 | + } | ||
134 | + } | ||
135 | + | ||
136 | + // | ||
137 | + // update company and worksheet // | ||
138 | + print("update company where _id " + issueComp._id) | ||
139 | + printjson({$set: { files: newFileList }}) | ||
140 | + | ||
141 | + company.companies.update({_id: issueComp._id}, { | ||
142 | + '$set': { files: newFileList } | ||
143 | + }) | ||
144 | + | ||
145 | + print("update worksheet where _id " + worksheet._id) | ||
146 | + printjson({$set: { 'businessAgreement.companyFiles.companies': worksheet.businessAgreement.companyFiles.companies }}) | ||
147 | + | ||
148 | + workflow.worksheets.update({_id: worksheet._id}, { | ||
149 | + '$set': {'businessAgreement.companyFiles.companies' : worksheet.businessAgreement.companyFiles.companies} | ||
150 | + }) | ||
151 | + | ||
152 | + printjson(fileNameForMoved) | ||
153 | + | ||
154 | + for(let fileName of fileNameForMoved) { | ||
155 | + company.movedFiles.insert({ | ||
156 | + src: `/workflows/worksheets/${worksheet._id}/files/${fileName}`, | ||
157 | + dest: `/companies/${worksheet.supplierRegistration.taxId}/${fileName}` | ||
158 | + }) | ||
159 | + } | ||
160 | + | ||
161 | + break; | ||
162 | + } | ||
163 | + } | ||
164 | +} |