UNPKG

@microfleet/core

Version:
43 lines (31 loc) 1.34 kB
import Bluebird = require('bluebird') import { ArgumentError, NotFoundError, HttpStatusError } from 'common-errors' import _debug = require('debug') import is = require('is') import { Microfleet, RouterPlugin } from '../../../' import { ServiceRequest } from '../../../types' import moduleLifecycle from './lifecycle' const debug = _debug('mservice:router:module:request') function getAction(this: Microfleet & RouterPlugin, route: string, request: ServiceRequest) { debug('handler for module "request"') const { transport } = request if (is.undefined(transport)) { return Bluebird.reject(new ArgumentError('"request" must have property "transport"')) } const action = this.router.routes[transport][route] if (!is.fn(action)) { return Bluebird.reject(new NotFoundError(`route "${route}" not found`)) } request.action = action request.route = route const { maintenanceMode } = this.config if (maintenanceMode && !action.readonly) { return Bluebird.reject(new HttpStatusError(418, 'Server Maintenance')) } return request } function requestHandler(this: Microfleet & RouterPlugin, route: string, request: ServiceRequest): Bluebird<any> { const { extensions } = this.router return moduleLifecycle('request', getAction, extensions, [route, request], this) } export default requestHandler