Files
forkmessager/backend/src/Docs/klipy_module_documentation.md
Халимов Рустам b399649cfd Модуль связей и Klipy
2026-03-27 01:22:20 +03:00

4.7 KiB
Raw Blame History

Интеграция Klipy (Klipy Integration Module) — Knot Messager

Модуль Klipy обеспечивает интеграцию с внешним сервисом короткого видеоконтента и GIF. Он позволяет пользователям добавлять динамический контент в свои истории и сообщения, в то время как администратор сохраняет полный контроль над доступом к сервису.


🛠 Архитектура интеграции

Интеграция построена на принципах Loose Coupling (слабой связности):

  1. Abstractions: Интерфейс IKlipyClient находится в модуле Stories.Application, что позволяет бизнес-логике не зависеть от конкретной реализации HTTP-вызовов.
  2. Infrastructure: Реализация KlipyClient в Stories.Infrastructure отвечает за взаимодействие с внешним API api.klipy.co.
  3. Cross-Module Configuration: Настройки интеграции хранятся в модуле Admin, но считываются модулем Stories через ISettingsService.

⚙ Настройка через Admin Module

Администратор управляет интеграцией через панель управления (SystemSettingsDto.Klipy):

  • Enabled: Глобальный переключатель активности. Если выключено — создание контента типа Klipy блокируется на уровне API.
  • ApiKey: Уникальный токен доступа к API Klipy.
  • AppName: Имя приложения для идентификации в системе Klipy.

🧪 Валидация и Тестирование (Test Connectivity)

Для обеспечения надежности в AdminEndpoints реализована ручка проверки:

  • EndPoint: POST /api/admin/settings/test-klipy
  • Механизм: Сервер выполняет реальный сетевой запрос к эндпоинту trending API Klipy с использованием настроенного ключа.
  • Результат: Возвращает 200 OK, если ключ валиден и сервис доступен, или ошибку Klipy.AuthFailed, если ключ не прошел авторизацию.

📽 Использование в Историях (Stories)

Когда пользователь создает историю типа klipy:

  1. Система проверяет parsedType == StoryType.Klipy.
  2. Выполняется запрос к SettingsService.
  3. Если Klipy.Enabled == false, возвращается ошибка Stories.KlipyDisabled.
  4. Если активно — MediaUrl истории будет содержать прямую ссылку на контент Klipy.

🛡 Безопасность

  • API Key Isolation: Ключ API никогда не передается клиенту. Все проверки (Test Connection) и поисковые запросы (Search) выполняются на стороне сервера.
  • Proxy-Free Media: Для экономии трафика сервера медиа-файлы Klipy загружаются клиентом напрямую с серверов провайдера (MediaUrl), но только после валидации права на создание такой истории.

Tip

При возникновении ошибок Klipy.AuthFailed проверьте сетевые настройки сервера (доступ к https://api.klipy.co) и срок действия API-ключа в кабинете Klipy.