1
0
mirror of https://github.com/Unleash/unleash.git synced 2024-10-18 20:09:08 +02:00
unleash.unleash/src/lib/routes/admin-api/archive.ts

78 lines
2.5 KiB
TypeScript
Raw Normal View History

import { Request, Response } from 'express';
import { handleErrors } from './util';
import { IUnleashConfig } from '../../types/option';
import { IUnleashServices } from '../../types/services';
import { Logger } from '../../logger';
import Controller from '../controller';
import extractUser from '../../extract-user';
import { DELETE_FEATURE, UPDATE_FEATURE } from '../../types/permissions';
import FeatureToggleServiceV2 from '../../services/feature-toggle-service-v2';
export default class ArchiveController extends Controller {
private readonly logger: Logger;
private featureService: FeatureToggleServiceV2;
constructor(
config: IUnleashConfig,
{
featureToggleServiceV2,
}: Pick<IUnleashServices, 'featureToggleServiceV2'>,
) {
super(config);
this.logger = config.getLogger('/admin-api/archive.js');
this.featureService = featureToggleServiceV2;
this.get('/features', this.getArchivedFeatures);
this.delete('/:featureName', this.deleteFeature, DELETE_FEATURE);
2021-04-23 13:29:24 +02:00
this.post(
'/revive/:featureName',
this.reviveFeatureToggle,
UPDATE_FEATURE,
);
}
// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
async getArchivedFeatures(req, res): Promise<void> {
try {
const features = await this.featureService.getMetadataForAllFeatures(
true,
);
res.json({ version: 2, features });
} catch (err) {
handleErrors(res, this.logger, err);
}
}
async deleteFeature(
req: Request<any, { featureName: string }, any, any>,
res: Response,
): Promise<void> {
const { featureName } = req.params;
const user = extractUser(req);
try {
await this.featureService.deleteFeature(featureName, user);
res.status(200).end();
} catch (error) {
handleErrors(res, this.logger, error);
}
}
// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
async reviveFeatureToggle(req, res): Promise<void> {
const userName = extractUser(req);
2021-04-23 13:29:24 +02:00
const { featureName } = req.params;
try {
2021-04-23 13:29:24 +02:00
await this.featureService.reviveToggle(featureName, userName);
res.status(200).end();
} catch (error) {
handleErrors(res, this.logger, error);
}
}
}
module.exports = ArchiveController;