mirror of
https://github.com/aiogram/aiogram.git
synced 2026-04-08 16:37:47 +00:00
Add middleware for logging outgoing requests (#716)
* add middleware for logging outgoing requests * add middleware description * fix RequestMiddlewareType callable signature * undo `fix`, update signatures in tests * remove repeating code * accept proposed changes Co-authored-by: Alex Root Junior <jroot.junior@gmail.com> * update tests * add patchnote Co-authored-by: Alex Root Junior <jroot.junior@gmail.com>
This commit is contained in:
parent
45a1fb2749
commit
99c99cec78
9 changed files with 137 additions and 12 deletions
|
|
@ -39,6 +39,7 @@ from ...methods import Response, TelegramMethod
|
|||
from ...methods.base import TelegramType
|
||||
from ...types import UNSET, TelegramObject
|
||||
from ..telegram import PRODUCTION, TelegramAPIServer
|
||||
from .middlewares.base import BaseRequestMiddleware
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from ..bot import Bot
|
||||
|
|
@ -48,15 +49,19 @@ _JsonDumps = Callable[..., str]
|
|||
NextRequestMiddlewareType = Callable[
|
||||
["Bot", TelegramMethod[TelegramObject]], Awaitable[Response[TelegramObject]]
|
||||
]
|
||||
RequestMiddlewareType = Callable[
|
||||
[NextRequestMiddlewareType, "Bot", TelegramMethod[TelegramType]],
|
||||
Awaitable[Response[TelegramType]],
|
||||
|
||||
RequestMiddlewareType = Union[
|
||||
BaseRequestMiddleware,
|
||||
Callable[
|
||||
[NextRequestMiddlewareType, "Bot", TelegramMethod[TelegramType]],
|
||||
Awaitable[Response[TelegramType]],
|
||||
],
|
||||
]
|
||||
|
||||
|
||||
class BaseSession(abc.ABC):
|
||||
api: Default[TelegramAPIServer] = Default(PRODUCTION)
|
||||
"""Telegra Bot API URL patterns"""
|
||||
"""Telegram Bot API URL patterns"""
|
||||
json_loads: Default[_JsonLoads] = Default(json.loads)
|
||||
"""JSON loader"""
|
||||
json_dumps: Default[_JsonDumps] = Default(json.dumps)
|
||||
|
|
@ -183,7 +188,7 @@ class BaseSession(abc.ABC):
|
|||
) -> TelegramType:
|
||||
middleware = partial(self.make_request, timeout=timeout)
|
||||
for m in reversed(self.middlewares):
|
||||
middleware = partial(m, make_request=middleware) # type: ignore
|
||||
middleware = partial(m, middleware) # type: ignore
|
||||
return await middleware(bot, method)
|
||||
|
||||
async def __aenter__(self) -> BaseSession:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue