YTsaurus JavaScript Wrapper (Browser + Node.js)
Враппер для запросов к кластерам YTsaurus, который использует HTTP API YTsaurus с наиболее приближенным к нему интерфейсом.
Установка
npm install @ytsaurus/javascript-wrapper
Подключение и использование
Библиотека написана в стиле CommonJS - можно использовать в nodejs-приложениях или собирать зависимости с помощью Webpack.
const yt = require('@ytsaurus/javascript-wrapper')()
// Позволяет задать настройки по умолчанию для всех команд.
// Если же необходимо работать с несколькими кластерами одновременно, то прокси и токен передаются каждой команде отдельно.
yt.setup.setGlobalOption('proxy', 'cluster-name.yt.my-domain.com');
yt.setup.setGlobalOption('secure', true);
yt.setup.setGlobalOption('authentication', {
type: 'domain'
});
yt.setup.setGlobalOption('timeout', 15000);
// Пример 1
yt.v3.get({ path: '//sys/users/user/@' })
yt.v3.get({
setup: {
proxy: 'cluster-name.yt.my-domain.com',
authentication: {
type: 'none'
}
},
parameters: { path: '//sys/users/user/@' }
})
.done(function (userAttributes) {
// ...
});
// Пример 2
yt.v3.set({ path: '//sys/users/user/@banned' }, true);
yt.v3.set({
setup: {
proxy: 'cluster-name.yt.my-domain.com',
authentication: {
type: 'oauth',
token: 'abcdefghijklmnopqrstuvwxyz'
}
},
parameters: { path: '//sys/users/user/@banned' },
data: true
})
.done(function () {
// ...
});
Кроме того, библиотеку можно использовать как глобальную переменную.
Настройки
Враппер позволяет задавать глобальные и локальные настройки для каждого запроса.
Имя | Тип | Значение по умолчанию |
---|---|---|
secure |
boolean | true |
useHeavyProxy |
boolean | - |
proxy |
string | - |
heavyProxy |
string | true |
timeout |
Number | 100000 |
useEncodedParameters |
boolean | true |
authentication |
object | { type: 'none' } |
dataType |
string | - |
encodedParametersSettings |
object |
{
maxSize: 64 * 1024,
maxCount: 2,
encoder(string) {
return window.btoa(utf8.encode(string));
}
}
События
Можно подписаться на события requestStart
, requestEnd
, error
:
yt.subscribe('requestStart', function () {
console.log('requestStart');
});
Это может быть полезно для отображения лоадера (можно считать, сколько активных запросов) и для логирования ошибок при запросе API.
Команды
О доступных командах можно почитать в разделе Команды. Единственное отличие заключается в том, что имена команд пишутся в привычном стиле для языка JavaScript, а именно CamelCase.
Не все команды реализованы, но могут быть добавлены при надобности. Обычно враппер выдает соответствующую ошибку при отсутствии команды.
Общий вид команды:
// yt.<version>.<command>(<parameters>[, <data>])
yt.v3.get({ path: "//home/user/@account" });
yt.v3.set({ path: "//home/user/@account" }, "default");
Общий вид команды с возможностью задать локальные настройки:
/**
* yt.<version>.<command>({
* parameters: <parameters>,
* data: <data>,
* setup: <setup>
* })
*/
const setup = { timeout: 3000 };
yt.v3.get({ setup, parameters: { path: "//home/user/@account" } });
yt.v3.set({ setup, parameters: { path: "//home/user/@account" } }, "default");
Константы для кодов ошибок
Константа | Код |
---|---|
yt.codes.GENERAL_ERROR |
1 |
yt.codes.NODE_DOES_NOT_EXIST |
500 |
yt.codes.NODE_ALREADY_EXISTS |
501 |
yt.codes.PERMISSION_DENIED |
901 |
yt.codes.USER_IS_BANNED |
903 |
yt.codes.USER_EXCEEDED_RPS |
904 |