UNPKG

unleash-server

Version:

Unleash is an enterprise ready feature toggles service. It provides different strategies for handling feature toggles.

100 lines 4.42 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const controller_1 = __importDefault(require("../controller")); const extract_user_1 = require("../../util/extract-user"); const permissions_1 = require("../../types/permissions"); const features_schema_1 = require("../../openapi/spec/features-schema"); const serialize_dates_1 = require("../../types/serialize-dates"); const create_response_schema_1 = require("../../openapi/util/create-response-schema"); const standard_responses_1 = require("../../openapi/util/standard-responses"); class ArchiveController extends controller_1.default { constructor(config, { featureToggleServiceV2, openApiService, }) { super(config); this.logger = config.getLogger('/admin-api/archive.js'); this.featureService = featureToggleServiceV2; this.openApiService = openApiService; this.route({ method: 'get', path: '/features', handler: this.getArchivedFeatures, permission: permissions_1.NONE, middleware: [ openApiService.validPath({ tags: ['Archive'], operationId: 'getArchivedFeatures', responses: { 200: (0, create_response_schema_1.createResponseSchema)('featuresSchema') }, deprecated: true, }), ], }); this.route({ method: 'get', path: '/features/:projectId', handler: this.getArchivedFeaturesByProjectId, permission: permissions_1.NONE, middleware: [ openApiService.validPath({ tags: ['Archive'], operationId: 'getArchivedFeaturesByProjectId', responses: { 200: (0, create_response_schema_1.createResponseSchema)('featuresSchema') }, deprecated: true, }), ], }); this.route({ method: 'delete', path: '/:featureName', acceptAnyContentType: true, handler: this.deleteFeature, permission: permissions_1.DELETE_FEATURE, middleware: [ openApiService.validPath({ tags: ['Archive'], operationId: 'deleteFeature', responses: { 200: standard_responses_1.emptyResponse }, }), ], }); this.route({ method: 'post', path: '/revive/:featureName', acceptAnyContentType: true, handler: this.reviveFeature, permission: permissions_1.UPDATE_FEATURE, middleware: [ openApiService.validPath({ tags: ['Archive'], operationId: 'reviveFeature', responses: { 200: standard_responses_1.emptyResponse }, }), ], }); } async getArchivedFeatures(req, res) { const features = await this.featureService.getMetadataForAllFeatures(true); this.openApiService.respondWithValidation(200, res, features_schema_1.featuresSchema.$id, { version: 2, features: (0, serialize_dates_1.serializeDates)(features) }); } async getArchivedFeaturesByProjectId(req, res) { const { projectId } = req.params; const features = await this.featureService.getMetadataForAllFeaturesByProjectId(true, projectId); this.openApiService.respondWithValidation(200, res, features_schema_1.featuresSchema.$id, { version: 2, features: (0, serialize_dates_1.serializeDates)(features) }); } async deleteFeature(req, res) { const { featureName } = req.params; const user = (0, extract_user_1.extractUsername)(req); await this.featureService.deleteFeature(featureName, user); res.status(200).end(); } async reviveFeature(req, res) { const userName = (0, extract_user_1.extractUsername)(req); const { featureName } = req.params; await this.featureService.reviveToggle(featureName, userName); res.status(200).end(); } } exports.default = ArchiveController; module.exports = ArchiveController; //# sourceMappingURL=archive.js.map