UNPKG

unleash-server

Version:

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

127 lines 5.53 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const permissions_1 = require("../../types/permissions"); const controller_1 = __importDefault(require("../controller")); const anonymise_1 = require("../../util/anonymise"); const create_response_schema_1 = require("../../openapi/util/create-response-schema"); const endpoint_descriptions_1 = require("../../openapi/endpoint-descriptions"); const events_schema_1 = require("../../../lib/openapi/spec/events-schema"); const serialize_dates_1 = require("../../../lib/types/serialize-dates"); const feature_events_schema_1 = require("../../../lib/openapi/spec/feature-events-schema"); const standard_responses_1 = require("../../../lib/openapi/util/standard-responses"); const create_request_schema_1 = require("../../openapi/util/create-request-schema"); const version = 1; class EventController extends controller_1.default { constructor(config, { eventService, openApiService, }) { super(config); this.eventService = eventService; this.flagResolver = config.flagResolver; this.openApiService = openApiService; this.route({ method: 'get', path: '', handler: this.getEvents, permission: permissions_1.ADMIN, middleware: [ openApiService.validPath({ operationId: 'getEvents', tags: ['Events'], responses: { ...(0, standard_responses_1.getStandardResponses)(401), 200: (0, create_response_schema_1.createResponseSchema)('eventsSchema'), }, parameters: [ { name: 'project', description: 'The name of the project whose events you want to retrieve', schema: { type: 'string' }, in: 'query', }, ], ...endpoint_descriptions_1.endpointDescriptions.admin.events, }), ], }); this.route({ method: 'get', path: '/:featureName', handler: this.getEventsForToggle, permission: permissions_1.NONE, middleware: [ openApiService.validPath({ operationId: 'getEventsForToggle', tags: ['Events'], responses: { ...(0, standard_responses_1.getStandardResponses)(401), 200: (0, create_response_schema_1.createResponseSchema)('featureEventsSchema'), }, ...endpoint_descriptions_1.endpointDescriptions.admin.eventsPerFeature, }), ], }); this.route({ method: 'post', path: '/search', handler: this.searchEvents, permission: permissions_1.NONE, middleware: [ openApiService.validPath({ operationId: 'searchEvents', tags: ['Events'], requestBody: (0, create_request_schema_1.createRequestSchema)('searchEventsSchema'), responses: { 200: (0, create_response_schema_1.createResponseSchema)('eventsSchema') }, }), ], }); } maybeAnonymiseEvents(events) { if (this.flagResolver.isEnabled('anonymiseEventLog')) { return events.map((e) => ({ ...e, createdBy: (0, anonymise_1.anonymise)(e.createdBy), })); } return events; } async getEvents(req, res) { const { project } = req.query; let eventList; if (project) { eventList = await this.eventService.searchEvents({ project }); } else { eventList = await this.eventService.getEvents(); } const response = { version, events: (0, serialize_dates_1.serializeDates)(this.maybeAnonymiseEvents(eventList.events)), totalEvents: eventList.totalEvents, }; this.openApiService.respondWithValidation(200, res, events_schema_1.eventsSchema.$id, response); } async getEventsForToggle(req, res) { const feature = req.params.featureName; const eventList = await this.eventService.searchEvents({ feature }); const response = { version, toggleName: feature, events: (0, serialize_dates_1.serializeDates)(this.maybeAnonymiseEvents(eventList.events)), totalEvents: eventList.totalEvents, }; this.openApiService.respondWithValidation(200, res, feature_events_schema_1.featureEventsSchema.$id, response); } async searchEvents(req, res) { const eventList = await this.eventService.searchEvents(req.body); const response = { version, events: (0, serialize_dates_1.serializeDates)(this.maybeAnonymiseEvents(eventList.events)), totalEvents: eventList.totalEvents, }; this.openApiService.respondWithValidation(200, res, feature_events_schema_1.featureEventsSchema.$id, response); } } exports.default = EventController; //# sourceMappingURL=event.js.map