Commit ed276114ca934889a7d759ba030bfc39503a82bb
1 parent
0d9032a831
Exists in
master
APISERVER: remote-products
Showing 4 changed files with 178 additions and 2 deletions Side-by-side Diff
api-server/index.js
... | ... | @@ -15,6 +15,7 @@ const matrix = require('../matrix'); |
15 | 15 | const routerConfig = require('./router-config'); |
16 | 16 | const routerMatrix = require('./router-matrix'); |
17 | 17 | const routerProducts = require('./router-products'); |
18 | +const routerRemoteProducts = require('./router-remote-products'); | |
18 | 19 | |
19 | 20 | const app = express(); |
20 | 21 | |
... | ... | @@ -44,3 +45,4 @@ app.use('/apikey/:apikey', needValidApikey); |
44 | 45 | app.use('/apikey/:apikey/config', routerConfig); |
45 | 46 | app.use('/apikey/:apikey/matrix', routerMatrix); |
46 | 47 | app.use('/apikey/:apikey/products', routerProducts); |
48 | +app.use('/apikey/:apikey/remote-products', routerRemoteProducts); |
api-server/router-remote-products.js
... | ... | @@ -0,0 +1,52 @@ |
1 | +"use strict"; | |
2 | + | |
3 | +const express = require('express'); | |
4 | +const sortObj = require('sort-object'); | |
5 | +const naturalCompare = require('string-natural-compare'); | |
6 | + | |
7 | +const config = require('../config'); | |
8 | +const logger = require('../logger'); | |
9 | +const matrix = require('../matrix'); | |
10 | + | |
11 | +const router = express.Router(); | |
12 | +module.exports = router; | |
13 | + | |
14 | +function pageIndex(req, res, next) { | |
15 | + res.json({ | |
16 | + method: '/products', | |
17 | + error: null, | |
18 | + result: config.remote_products | |
19 | + }); | |
20 | +} | |
21 | + | |
22 | +function pageSet(req, res, next) { | |
23 | + if (!req.params.localProduct || !req.params.localProduct.trim() || !req.params.remoteProduct || !req.params.remoteProduct.trim()) { | |
24 | + res.json({ | |
25 | + method: '/remote-products/set', | |
26 | + error: true, | |
27 | + error_msg: 'Usage: /remote-products/set/<LOCAL_PRODUCT>/<REMOTE_PRODUCT>' | |
28 | + }); | |
29 | + | |
30 | + return; | |
31 | + } | |
32 | + | |
33 | + const localProduct = req.params.localProduct.trim().toUpperCase(); | |
34 | + const remoteProduct = req.params.remoteProduct.trim(); | |
35 | + | |
36 | + config.remote_products[localProduct] = remoteProduct; | |
37 | + sortObj(config.remote_products, { | |
38 | + sort: naturalCompare.caseInsensitive | |
39 | + }); | |
40 | + matrix.config_is_dirty = true; | |
41 | + | |
42 | + res.json({ | |
43 | + method: '/remote-products/set', | |
44 | + error: null, | |
45 | + local_product: localProduct, | |
46 | + remote_product: remoteProduct, | |
47 | + remote_products: config.remote_products | |
48 | + }) | |
49 | +} | |
50 | + | |
51 | +router.get('/', pageIndex); | |
52 | +router.get('/set/:localProduct/:remoteProduct'); |
package-lock.json
... | ... | @@ -83,6 +83,11 @@ |
83 | 83 | "integrity": "sha1-NgSLv/TntH4TZkQxbJlmnqWukfE=", |
84 | 84 | "optional": true |
85 | 85 | }, |
86 | + "arr-union": { | |
87 | + "version": "3.1.0", | |
88 | + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", | |
89 | + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=" | |
90 | + }, | |
86 | 91 | "array-flatten": { |
87 | 92 | "version": "1.1.1", |
88 | 93 | "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", |
... | ... | @@ -219,6 +224,23 @@ |
219 | 224 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", |
220 | 225 | "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=" |
221 | 226 | }, |
227 | + "bytewise": { | |
228 | + "version": "1.1.0", | |
229 | + "resolved": "https://registry.npmjs.org/bytewise/-/bytewise-1.1.0.tgz", | |
230 | + "integrity": "sha1-HRPL/3F65xWAlKqIGzXQgbOHJT4=", | |
231 | + "requires": { | |
232 | + "bytewise-core": "1.2.3", | |
233 | + "typewise": "1.0.3" | |
234 | + } | |
235 | + }, | |
236 | + "bytewise-core": { | |
237 | + "version": "1.2.3", | |
238 | + "resolved": "https://registry.npmjs.org/bytewise-core/-/bytewise-core-1.2.3.tgz", | |
239 | + "integrity": "sha1-P7QQx+kVWOsasiqCg0V3qmvWHUI=", | |
240 | + "requires": { | |
241 | + "typewise-core": "1.2.0" | |
242 | + } | |
243 | + }, | |
222 | 244 | "camelcase": { |
223 | 245 | "version": "2.1.1", |
224 | 246 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", |
... | ... | @@ -558,6 +580,14 @@ |
558 | 580 | "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", |
559 | 581 | "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=" |
560 | 582 | }, |
583 | + "extend-shallow": { | |
584 | + "version": "2.0.1", | |
585 | + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", | |
586 | + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", | |
587 | + "requires": { | |
588 | + "is-extendable": "0.1.1" | |
589 | + } | |
590 | + }, | |
561 | 591 | "extglob": { |
562 | 592 | "version": "0.3.2", |
563 | 593 | "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", |
... | ... | @@ -1132,6 +1162,11 @@ |
1132 | 1162 | } |
1133 | 1163 | } |
1134 | 1164 | }, |
1165 | + "get-value": { | |
1166 | + "version": "2.0.6", | |
1167 | + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", | |
1168 | + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=" | |
1169 | + }, | |
1135 | 1170 | "getpass": { |
1136 | 1171 | "version": "0.1.7", |
1137 | 1172 | "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", |
... | ... | @@ -1303,8 +1338,7 @@ |
1303 | 1338 | "is-extendable": { |
1304 | 1339 | "version": "0.1.1", |
1305 | 1340 | "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", |
1306 | - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", | |
1307 | - "optional": true | |
1341 | + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" | |
1308 | 1342 | }, |
1309 | 1343 | "is-extglob": { |
1310 | 1344 | "version": "1.0.0", |
... | ... | @@ -1336,6 +1370,21 @@ |
1336 | 1370 | "kind-of": "3.2.2" |
1337 | 1371 | } |
1338 | 1372 | }, |
1373 | + "is-plain-object": { | |
1374 | + "version": "2.0.4", | |
1375 | + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", | |
1376 | + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", | |
1377 | + "requires": { | |
1378 | + "isobject": "3.0.1" | |
1379 | + }, | |
1380 | + "dependencies": { | |
1381 | + "isobject": { | |
1382 | + "version": "3.0.1", | |
1383 | + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", | |
1384 | + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" | |
1385 | + } | |
1386 | + } | |
1387 | + }, | |
1339 | 1388 | "is-posix-bracket": { |
1340 | 1389 | "version": "0.1.1", |
1341 | 1390 | "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", |
... | ... | @@ -1918,6 +1967,17 @@ |
1918 | 1967 | "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=", |
1919 | 1968 | "optional": true |
1920 | 1969 | }, |
1970 | + "set-value": { | |
1971 | + "version": "0.4.3", | |
1972 | + "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", | |
1973 | + "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", | |
1974 | + "requires": { | |
1975 | + "extend-shallow": "2.0.1", | |
1976 | + "is-extendable": "0.1.1", | |
1977 | + "is-plain-object": "2.0.4", | |
1978 | + "to-object-path": "0.3.0" | |
1979 | + } | |
1980 | + }, | |
1921 | 1981 | "setprototypeof": { |
1922 | 1982 | "version": "1.1.0", |
1923 | 1983 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", |
... | ... | @@ -1948,6 +2008,29 @@ |
1948 | 2008 | "hoek": "2.16.3" |
1949 | 2009 | } |
1950 | 2010 | }, |
2011 | + "sort-asc": { | |
2012 | + "version": "0.2.0", | |
2013 | + "resolved": "https://registry.npmjs.org/sort-asc/-/sort-asc-0.2.0.tgz", | |
2014 | + "integrity": "sha1-AKSelHvCXVEL/eLLuN/9qfUOsvw=" | |
2015 | + }, | |
2016 | + "sort-desc": { | |
2017 | + "version": "0.2.0", | |
2018 | + "resolved": "https://registry.npmjs.org/sort-desc/-/sort-desc-0.2.0.tgz", | |
2019 | + "integrity": "sha1-KAwb2vxld4h87brR7S5BwDeXZkY=" | |
2020 | + }, | |
2021 | + "sort-object": { | |
2022 | + "version": "3.0.2", | |
2023 | + "resolved": "https://registry.npmjs.org/sort-object/-/sort-object-3.0.2.tgz", | |
2024 | + "integrity": "sha1-2vK2k/YR990qIbgrgF5OrCMPdV4=", | |
2025 | + "requires": { | |
2026 | + "bytewise": "1.1.0", | |
2027 | + "get-value": "2.0.6", | |
2028 | + "is-extendable": "0.1.1", | |
2029 | + "sort-asc": "0.2.0", | |
2030 | + "sort-desc": "0.2.0", | |
2031 | + "union-value": "0.2.4" | |
2032 | + } | |
2033 | + }, | |
1951 | 2034 | "sshpk": { |
1952 | 2035 | "version": "1.13.1", |
1953 | 2036 | "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz", |
... | ... | @@ -1985,6 +2068,11 @@ |
1985 | 2068 | "resolved": "https://registry.npmjs.org/strftime/-/strftime-0.10.0.tgz", |
1986 | 2069 | "integrity": "sha1-s/D6QZKVICpaKJ9ta+n0kJphcZM=" |
1987 | 2070 | }, |
2071 | + "string-natural-compare": { | |
2072 | + "version": "2.0.2", | |
2073 | + "resolved": "https://registry.npmjs.org/string-natural-compare/-/string-natural-compare-2.0.2.tgz", | |
2074 | + "integrity": "sha1-xc5OJ4q10SZa5vxVQ1rre3b8sAE=" | |
2075 | + }, | |
1988 | 2076 | "string-width": { |
1989 | 2077 | "version": "1.0.2", |
1990 | 2078 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", |
... | ... | @@ -2017,6 +2105,14 @@ |
2017 | 2105 | "ansi-regex": "2.1.1" |
2018 | 2106 | } |
2019 | 2107 | }, |
2108 | + "to-object-path": { | |
2109 | + "version": "0.3.0", | |
2110 | + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", | |
2111 | + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", | |
2112 | + "requires": { | |
2113 | + "kind-of": "3.2.2" | |
2114 | + } | |
2115 | + }, | |
2020 | 2116 | "tough-cookie": { |
2021 | 2117 | "version": "2.3.2", |
2022 | 2118 | "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.2.tgz", |
... | ... | @@ -2063,6 +2159,19 @@ |
2063 | 2159 | } |
2064 | 2160 | } |
2065 | 2161 | }, |
2162 | + "typewise": { | |
2163 | + "version": "1.0.3", | |
2164 | + "resolved": "https://registry.npmjs.org/typewise/-/typewise-1.0.3.tgz", | |
2165 | + "integrity": "sha1-EGeTZUCvl5N8xdz5kiSG6fooRlE=", | |
2166 | + "requires": { | |
2167 | + "typewise-core": "1.2.0" | |
2168 | + } | |
2169 | + }, | |
2170 | + "typewise-core": { | |
2171 | + "version": "1.2.0", | |
2172 | + "resolved": "https://registry.npmjs.org/typewise-core/-/typewise-core-1.2.0.tgz", | |
2173 | + "integrity": "sha1-l+uRgFx/VdL5QXSPpQ0xXZke8ZU=" | |
2174 | + }, | |
2066 | 2175 | "uid-safe": { |
2067 | 2176 | "version": "2.1.5", |
2068 | 2177 | "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.5.tgz", |
... | ... | @@ -2071,6 +2180,17 @@ |
2071 | 2180 | "random-bytes": "1.0.0" |
2072 | 2181 | } |
2073 | 2182 | }, |
2183 | + "union-value": { | |
2184 | + "version": "0.2.4", | |
2185 | + "resolved": "https://registry.npmjs.org/union-value/-/union-value-0.2.4.tgz", | |
2186 | + "integrity": "sha1-c3UVJ4ZnkFfns3qmdug0aPwCdPA=", | |
2187 | + "requires": { | |
2188 | + "arr-union": "3.1.0", | |
2189 | + "get-value": "2.0.6", | |
2190 | + "is-extendable": "0.1.1", | |
2191 | + "set-value": "0.4.3" | |
2192 | + } | |
2193 | + }, | |
2074 | 2194 | "uniqid": { |
2075 | 2195 | "version": "4.1.1", |
2076 | 2196 | "resolved": "https://registry.npmjs.org/uniqid/-/uniqid-4.1.1.tgz", |
package.json