mirror of
https://github.com/Unleash/unleash.git
synced 2025-02-28 00:17:12 +01:00
chore(modernize): cleanup api-def
This commit is contained in:
parent
4ea00e4b7e
commit
541ef376d9
20
lib/routes/admin-api/api-def.json
Normal file
20
lib/routes/admin-api/api-def.json
Normal 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"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -8,31 +8,29 @@ const events = require('./event.js');
|
|||||||
const strategies = require('./strategy');
|
const strategies = require('./strategy');
|
||||||
const metrics = require('./metrics');
|
const metrics = require('./metrics');
|
||||||
const user = require('./user');
|
const user = require('./user');
|
||||||
|
const apiDef = require('./api-def.json');
|
||||||
|
|
||||||
const apiDef = {
|
class AdminApi {
|
||||||
version: 2,
|
constructor(config) {
|
||||||
links: {
|
const router = Router();
|
||||||
'feature-toggles': { uri: '/api/admin/features' },
|
this._router = router;
|
||||||
'feature-archive': { uri: '/api/admin/archive' },
|
|
||||||
strategies: { uri: '/api/admin/strategies' },
|
|
||||||
events: { uri: '/api/admin/events' },
|
|
||||||
metrics: { uri: '/api/admin/metrics' },
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
exports.apiDef = apiDef;
|
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));
|
||||||
|
}
|
||||||
|
|
||||||
exports.router = config => {
|
index(req, res) {
|
||||||
const router = Router();
|
res.json(apiDef);
|
||||||
|
}
|
||||||
|
|
||||||
router.get('/', (req, res) => res.json(apiDef));
|
router() {
|
||||||
|
return this._router;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
router.use('/features', features.router(config));
|
module.exports = AdminApi;
|
||||||
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;
|
|
||||||
};
|
|
||||||
|
25
lib/routes/api-def.js
Normal file
25
lib/routes/api-def.js
Normal 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;
|
@ -4,7 +4,7 @@ const { Router } = require('express');
|
|||||||
const FeatureController = require('./feature.js');
|
const FeatureController = require('./feature.js');
|
||||||
const MetricsController = require('./metrics.js');
|
const MetricsController = require('./metrics.js');
|
||||||
const RegisterController = require('./register.js');
|
const RegisterController = require('./register.js');
|
||||||
const clientApiSpec = require('./client-api.json');
|
const apiDef = require('./api-def.json');
|
||||||
|
|
||||||
class ClientApi {
|
class ClientApi {
|
||||||
constructor(config) {
|
constructor(config) {
|
||||||
@ -20,7 +20,7 @@ class ClientApi {
|
|||||||
}
|
}
|
||||||
|
|
||||||
index(req, res) {
|
index(req, res) {
|
||||||
res.json(clientApiSpec);
|
res.json(apiDef);
|
||||||
}
|
}
|
||||||
|
|
||||||
router() {
|
router() {
|
||||||
@ -28,6 +28,4 @@ class ClientApi {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ClientApi.api = clientApiSpec;
|
|
||||||
|
|
||||||
module.exports = ClientApi;
|
module.exports = ClientApi;
|
||||||
|
@ -1,17 +1,13 @@
|
|||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
const { Router } = require('express');
|
const { Router } = require('express');
|
||||||
// export module version
|
const AdminApi = require('./admin-api');
|
||||||
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 FeatureController = require('./client-api/feature.js');
|
||||||
|
|
||||||
const HealthCheckController = require('./health-check');
|
const HealthCheckController = require('./health-check');
|
||||||
const BackstageController = require('./backstage.js');
|
const BackstageCTR = require('./backstage.js');
|
||||||
|
const api = require('./api-def');
|
||||||
|
|
||||||
class IndexRouter {
|
class IndexRouter {
|
||||||
constructor(config) {
|
constructor(config) {
|
||||||
@ -19,13 +15,10 @@ class IndexRouter {
|
|||||||
this._router = router;
|
this._router = router;
|
||||||
|
|
||||||
router.use('/health', new HealthCheckController(config).router());
|
router.use('/health', new HealthCheckController(config).router());
|
||||||
router.use(
|
router.use('/internal-backstage', new BackstageCTR(config).router());
|
||||||
'/internal-backstage',
|
router.get(api.uri, (req, res) => res.json(api));
|
||||||
new BackstageController(config).router()
|
router.use(api.links.admin.uri, new AdminApi(config).router());
|
||||||
);
|
router.use(api.links.client.uri, new ClientApi(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());
|
|
||||||
|
|
||||||
// legacy support (remove in 4.x)
|
// legacy support (remove in 4.x)
|
||||||
if (config.enableLegacyRoutes) {
|
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() {
|
router() {
|
||||||
return this._router;
|
return this._router;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user