From 334f23e0e5899ed401f712c9e4e265a1d86af3f4 Mon Sep 17 00:00:00 2001 From: Alex Root Junior Date: Fri, 21 Jul 2017 18:20:49 +0300 Subject: [PATCH 1/2] 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() From 32096ca54bd111e971d0de35f58dfc9c9f8da437 Mon Sep 17 00:00:00 2001 From: Alex Root Junior Date: Tue, 25 Jul 2017 01:09:21 +0300 Subject: [PATCH 2/2] Middlewared. Use relative imports. --- aiogram/dispatcher/middlewares.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/aiogram/dispatcher/middlewares.py b/aiogram/dispatcher/middlewares.py index ed546cdf..6c7eafb8 100644 --- a/aiogram/dispatcher/middlewares.py +++ b/aiogram/dispatcher/middlewares.py @@ -1,5 +1,5 @@ -from aiogram.dispatcher import Handler -from aiogram.dispatcher.handler import SkipHandler +from . import Handler +from .handler import SkipHandler class Middleware: