mirror of
https://gitlab.com/MoonTestUse1/AdministrationItDepartmens.git
synced 2025-08-14 00:25:46 +02:00
54 lines
1.4 KiB
Python
54 lines
1.4 KiB
Python
from __future__ import annotations
|
|
|
|
from abc import ABC, abstractmethod
|
|
from typing import TYPE_CHECKING, Protocol
|
|
|
|
from aiogram.methods import Response, TelegramMethod
|
|
from aiogram.methods.base import TelegramType
|
|
|
|
if TYPE_CHECKING:
|
|
from ...bot import Bot
|
|
|
|
|
|
class NextRequestMiddlewareType(Protocol[TelegramType]): # pragma: no cover
|
|
async def __call__(
|
|
self,
|
|
bot: "Bot",
|
|
method: TelegramMethod[TelegramType],
|
|
) -> Response[TelegramType]:
|
|
pass
|
|
|
|
|
|
class RequestMiddlewareType(Protocol): # pragma: no cover
|
|
async def __call__(
|
|
self,
|
|
make_request: NextRequestMiddlewareType[TelegramType],
|
|
bot: "Bot",
|
|
method: TelegramMethod[TelegramType],
|
|
) -> Response[TelegramType]:
|
|
pass
|
|
|
|
|
|
class BaseRequestMiddleware(ABC):
|
|
"""
|
|
Generic middleware class
|
|
"""
|
|
|
|
@abstractmethod
|
|
async def __call__(
|
|
self,
|
|
make_request: NextRequestMiddlewareType[TelegramType],
|
|
bot: "Bot",
|
|
method: TelegramMethod[TelegramType],
|
|
) -> Response[TelegramType]:
|
|
"""
|
|
Execute middleware
|
|
|
|
:param make_request: Wrapped make_request in middlewares chain
|
|
:param bot: bot for request making
|
|
:param method: Request method (Subclass of :class:`aiogram.methods.base.TelegramMethod`)
|
|
|
|
:return: :class:`aiogram.methods.Response`
|
|
"""
|
|
pass
|