1
0
mirror of https://github.com/Unleash/unleash.git synced 2025-02-14 00:19:16 +01:00

chore(modernize): cleanup api-def

This commit is contained in:
ivaosthu 2018-11-29 21:25:45 +01:00 committed by Ivar Conradi Østhus
parent e4cfd54529
commit 307b68a67e
6 changed files with 75 additions and 58 deletions

View File

@ -0,0 +1,20 @@
{
"version": 2,
"links": {
"feature-toggles": {
"uri": "/api/admin/features"
},
"feature-archive": {
"uri": "/api/admin/archive"
},
"strategies": {
"uri": "/api/admin/strategies"
},
"events": {
"uri": "/api/admin/events"
},
"metrics": {
"uri": "/api/admin/metrics"
}
}
}

View File

@ -8,31 +8,29 @@ const events = require('./event.js');
const strategies = require('./strategy');
const metrics = require('./metrics');
const user = require('./user');
const apiDef = require('./api-def.json');
const apiDef = {
version: 2,
links: {
'feature-toggles': { uri: '/api/admin/features' },
'feature-archive': { uri: '/api/admin/archive' },
strategies: { uri: '/api/admin/strategies' },
events: { uri: '/api/admin/events' },
metrics: { uri: '/api/admin/metrics' },
},
};
exports.apiDef = apiDef;
exports.router = config => {
class AdminApi {
constructor(config) {
const router = Router();
this._router = router;
router.get('/', (req, res) => res.json(apiDef));
router.use('/features', features.router(config));
router.use('/archive', featureArchive.router(config));
router.use('/strategies', strategies.router(config));
router.use('/events', events.router(config));
router.use('/metrics', metrics.router(config));
router.use('/user', user.router(config));
}
return router;
};
index(req, res) {
res.json(apiDef);
}
router() {
return this._router;
}
}
module.exports = AdminApi;

25
lib/routes/api-def.js Normal file
View File

@ -0,0 +1,25 @@
'use strict';
// export module version
require('pkginfo')(module, 'version');
const version = module.exports.version;
const clientApiDef = require('./client-api/api-def.json');
const adminApiDef = require('./admin-api/api-def.json');
const apiDef = {
name: 'unleash-server',
version,
uri: '/api',
links: {
admin: {
uri: '/api/admin',
links: adminApiDef.links,
},
client: {
uri: '/api/client',
links: clientApiDef.links,
},
},
};
module.exports = apiDef;

View File

@ -4,7 +4,7 @@ const { Router } = require('express');
const FeatureController = require('./feature.js');
const MetricsController = require('./metrics.js');
const RegisterController = require('./register.js');
const clientApiSpec = require('./client-api.json');
const apiDef = require('./api-def.json');
class ClientApi {
constructor(config) {
@ -20,7 +20,7 @@ class ClientApi {
}
index(req, res) {
res.json(clientApiSpec);
res.json(apiDef);
}
router() {
@ -28,6 +28,4 @@ class ClientApi {
}
}
ClientApi.api = clientApiSpec;
module.exports = ClientApi;

View File

@ -1,17 +1,13 @@
'use strict';
const { Router } = require('express');
// export module version
require('pkginfo')(module, 'version');
const version = module.exports.version;
const adminApi = require('./admin-api');
const AdminApi = require('./admin-api');
const ClientApi = require('./client-api');
const FeatureController = require('./client-api/feature.js');
const HealthCheckController = require('./health-check');
const BackstageController = require('./backstage.js');
const BackstageCTR = require('./backstage.js');
const api = require('./api-def');
class IndexRouter {
constructor(config) {
@ -19,13 +15,10 @@ class IndexRouter {
this._router = router;
router.use('/health', new HealthCheckController(config).router());
router.use(
'/internal-backstage',
new BackstageController(config).router()
);
router.get('/api', (req, res) => this.api(req, res));
router.use('/api/admin', adminApi.router(config));
router.use('/api/client', new ClientApi(config).router());
router.use('/internal-backstage', new BackstageCTR(config).router());
router.get(api.uri, (req, res) => res.json(api));
router.use(api.links.admin.uri, new AdminApi(config).router());
router.use(api.links.client.uri, new ClientApi(config).router());
// legacy support (remove in 4.x)
if (config.enableLegacyRoutes) {
@ -36,23 +29,6 @@ class IndexRouter {
}
}
api(req, res) {
res.json({
name: 'unleash-server',
version,
links: {
admin: {
uri: '/api/admin',
links: adminApi.apiDef.links,
},
client: {
uri: '/api/client',
links: ClientApi.api.links,
},
},
});
}
router() {
return this._router;
}