UNPKG

express-gateway

Version:

A microservices API gateway built on top of ExpressJS

44 lines (35 loc) 1.08 kB
const express = require('express'); const logger = require('../logger').policy; const schemas = require('../schemas'); const predefined = require('./predefined'); const conditions = {}; function register ({ name, handler, schema }) { const validate = schemas.register('condition', name, schema); conditions[name] = (req, config) => { const validationResult = validate(config); if (validationResult.isValid) { return handler(req, config); } logger.warn(`warning: condition ${name} config validation failed`, validationResult.error); return null; }; } function init () { predefined.forEach(register); // extending express.request express.request.matchEGCondition = function (conditionConfig) { logger.debug('matchEGCondition for %o', conditionConfig); const func = conditions[conditionConfig.name]; if (!func) { logger.debug(`warning: condition not found for ${conditionConfig.name}`); return null; } return func(this, conditionConfig); }; return { register }; } module.exports = { init };