UNPKG

unleash-server

Version:

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

128 lines 5.54 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 create_request_schema_1 = require("../../openapi/util/create-request-schema"); const create_response_schema_1 = require("../../openapi/util/create-response-schema"); const addon_schema_1 = require("../../openapi/spec/addon-schema"); const serialize_dates_1 = require("../../types/serialize-dates"); const addons_schema_1 = require("../../openapi/spec/addons-schema"); const standard_responses_1 = require("../../openapi/util/standard-responses"); const PATH = '/'; class AddonController extends controller_1.default { constructor(config, { addonService, openApiService }) { super(config); this.logger = config.getLogger('/admin-api/addon.ts'); this.addonService = addonService; this.openApiService = openApiService; this.route({ method: 'get', path: '', permission: permissions_1.NONE, handler: this.getAddons, middleware: [ openApiService.validPath({ tags: ['Addons'], operationId: 'getAddons', responses: { 200: (0, create_response_schema_1.createResponseSchema)('addonsSchema'), }, }), ], }); this.route({ method: 'post', path: '', handler: this.createAddon, permission: permissions_1.CREATE_ADDON, middleware: [ openApiService.validPath({ tags: ['Addons'], operationId: 'createAddon', requestBody: (0, create_request_schema_1.createRequestSchema)('addonSchema'), responses: { 200: (0, create_response_schema_1.createResponseSchema)('addonSchema') }, }), ], }); this.route({ method: 'get', path: `${PATH}:id`, handler: this.getAddon, permission: permissions_1.NONE, middleware: [ openApiService.validPath({ tags: ['Addons'], operationId: 'getAddon', responses: { 200: (0, create_response_schema_1.createResponseSchema)('addonSchema') }, }), ], }); this.route({ method: 'put', path: `${PATH}:id`, handler: this.updateAddon, permission: permissions_1.UPDATE_ADDON, middleware: [ openApiService.validPath({ tags: ['Addons'], operationId: 'updateAddon', requestBody: (0, create_request_schema_1.createRequestSchema)('addonSchema'), responses: { 200: (0, create_response_schema_1.createResponseSchema)('addonSchema') }, }), ], }); this.route({ method: 'delete', path: `${PATH}:id`, handler: this.deleteAddon, acceptAnyContentType: true, permission: permissions_1.DELETE_ADDON, middleware: [ openApiService.validPath({ tags: ['Addons'], operationId: 'deleteAddon', responses: { 200: standard_responses_1.emptyResponse }, }), ], }); } async getAddons(req, res) { const addons = await this.addonService.getAddons(); const providers = this.addonService.getProviderDefinitions(); this.openApiService.respondWithValidation(200, res, addons_schema_1.addonsSchema.$id, { addons: (0, serialize_dates_1.serializeDates)(addons), providers: (0, serialize_dates_1.serializeDates)(providers), }); } async getAddon(req, res) { const { id } = req.params; const addon = await this.addonService.getAddon(id); this.openApiService.respondWithValidation(200, res, addon_schema_1.addonSchema.$id, (0, serialize_dates_1.serializeDates)(addon)); } async updateAddon(req, res) { const { id } = req.params; const createdBy = (0, extract_user_1.extractUsername)(req); const data = req.body; const addon = await this.addonService.updateAddon(id, data, createdBy); this.openApiService.respondWithValidation(200, res, addon_schema_1.addonSchema.$id, (0, serialize_dates_1.serializeDates)(addon)); } async createAddon(req, res) { const createdBy = (0, extract_user_1.extractUsername)(req); const data = req.body; const addon = await this.addonService.createAddon(data, createdBy); this.openApiService.respondWithValidation(201, res, addon_schema_1.addonSchema.$id, (0, serialize_dates_1.serializeDates)(addon)); } async deleteAddon(req, res) { const { id } = req.params; const username = (0, extract_user_1.extractUsername)(req); await this.addonService.removeAddon(id, username); res.status(200).end(); } } exports.default = AddonController; module.exports = AddonController; //# sourceMappingURL=addon.js.map