1 /** 2 * Модуль общих абстракций middleware web приложения 3 * 4 * Copyright: (c) 2015-2020, Milofon Project. 5 * License: Subject to the terms of the BSD 3-Clause License, as written in the included LICENSE.md file. 6 * Author: <m.galanin@milofon.pro> Maksim Galanin 7 * Date: 2020-04-30 8 */ 9 10 module dango.web.middleware; 11 12 public 13 { 14 import uniconf.core : UniConf; 15 import vibe.http.server : HTTPServerRequest, HTTPServerResponse, 16 HTTPServerRequestDelegate, HTTPMethod; 17 import dango.inject : DependencyContainer; 18 } 19 20 private 21 { 22 import vibe.http.server; 23 24 import dango.inject : ComponentFactory; 25 } 26 27 28 /// Функция регистрации обработчика 29 alias RegisterHandlerCallback = void delegate(HTTPMethod, string, 30 HTTPServerRequestDelegate) @safe; 31 32 /// Фабрика web middleware 33 alias WebMiddlewareFactory = ComponentFactory!(WebMiddleware, DependencyContainer, UniConf); 34 35 36 /** 37 * Интерфейс для Middleware HTTP 38 * Позволяет производить предобработку входязих запросов 39 */ 40 interface WebMiddleware 41 { 42 /** 43 * Обработка запроса 44 */ 45 void handleRequest(scope HTTPServerRequest req, scope HTTPServerResponse res, 46 HTTPServerRequestDelegate next) @safe; 47 48 /** 49 * Регистрация цепочек маршрутов middleware 50 * На каждый обработчик формируется вызов dg 51 * Params: 52 * dg = Функция регистрации цепочки 53 */ 54 void registerHandlers(HTTPMethod method, string path, RegisterHandlerCallback dg) @safe; 55 } 56