1
0
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:
ivaosthu 2018-11-24 15:45:22 +01:00 committed by Ivar Conradi Østhus
parent 461011b894
commit 8913c4fac5
5 changed files with 48 additions and 27 deletions

View File

@ -0,0 +1,14 @@
{
"version": 2,
"links": {
"feature-toggles": {
"uri": "/api/client/features"
},
"register": {
"uri": "/api/client/register"
},
"metrics": {
"uri": "/api/client/metrics"
}
}
}

View File

@ -1,14 +1,10 @@
'use strict'; 'use strict';
const { Router } = require('express'); const { Router } = require('express');
const { filter } = require('./util');
const version = 1; const version = 1;
const filter = (key, value) => {
if (!key || !value) return array => array;
return array => array.filter(item => item[key].startsWith(value));
};
class FeatureController { class FeatureController {
constructor(config) { constructor(config) {
const router = Router(); const router = Router();

View File

@ -4,27 +4,28 @@ const { Router } = require('express');
const FeatureController = require('./feature.js'); const FeatureController = require('./feature.js');
const metrics = require('./metrics.js'); const metrics = require('./metrics.js');
const register = require('./register.js'); const register = require('./register.js');
const clientApi = require('./client-api.json');
const apiDef = { class ClientApi {
version: 2, constructor(config) {
links: {
'feature-toggles': { uri: '/api/client/features' },
register: { uri: '/api/client/register' },
metrics: { uri: '/api/client/metrics' },
},
};
exports.apiDef = apiDef;
exports.router = config => {
const router = Router(); const router = Router();
router.get('/', (req, res) => { this._router = router;
res.json(apiDef);
});
router.get('/', this.index);
router.use('/features', new FeatureController(config).router()); router.use('/features', new FeatureController(config).router());
router.use('/metrics', metrics.router(config)); router.use('/metrics', metrics.router(config));
router.use('/register', register.router(config)); router.use('/register', register.router(config));
}
return router; index(req, res) {
}; res.json(clientApi);
}
router() {
return this._router;
}
}
ClientApi.api = clientApi;
module.exports = ClientApi;

View 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,
};

View File

@ -7,7 +7,7 @@ require('pkginfo')(module, 'version');
const version = module.exports.version; const version = module.exports.version;
const adminApi = require('./admin-api'); const adminApi = require('./admin-api');
const clientApi = require('./client-api'); const ClientApi = require('./client-api');
const FeatureController = require('./client-api/feature.js'); const FeatureController = require('./client-api/feature.js');
const HealthCheckController = require('./health-check'); const HealthCheckController = require('./health-check');
@ -25,7 +25,7 @@ class IndexRouter {
); );
router.get('/api', (req, res) => this.api(req, res)); router.get('/api', (req, res) => this.api(req, res));
router.use('/api/admin', adminApi.router(config)); 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) // legacy support (remove in 4.x)
if (config.enableLegacyRoutes) { if (config.enableLegacyRoutes) {
@ -44,7 +44,7 @@ class IndexRouter {
}, },
client: { client: {
uri: '/api/client', uri: '/api/client',
links: clientApi.apiDef.links, links: ClientApi.api.links,
}, },
}, },
}); });