botx-api

Описание

Обертка для api eXpress

Использование

Добавьте в Cargo.toml 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 - с настройками клиента по умолчанию и конфигурацией бота * Через метод fromclient - с настроенным reqwest::asyncimpl::client::Client и конфигурацией бота * Через метод fromenvwithdefaultclient - с настройками клиента по умолчанию и конфигурацией бота из переменных окружения * Через метод fromenv - с настроенным reqwest::asyncimpl::client::Client и конфигурацией бота из переменных окружения * Через регистрацию в anthilldi - зарегистрируйте BotXApiContext в контексте di методом extensions::IBotXApiContextExt::registerbotxapicontext, опционально зарегистрируйте объекты BotXApiContextConfiguration как Singleton, reqwest::async_impl::client::Client, ApiEndpoints иначе будут взяты дефолтные настройки (конфигурация бота из переменных окружения)

Настройки бота берутся из переменных окружения: * BOTXAPICTSURL - url cts сервера * BOTXAPIBOTID - id бота * BOTXAPIBOTSECRETKEY - секретный ключ бота

Все модели реализуют паттерн builder. Пример использования: rs 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("Не все поля запроса были указаны");

Для автоматического обновления авторизации добавлен метод retrywithauth: ```rs let internalnotificationrequest = InternalNotificationRequestBuilder::default() .withgroupchatid(uuid::Uuid::fromstr("de981642-5224-4e70-a8dd-9a933a8e096e")) .withdata(PingBotsCommandData { }) .withopts(PingBotsCommandOption { }) .build() .expect("Не все поля запроса были указаны");

let internalnotificationresult = retrywithauth(&self.api, || internalnotification(&self.api, &internalnotification_request)).await; ```

При регистрации через anthill-di можно зарегистрировать свой объект ApiEndpoints, что позволяет менять api (бесполезно, но возможно)

Логика пишет логи через crate log. Включите логирование чтобы лучше понять работу вашего приложения

Вклад

Откройте issue с вопросом или предложением

Лицензия

MIT, можно использовать в любых целях

Статус проекта

|Состояние|Метод|АPI|Описание| |---|---|---|---| |✅|GET|/api/v2/botx/bots/:botid/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/editevent|Редактирование события| |✅|POST|/api/v3/botx/events/replyevent|Ответ (reply) на сообщение| |✅|GET|/api/v3/botx/events/:syncid/status|Статус сообщения| |✅|POST|/api/v3/botx/events/typing|Отправка typing| |✅|POST|/api/v3/botx/events/stoptyping|Отправка stoptyping| |✅|GET|/api/v3/botx/chats/list|Получение списка чатов бота| |✅|GET|/api/v3/botx/chats/info|Получение информации о чате| |✅|POST|/api/v3/botx/chats/adduser|Добавление юзеров в чат| |✅|POST|/api/v3/botx/chats/removeuser|Удаление юзеров из чата| |✅|POST|/api/v3/botx/chats/addadmin|Добавление администратора в чат| |✅|POST|/api/v3/botx/chats/stealthset|Включение стелс режима в чате| |✅|POST|/api/v3/botx/chats/stealthdisable|Отключение стелс режима в чате| |✅|POST|/api/v3/botx/chats/create|Создание чата| |✅|POST|/api/v3/botx/chats/pinmessage|Закрепление сообщения в чате| |✅|POST|/api/v3/botx/chats/unpinmessage|Открепление сообщения в чате| |❌|GET|/api/v3/botx/users/byemail|Поиск данных юзера по его почте (Deprecated)| |✅|POST|/api/v3/botx/users/byemail|Поиск данных юзеров по их почтам| |✅|GET|/api/v3/botx/users/byhuid|Поиск данных юзера по его huid| |✅|GET|/api/v3/botx/users/bylogin|Поиск данных юзера по его ad логину и ad домену| |✅|GET|/api/v3/botx/users/byotherid|Поиск данных юзера по дополнительному идентификатору| |✅|GET|/api/v3/botx/users/usersascsv|Получение списка пользователей на CTS| |❌|GET|/api/v3/botx/users/updateprofile|Обновление профиля юзера| |❌|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/uploadfile|Загрузка smartapp файла| |✅|GET|/api/v3/botx/stickers/packs|Получение списка наборов стикеров| |✅|GET|/api/v3/botx/stickers/packs/:packid|Получение набора стикеров| |✅|GET|/api/v3/botx/stickers/packs/:packid/stickers/:stickerid|Получение стикера из набора стикеров| |✅|POST|/api/v3/botx/stickers/packs|Создание набора стикеров| |✅|POST|/api/v3/botx/stickers/packs/:packid/stickers|Добавление стикера в набор стикеров| |✅|PUT|/api/v3/botx/stickers/packs/:packid|Редактирование набора стикеров| |✅|DELETE|/api/v3/botx/stickers/packs/:packid|Удаление набора стикеров| |✅|DELETE|/api/v3/botx/stickers/packs/:packid/stickers/:sticker_id|Удаление стикера из набора стикеров| |✅|GET|/api/v3/botx/files/download|Скачивание файла| |✅|POST|/api/v3/botx/files/upload|Загрузка файла|