From 334f23e0e5899ed401f712c9e4e265a1d86af3f4 Mon Sep 17 00:00:00 2001 From: Alex Root Junior Date: Fri, 21 Jul 2017 18:20:49 +0300 Subject: [PATCH] Provide middlewares. --- aiogram/dispatcher/middlewares.py | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 aiogram/dispatcher/middlewares.py diff --git a/aiogram/dispatcher/middlewares.py b/aiogram/dispatcher/middlewares.py new file mode 100644 index 00000000..ed546cdf --- /dev/null +++ b/aiogram/dispatcher/middlewares.py @@ -0,0 +1,24 @@ +from aiogram.dispatcher import Handler +from aiogram.dispatcher.handler import SkipHandler + + +class Middleware: + def __init__(self, handler, filters=None): + self.handler: Handler = handler + self.configure_handler(filters) + + def configure_handler(self, filters): + if filters is None: + filters = [] + self.handler.register(self._handle_event, filters, 0) + + async def handle(self, *args, **kwargs): + raise NotImplementedError + + async def check_data(self, *args, **kwargs): + return True + + async def _handle_event(self, *args, **kwargs): + if await self.check_data(*args, **kwargs): + await self.handle(*args, **kwargs) + raise SkipHandler()