Добавьте файлы проекта.

This commit is contained in:
2025-12-02 15:57:42 +03:00
parent cf107b62a3
commit 7f69eab545
44 changed files with 1470 additions and 0 deletions

View File

@@ -0,0 +1,34 @@
namespace BotPages.Core
{
/// <summary>
/// Конвейер выполнения middleware и роутера.
/// </summary>
public sealed class Pipeline
{
private readonly IReadOnlyList<IUpdateMiddleware> _middlewares;
private readonly IRouter _router;
/// <summary>
/// Создаёт конвейер обработки обновлений.
/// </summary>
public Pipeline(IEnumerable<IUpdateMiddleware> middlewares, IRouter router)
{
_middlewares = middlewares.ToList();
_router = router;
}
/// <summary>
/// Запускает выполнение конвейера для заданного контекста.
/// </summary>
public Task ExecuteAsync(UpdateContext ctx, CancellationToken ct)
{
var index = 0;
Task Next() => (index < _middlewares.Count)
? _middlewares[index++].InvokeAsync(ctx, Next, ct)
: _router.RouteAsync(ctx, ct);
return Next();
}
}
}