Привет!

В наших проектах периодически или чаще взаимодействуем с Mybb Forum API. С самого форума или с серверных компонентов (nodejs).

Набросали JavaScript SDK, который можно использовать в пользовательских скриптах.
Исходный код открытый, можно запросить что-то в issues или рассмотрим улучшения в пулл-реквестах. Через fork.

Подключение
Подключение в браузере или на форуме через https://data.jsdelivr.com/v1/package/npm/@quadrosystems/mybb-sdk/badge?style=rounded

Код:
<script src="https://cdn.jsdelivr.net/npm/@quadrosystems/mybb-sdk@0.9.7/lib/index.min.js"></script>

Внимание! На форумах QuadroBoards скрипт скрипт уже подключили. Везде.
Чтобы сохранить обратную совместимость, версия прописана в скрипте подключения. Если нужны изменения — повышайте самостоятельно.

Подключение в NodeJS через https://badge.fury.io/js/@quadrosystems%2Fmybb-sdk.png

Код:
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
https://forumupload.ru/uploads/0003/ac/ce/2/t801155.png
открыть пример

Все массивы можно подавать как есть — мы их сами склеим.

Можно получить через Promise
или async/await (рекомендуется только на сервере или с транспайлером)

Какие методы есть кроме call()
https://forumupload.ru/uploads/0003/ac/ce/2/t826578.png
открыть пример

Параметры для методов можно взять здесь 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 мы используем преимущественно на сервере, поэтому поддержку в браузерах будем определять вместе с вами. Например, полифила для промис-запросов мы не добавили, но можем это сделать.
Если нужно будет добавить какие-либо полезные утилиты — тоже рассмотрим.

Если тема обретет поддержку — обновления буду публиковать здесь.