4.7 KiB
4.7 KiB
Интеграция Klipy (Klipy Integration Module) — Knot Messager
Модуль Klipy обеспечивает интеграцию с внешним сервисом короткого видеоконтента и GIF. Он позволяет пользователям добавлять динамический контент в свои истории и сообщения, в то время как администратор сохраняет полный контроль над доступом к сервису.
🛠 Архитектура интеграции
Интеграция построена на принципах Loose Coupling (слабой связности):
- Abstractions: Интерфейс IKlipyClient находится в модуле
Stories.Application, что позволяет бизнес-логике не зависеть от конкретной реализации HTTP-вызовов. - Infrastructure: Реализация KlipyClient в
Stories.Infrastructureотвечает за взаимодействие с внешним APIapi.klipy.co. - 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 - Механизм: Сервер выполняет реальный сетевой запрос к эндпоинту
trendingAPI Klipy с использованием настроенного ключа. - Результат: Возвращает
200 OK, если ключ валиден и сервис доступен, или ошибкуKlipy.AuthFailed, если ключ не прошел авторизацию.
📽 Использование в Историях (Stories)
Когда пользователь создает историю типа klipy:
- Система проверяет
parsedType == StoryType.Klipy. - Выполняется запрос к SettingsService.
- Если
Klipy.Enabled == false, возвращается ошибкаStories.KlipyDisabled. - Если активно —
MediaUrlистории будет содержать прямую ссылку на контент Klipy.
🛡 Безопасность
- API Key Isolation: Ключ API никогда не передается клиенту. Все проверки (Test Connection) и поисковые запросы (Search) выполняются на стороне сервера.
- Proxy-Free Media: Для экономии трафика сервера медиа-файлы Klipy загружаются клиентом напрямую с серверов провайдера (
MediaUrl), но только после валидации права на создание такой истории.
Tip
При возникновении ошибок
Klipy.AuthFailedпроверьте сетевые настройки сервера (доступ кhttps://api.klipy.co) и срок действия API-ключа в кабинете Klipy.