Skip to content

Архитектурное разделение для webhook-режима#68

Merged
love-apples merged 4 commits intolove-apples:mainfrom
Olegt0rr:feature/separate-webserver
Mar 25, 2026
Merged

Архитектурное разделение для webhook-режима#68
love-apples merged 4 commits intolove-apples:mainfrom
Olegt0rr:feature/separate-webserver

Conversation

@Olegt0rr
Copy link
Copy Markdown
Collaborator

@Olegt0rr Olegt0rr commented Mar 22, 2026

Разрезал архитектурный узел, где maxapi нужен был webserver для работа, а webserver'у нужен был maxapi.

closes #67
closes #66

…а документация по установке и использованию.
Copilot AI review requested due to automatic review settings March 22, 2026 16:31
@codecov
Copy link
Copy Markdown

codecov Bot commented Mar 22, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

PR переносит webhook-режим на отдельные интеграционные модули, чтобы maxapi не зависел от конкретного веб-сервера и не требовал дополнительных пакетов по умолчанию.

Changes:

  • Вынесена общая логика webhook-диспетчеризации в BaseMaxWebhook и добавлены интеграции для aiohttp, FastAPI, Litestar.
  • Dispatcher.handle_webhook() переведён на aiohttp-сервер по умолчанию, добавлен startup() для интеграций; init_serve() помечен deprecated.
  • Обновлены документация/README и добавлен пакет тестов для нового webhook-слоя.

Reviewed changes

Copilot reviewed 20 out of 21 changed files in this pull request and generated 7 comments.

Show a summary per file
File Description
tests/test_webhook_post.py Удалён старый тест под FastAPI-декоратор webhook_post.
tests/test_webhook/test_webhook_post.py Новые тесты FastAPI-интеграции (setup/create_app/secret/run).
tests/test_webhook/test_litestar_webhook.py Новые тесты Litestar-интеграции (handlers/secret/run).
tests/test_webhook/test_handler_crash.py Тесты поведения при падении dp.handle (ожидаемый 500).
tests/test_webhook/test_handle_webhook_route.py Тесты маршрута вебхука переведены на FastAPIMaxWebhook.
tests/test_webhook/test_dispatcher_startup_webhook.py Тест для Dispatcher.startup().
tests/test_webhook/test_dispatcher_handle_webhook.py Тесты делегирования Dispatcher.handle_webhook() в aiohttp webhook runner.
tests/test_webhook/test_aiohttp_webhook.py Новые тесты aiohttp-интеграции (routes/secret/run).
tests/test_webhook/init.py Инициализация пакета webhook-тестов.
pyproject.toml Переразметка optional extras: fastapi, litestar; добавлены в dev-group.
maxapi/webhook/base.py Общая базовая логика webhook: startup + dispatch + дефолты.
maxapi/webhook/aiohttp.py Реализация webhook сервера на aiohttp (setup/create_app/run).
maxapi/webhook/fastapi.py Интеграция с FastAPI (lifespan/setup/create_app/run, secret dependency).
maxapi/webhook/litestar.py Интеграция с Litestar (handler/guards/create_app/run).
maxapi/webhook/init.py Экспорт базовых сущностей webhook-подсистемы.
maxapi/dispatcher.py Удалена FastAPI/uvicorn-связка, добавлены startup(), новый handle_webhook() на aiohttp, init_serve() deprecated.
docs/index.md Обновлены инструкции установки/использования webhook и extras.
docs/guides/webhook_vs_polling.md Обновлён пример host; частично обновлено описание параметров.
docs/guides/installation.md Обновлён раздел установки: aiohttp “из коробки”, extras для ASGI.
docs/examples.md Переписан webhook low-level пример под FastAPIMaxWebhook.
README.md Обновлён раздел webhook (aiohttp по умолчанию + extras).
Comments suppressed due to low confidence (1)

README.md:139

  • В README нарушена разметка блока кода: после blockquote добавлен повторный if __name__ == '__main__': ... и лишняя закрывающая тройная кавычка. Сейчас файл содержит дублирующийся запуск и незакрытый/лишний fenced code block, из-за чего Markdown будет рендериться некорректно. Уберите дубликат и поправьте границы ```.
> **Хотите использовать FastAPI или Litestar вместо aiohttp?**
> Установите нужную опциональную зависимость:
> ```bash
> pip install maxapi[fastapi]   # FastAPI + uvicorn
> pip install maxapi[litestar]  # Litestar + uvicorn
> ```
if __name__ == '__main__':
    asyncio.run(main())
</details>



---

💡 <a href="/love-apples/maxapi/new/main?filename=.github/instructions/*.instructions.md" class="Link--inTextBlock" target="_blank" rel="noopener noreferrer">Add Copilot custom instructions</a> for smarter, more guided reviews. <a href="https://docs.github.com/en/copilot/customizing-copilot/adding-repository-custom-instructions-for-github-copilot" class="Link--inTextBlock" target="_blank" rel="noopener noreferrer">Learn how to get started</a>.

Comment thread tests/test_webhook/test_webhook_post.py
Comment thread tests/test_webhook/test_dispatcher_startup_webhook.py Outdated
Comment thread maxapi/dispatcher.py
Comment thread maxapi/dispatcher.py
Comment thread maxapi/webhook/base.py
Comment thread pyproject.toml
Comment thread docs/guides/webhook_vs_polling.md Outdated
@love-apples love-apples merged commit 512d211 into love-apples:main Mar 25, 2026
13 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

3 participants