8 releases
0.1.7 | Jul 20, 2023 |
---|---|
0.1.6 | Jul 5, 2023 |
0.1.5 | Jun 3, 2023 |
0.1.2 | May 9, 2023 |
#1115 in Web programming
39 downloads per month
Used in 2 crates
(via botx-api-framework)
285KB
4.5K
SLoC
botx-api
Описание
Обертка для api eXpress
Использование
Добавьте в Cargo.toml
botx-api = { version = "*", features = ["anthill-di"] }
Доступны следующие features:
botx-api-v-all
- включение фич всех версий (default)
botx-api-v2
- включает все апи 2ой версии
botx-api-v3
- включает все апи 3ой версии
botx-api-v4
- включает все апи 4ой версии
anthill-di
- добавляет зависимость от anthill-di и async-trait-with-sync (добавляет конструктор регистрации BotXApiContext в anthill-di)
token
- включить апи аутентификации бота
notifications-internal
- включить апи отправки события (боту)
notifications-direct
- включить апи отправки события (сообщения)
events-edit_event
- включить апи редактирования события (сообщения)
events-reply_event
- включить апи ответа на событие (сообщение)
events-status
- включить апи запроса состояния события
events-typing
- включить апи включения состояния печати
events-stop_typing
- включить апи остановки состояния печати
files-upload
- включить апи загрузки фала
files-download
- включить апи скачивания фала
stickers-new_sticker_pack
- включить апи создания набора стикеров
stickers-sticker_packs_list
- включить апи запроса списка наборов стикеров
stickers-add_sticker
- включить апи добавления набора стикеров
stickers-get_sticker_pack
- включить апи запроса информации о наборе стикеров
stickers-get_sticker
- включить апи запроса информации о стикере
stickers-update_sticker_pack
- включить апи обновления набора стикеров
stickers-delete_sticker
- включить апи удаления стикера
stickers-delete_sticker_pack
- включить апи удаления набора стикеров
chats-list
- включить апи запроса списка чатов бота
chats-info
- включить апи запроса информации о чате бота
chats-add_use
- включить апи добавления пользователей в чат бота
chats-remove_use
- включить апи удаления пользователя из чата бота
chats-add_admin
- включить апи добавления администраторов в чата бота
chats-set_stealth
- включить апи включения стелс режима
chats-disable_stealth
- включить апи отключения стелс режима
chats-create
- включить апи создания нового чата
chats-pin_message
- включить апи закрепления сообщения в чате
chats-unpin_message
- включить апи открепления сообщения в чате
users-by_email
- включить апи запроса информации о пользователях по email адресам
users-by_huid
- включить апи запроса информации о пользователе по huid
chats-by_login
- включить апи запроса информации о пользователе по ad login + ad domain
chats-by_other_id
- включить апи запроса информации о пользователе по дополнительному id
users-users_as_csv
- включить апи запроса списка пользователей
Использование
Для использования создайте объект BotXApiContext
- Через метод new - с настройками клиента по умолчанию и конфигурацией бота
- Через метод from_client - с настроенным reqwest::async_impl::client::Client и конфигурацией бота
- Через метод from_env_with_default_client - с настройками клиента по умолчанию и конфигурацией бота из переменных окружения
- Через метод from_env - с настроенным reqwest::async_impl::client::Client и конфигурацией бота из переменных окружения
- Через регистрацию в anthill_di - зарегистрируйте BotXApiContext в контексте di методом extensions::IBotXApiContextExt::register_botx_api_context, опционально зарегистрируйте объекты BotXApiContextConfiguration как Singleton, reqwest::async_impl::client::Client, ApiEndpoints иначе будут взяты дефолтные настройки (конфигурация бота из переменных окружения)
Настройки бота берутся из переменных окружения:
- BOTX_API_CTS_URL - url cts сервера
- BOTX_API_BOT_ID - id бота
- BOTX_API_BOT_SECRET_KEY - секретный ключ бота
Все модели реализуют паттерн builder. Пример использования:
let internal_notification_request = InternalNotificationRequestBuilder::default()
.with_group_chat_id(uuid::Uuid::from_str("de981642-5224-4e70-a8dd-9a933a8e096e"))
.with_data(PingBotsCommandData { })
.with_opts(PingBotsCommandOption { })
.build()
.expect("Не все поля запроса были указаны");
Для автоматического обновления авторизации добавлен метод retry_with_auth:
let internal_notification_request = InternalNotificationRequestBuilder::default()
.with_group_chat_id(uuid::Uuid::from_str("de981642-5224-4e70-a8dd-9a933a8e096e"))
.with_data(PingBotsCommandData { })
.with_opts(PingBotsCommandOption { })
.build()
.expect("Не все поля запроса были указаны");
let internal_notification_result = retry_with_auth(&self.api, || internal_notification(&self.api, &internal_notification_request)).await;
При регистрации через anthill-di можно зарегистрировать свой объект ApiEndpoints, что позволяет менять api (бесполезно, но возможно)
Логика пишет логи через crate log. Включите логирование чтобы лучше понять работу вашего приложения
Вклад
Откройте issue с вопросом или предложением
Лицензия
MIT, можно использовать в любых целях
Статус проекта
Состояние | Метод | АPI | Описание |
---|---|---|---|
✅ | GET | /api/v2/botx/bots/:bot_id/token | |
❌ | POST | /api/v3/botx/notification/callback/direct | Отправка директ нотификации в чат (Deprecated) |
✅ | POST | /api/v4/botx/notifications/internal | Отправка внутренней бот нотификации |
✅ | POST | /api/v4/botx/notifications/direct | Отправка директ нотификации в чат |
✅ | POST | /api/v3/botx/events/edit_event | Редактирование события |
✅ | POST | /api/v3/botx/events/reply_event | Ответ (reply) на сообщение |
✅ | GET | /api/v3/botx/events/:sync_id/status | Статус сообщения |
✅ | POST | /api/v3/botx/events/typing | Отправка typing |
✅ | POST | /api/v3/botx/events/stop_typing | Отправка stop_typing |
✅ | GET | /api/v3/botx/chats/list | Получение списка чатов бота |
✅ | GET | /api/v3/botx/chats/info | Получение информации о чате |
✅ | POST | /api/v3/botx/chats/add_user | Добавление юзеров в чат |
✅ | POST | /api/v3/botx/chats/remove_user | Удаление юзеров из чата |
✅ | POST | /api/v3/botx/chats/add_admin | Добавление администратора в чат |
✅ | POST | /api/v3/botx/chats/stealth_set | Включение стелс режима в чате |
✅ | POST | /api/v3/botx/chats/stealth_disable | Отключение стелс режима в чате |
✅ | POST | /api/v3/botx/chats/create | Создание чата |
✅ | POST | /api/v3/botx/chats/pin_message | Закрепление сообщения в чате |
✅ | POST | /api/v3/botx/chats/unpin_message | Открепление сообщения в чате |
❌ | GET | /api/v3/botx/users/by_email | Поиск данных юзера по его почте (Deprecated) |
✅ | POST | /api/v3/botx/users/by_email | Поиск данных юзеров по их почтам |
✅ | GET | /api/v3/botx/users/by_huid | Поиск данных юзера по его huid |
✅ | GET | /api/v3/botx/users/by_login | Поиск данных юзера по его ad логину и ad домену |
✅ | GET | /api/v3/botx/users/by_other_id | Поиск данных юзера по дополнительному идентификатору |
✅ | GET | /api/v3/botx/users/users_as_csv | Получение списка пользователей на CTS |
❌ | GET | /api/v3/botx/users/update_profile | Обновление профиля юзера |
❌ | GET | /api/v3/botx/smartapps/list | Получение списка smartapp на CTS |
❌ | POST | /api/v3/botx/smartapps/event | Отправка smartapp события |
❌ | POST | /api/v3/botx/smartapps/notification | Отправка smartapp нотификации |
❌ | POST | /api/v3/botx/smartapps/upload_file | Загрузка smartapp файла |
✅ | GET | /api/v3/botx/stickers/packs | Получение списка наборов стикеров |
✅ | GET | /api/v3/botx/stickers/packs/:pack_id | Получение набора стикеров |
✅ | GET | /api/v3/botx/stickers/packs/:pack_id/stickers/:sticker_id | Получение стикера из набора стикеров |
✅ | POST | /api/v3/botx/stickers/packs | Создание набора стикеров |
✅ | POST | /api/v3/botx/stickers/packs/:pack_id/stickers | Добавление стикера в набор стикеров |
✅ | PUT | /api/v3/botx/stickers/packs/:pack_id | Редактирование набора стикеров |
✅ | DELETE | /api/v3/botx/stickers/packs/:pack_id | Удаление набора стикеров |
✅ | DELETE | /api/v3/botx/stickers/packs/:pack_id/stickers/:sticker_id | Удаление стикера из набора стикеров |
✅ | GET | /api/v3/botx/files/download | Скачивание файла |
✅ | POST | /api/v3/botx/files/upload | Загрузка файла |
Dependencies
~7–20MB
~283K SLoC