mirror of
https://github.com/Unleash/unleash.git
synced 2025-02-09 00:18:00 +01:00
chore(modernize): Modernize ClientIndexController
This commit is contained in:
parent
461011b894
commit
8913c4fac5
14
lib/routes/client-api/client-api.json
Normal file
14
lib/routes/client-api/client-api.json
Normal file
@ -0,0 +1,14 @@
|
||||
{
|
||||
"version": 2,
|
||||
"links": {
|
||||
"feature-toggles": {
|
||||
"uri": "/api/client/features"
|
||||
},
|
||||
"register": {
|
||||
"uri": "/api/client/register"
|
||||
},
|
||||
"metrics": {
|
||||
"uri": "/api/client/metrics"
|
||||
}
|
||||
}
|
||||
}
|
@ -1,14 +1,10 @@
|
||||
'use strict';
|
||||
|
||||
const { Router } = require('express');
|
||||
const { filter } = require('./util');
|
||||
|
||||
const version = 1;
|
||||
|
||||
const filter = (key, value) => {
|
||||
if (!key || !value) return array => array;
|
||||
return array => array.filter(item => item[key].startsWith(value));
|
||||
};
|
||||
|
||||
class FeatureController {
|
||||
constructor(config) {
|
||||
const router = Router();
|
||||
|
@ -4,27 +4,28 @@ const { Router } = require('express');
|
||||
const FeatureController = require('./feature.js');
|
||||
const metrics = require('./metrics.js');
|
||||
const register = require('./register.js');
|
||||
const clientApi = require('./client-api.json');
|
||||
|
||||
const apiDef = {
|
||||
version: 2,
|
||||
links: {
|
||||
'feature-toggles': { uri: '/api/client/features' },
|
||||
register: { uri: '/api/client/register' },
|
||||
metrics: { uri: '/api/client/metrics' },
|
||||
},
|
||||
};
|
||||
class ClientApi {
|
||||
constructor(config) {
|
||||
const router = Router();
|
||||
this._router = router;
|
||||
|
||||
exports.apiDef = apiDef;
|
||||
router.get('/', this.index);
|
||||
router.use('/features', new FeatureController(config).router());
|
||||
router.use('/metrics', metrics.router(config));
|
||||
router.use('/register', register.router(config));
|
||||
}
|
||||
|
||||
exports.router = config => {
|
||||
const router = Router();
|
||||
router.get('/', (req, res) => {
|
||||
res.json(apiDef);
|
||||
});
|
||||
index(req, res) {
|
||||
res.json(clientApi);
|
||||
}
|
||||
|
||||
router.use('/features', new FeatureController(config).router());
|
||||
router.use('/metrics', metrics.router(config));
|
||||
router.use('/register', register.router(config));
|
||||
router() {
|
||||
return this._router;
|
||||
}
|
||||
}
|
||||
|
||||
return router;
|
||||
};
|
||||
ClientApi.api = clientApi;
|
||||
|
||||
module.exports = ClientApi;
|
||||
|
10
lib/routes/client-api/util.js
Normal file
10
lib/routes/client-api/util.js
Normal file
@ -0,0 +1,10 @@
|
||||
'use strict';
|
||||
|
||||
const filter = (key, value) => {
|
||||
if (!key || !value) return array => array;
|
||||
return array => array.filter(item => item[key].startsWith(value));
|
||||
};
|
||||
|
||||
module.exports = {
|
||||
filter,
|
||||
};
|
@ -7,7 +7,7 @@ require('pkginfo')(module, 'version');
|
||||
const version = module.exports.version;
|
||||
|
||||
const adminApi = require('./admin-api');
|
||||
const clientApi = require('./client-api');
|
||||
const ClientApi = require('./client-api');
|
||||
const FeatureController = require('./client-api/feature.js');
|
||||
|
||||
const HealthCheckController = require('./health-check');
|
||||
@ -25,7 +25,7 @@ class IndexRouter {
|
||||
);
|
||||
router.get('/api', (req, res) => this.api(req, res));
|
||||
router.use('/api/admin', adminApi.router(config));
|
||||
router.use('/api/client', clientApi.router(config));
|
||||
router.use('/api/client', new ClientApi(config).router());
|
||||
|
||||
// legacy support (remove in 4.x)
|
||||
if (config.enableLegacyRoutes) {
|
||||
@ -44,7 +44,7 @@ class IndexRouter {
|
||||
},
|
||||
client: {
|
||||
uri: '/api/client',
|
||||
links: clientApi.apiDef.links,
|
||||
links: ClientApi.api.links,
|
||||
},
|
||||
},
|
||||
});
|
||||
|
Loading…
Reference in New Issue
Block a user