'use strict'; const logger = require('../logger'); const eventType = require('../event-type'); const ValidationError = require('../error/validation-error'); const validateRequest = require('../error/validate-request'); const handleErrors = (req, res, error) => { switch (error.constructor) { case ValidationError: return res .status(400) .json(req.validationErrors()) .end(); default: logger.error('Server failed executing request', error); return res .status(500) .end(); } }; module.exports = function (app, config) { const { featureToggleStore, eventStore } = config.stores; app.get('/archive/features', (req, res) => { featureToggleStore.getArchivedFeatures().then(archivedFeatures => { res.json({ features: archivedFeatures }); }); }); app.post('/archive/revive', (req, res) => { req.checkBody('name', 'Name is required').notEmpty(); validateRequest(req) .then(() => eventStore.store({ type: eventType.featureRevived, createdBy: req.connection.remoteAddress, data: req.body, })) .then(() => res.status(200).end()) .catch(error => handleErrors(req, res, error)); }); };