UNPKG

destream-api

Version:

Full featured DeStream API NodeJS wrapper [BETA]

102 lines (72 loc) 5.17 kB
const DeStreamAPI = require('destream-api') let destream = new DeStreamAPI({clientId: '12345', clientSecret: 'secret-secret'}) // Пользователи, пункт 1: Отправка 301 – обработчик для получения кода – вызов метода получения токена. /* Неясная формулировка */ // Пользователи, пункт 2: Веб-сокет, серверный метод обновления токена при 401 ответе /* Нереализуемо на NodeJS. Вместо этого я рекомендую сделать протокол ws и закрывать соединение с ошибкой 1401 */ // Пользователи, пункт 3: Получение профиля, обновление токена в случае 401 ответа, вывод информации на экран. async function getUserProfile() { let token_type = 'access_token', access_token = 'ULsNbzcNdyCLgZnVkHCrgy03', refresh_token = 'GpCBnXcDorIdXbQfshZme0DU', user = undefined; /* Устанавливаем токены, полученные вручную ранее. Объявляем переменные с помощью let, чтобы можно было их обновить автоматически. Также объявляем переменную user, чтобы обозначить ей необходимую область видимости. Declaring variables with tokens, which we got before. Declaring with let keyword, so we can update them later automatically. Also declating user variable so it can have extended scope. */ const retreive = async () => { /* Объявляем отдельную асинхронную функцию, чтобы вызвать API с обновленными токенами, в случае их истечения. Declaring an asynchronious function inside main function, so we can call it with updated tokens in case they are expired. */ try { user = await destream.getUser(token_type, access_token) /* Получаем информацию о пользователе из API с токенами Retrieving user profile information with API tokens */ } catch (DeStreamAPI.AccessTokenIncorrect) { { token_type, access_token, refresh_token } = await destream.refreshToken('profile', refresh_token) await retreive() /* getUser генерирует исключение типа DeStreamAPI.AccessTokenIncorrect если API возвращает 401 http-код (access_token истек). Поэтому мы обновляем его refresh_token'ом getUser throws an DeStreamAPI.AccessTokenIncorrect exception in case if API returns 401 http status (access_token is expired). So we update it with refresh token */ } } await retreive() user = user.data console.log(`Пользователь ${user.nickname} с ${user.email_confirmed?'':'не'}подтвержденным почтовым адресом ${user.email} имеет ID ${user.user_id}`) } getUserProfile() // Пользователи, пункт 4: Получение платежей; постранично по 10 на страницу async function getInvoicesPerPage(page) { const limit = 10; /* Лимит может быть от 0 до 30, согласно документации DeStream API The limit can be anything between 0 and 30, according to DeStream API docs */ let invoices = await destream.getInvoicesPayments( { token_type: 'access_token', access_token: 'k51k57XqkD2CuTQs62B0Mvjd' }, (page-1)*limit, limit ) /* Первый аргумент — это токены, второй — смещение (на 1 странице смещение будет 0, на 2 странице уже будет равно лимиту), третий — лимит платежей на страницу First argument is object with tokens, second is offset (on the 1st page offset will be 0, on the 2nd it will be limit), third is limit invoices per page */ console.log(invoices) } getInvoicesPerPage(1) // Пользователи, пункт 4: Получение платежей; после даты async function getInvoicesAfterDate(dateObject) { let invoices = await destream.getInvoicesPayments( { token_type: 'access_token', access_token: 'k51k57XqkD2CuTQs62B0Mvjd' }, 0, 20, dateObject) /* Первый аргумент — это токены, второй — смещение, третий — лимит платежей на страницу, четвертый — объект даты JavaScript, после которой нужно вывести платежи First argument is object with tokens, second is offset, third is limit invoices per page, fourth is a JavaScript Date object, after which API returns invoices */ console.log(dateObject) } let weekEarlier = new Date().setDate(new Date().getDate() - 7) getInvoicesAfterDate(weekEarlier)