Привет!
В наших проектах периодически или чаще взаимодействуем с Mybb Forum API. С самого форума или с серверных компонентов (nodejs).
Набросали JavaScript SDK, который можно использовать в пользовательских скриптах.
Исходный код открытый, можно запросить что-то в issues или рассмотрим улучшения в пулл-реквестах. Через fork.
Подключение
Подключение в браузере или на форуме через
<script src="https://cdn.jsdelivr.net/npm/@quadrosystems/mybb-sdk@0.9.7/lib/index.min.js"></script>
Внимание! На форумах QuadroBoards скрипт скрипт уже подключили. Везде.
Чтобы сохранить обратную совместимость, версия прописана в скрипте подключения. Если нужны изменения — повышайте самостоятельно.
npm install @quadrosystems/mybb-sdk или yarn add @quadrosystems/mybb-sdk
Инициализация
var mybbAPI = new MybbSDK("https://forum.mybb.ru/", { format: "json", charset: "utf-8" });
Опции можно не передавать — применятся дефолтные. Адрес форума тоже можно не подавать — будет обращаться к текущему.
Запросы
Есть универсальный метод, mybbAPI.call(), который принимает 4 аргумента:
название метода, как заявлено в Mybb Forum API
параметры запроса
callback-функция для обработки успешного ответа
callback-функция для обработки ошибки
Например, получение списка пользователя с методом users.get
открыть пример
Все массивы можно подавать как есть — мы их сами склеим.
Какие методы есть кроме call()
открыть пример
Параметры для методов можно взять здесь Mybb Forum API (актуальнее) или здесь.
Метод setToken() нужен для запросов, которые требует token пользователя (например, storageSet()). Можно подать ForumAPITicket
Метод withHash() нужен для запросов, которые будут выполняться от имени пользователя. Например, для получения тем в закрытом разделе. Подать в него нужно полученный hash через метод auth(login: string, password: string)
Например, чтобы сохранить значение 1 на сервере под ключом test, нужно сделать это:
mybbAPI.setToken(ForumAPITicket).storageSet("test", 1).then(function(result){ console.log("Значение сохранено", result); }).catch(function(err){ console.error("Что-то пошло не так", err); });
или
mybbAPI.setToken(ForumAPITicket); mybbAPI.storageSet("test", 1).then(function(result){ console.log("Значение сохранено", result); }).catch(function(err){ console.error("Что-то пошло не так", err); });
SDK мы используем преимущественно на сервере, поэтому поддержку в браузерах будем определять вместе с вами. Например, полифила для промис-запросов мы не добавили, но можем это сделать.
Если нужно будет добавить какие-либо полезные утилиты — тоже рассмотрим.
Если тема обретет поддержку — обновления буду публиковать здесь.