mirror of
https://github.com/aiogram/aiogram.git
synced 2026-04-08 16:37:47 +00:00
✨ Ability to update data dict from middlewares returns
This commit is contained in:
parent
4e82865f45
commit
433fe19bc6
2 changed files with 15 additions and 5 deletions
|
|
@ -98,7 +98,11 @@ class Handler:
|
|||
|
||||
if self.middleware_key:
|
||||
try:
|
||||
await self.dispatcher.middleware.trigger(f"pre_process_{self.middleware_key}", args + (data,))
|
||||
data.update(
|
||||
await self.dispatcher.middleware.trigger(
|
||||
f"pre_process_{self.middleware_key}", args + (data,)
|
||||
) or {}
|
||||
)
|
||||
except CancelHandler: # Allow to cancel current event
|
||||
return results
|
||||
|
||||
|
|
@ -112,7 +116,11 @@ class Handler:
|
|||
ctx_token = current_handler.set(handler_obj.handler)
|
||||
try:
|
||||
if self.middleware_key:
|
||||
await self.dispatcher.middleware.trigger(f"process_{self.middleware_key}", args + (data,))
|
||||
data.update(
|
||||
await self.dispatcher.middleware.trigger(
|
||||
f"process_{self.middleware_key}", args + (data,)
|
||||
) or {}
|
||||
)
|
||||
partial_data = _check_spec(handler_obj.spec, data)
|
||||
response = await handler_obj.handler(*args, **partial_data)
|
||||
if response is not None:
|
||||
|
|
|
|||
|
|
@ -41,7 +41,7 @@ class MiddlewareManager:
|
|||
log.debug(f"Loaded middleware '{middleware.__class__.__name__}'")
|
||||
return middleware
|
||||
|
||||
async def trigger(self, action: str, args: typing.Iterable):
|
||||
async def trigger(self, action: str, args: typing.Iterable) -> dict:
|
||||
"""
|
||||
Call action to middlewares with args lilt.
|
||||
|
||||
|
|
@ -49,8 +49,10 @@ class MiddlewareManager:
|
|||
:param args:
|
||||
:return:
|
||||
"""
|
||||
data = {}
|
||||
for app in self.applications:
|
||||
await app.trigger(action, args)
|
||||
data.update(await app.trigger(action, args) or {})
|
||||
return data
|
||||
|
||||
|
||||
class BaseMiddleware:
|
||||
|
|
@ -103,7 +105,7 @@ class BaseMiddleware:
|
|||
handler = getattr(self, handler_name, None)
|
||||
if not handler:
|
||||
return None
|
||||
await handler(*args)
|
||||
return await handler(*args)
|
||||
|
||||
|
||||
class LifetimeControllerMiddleware(BaseMiddleware):
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue