Security News
RubyGems.org Adds New Maintainer Role
RubyGems.org has added a new "maintainer" role that allows for publishing new versions of gems. This new permission type is aimed at improving security for gem owners and the service overall.
destream-api
Advanced tools
destream-api currently supports:
/* Without using destream-api */
const fetch = require('node-fetch')
const formurlencoded = require('form-urlencoded')
let params = formurlencoded({
grant_type: 'refresh_token',
client_id: 12345,
client_secret: 'secret-secret',
scope: 'profile+tips',
refresh_token: 'refresh_token'
})
fetch(`https://destream.net/api/v2/oauth2/token?${params}`, {
method: 'POST',
headers: {'Content-Type': 'application/x-www-form-urlencoded'}
})
/* Using destream-api */
const DeStreamAPI = require('destream-api')
let destream = new DeStreamAPI({clientId: '12345', clientSecret: 'secret-secret'})
destream.refreshAccessToken('profile+tips', 'refresh_token' })
/* Without using destream-api */
const fetch = require('node-fetch')
const limit = 10; let tipsArray = [], offset = 0;
while(true){
fetch(`https://destream.net/api/v2/users/tips?offset=${offset}`, {
method: 'GET',
headers: {
'X-Api-ClientId': '12345',
'Authorization': `access_token jahs62d123`
}
}).then(result => result.json()).then(result => {
if(result.data.length === 0){
break;
} else {
tipsArray.push(...result.data)
}
offset += limit
})
}
/* Using destream-api */
const DeStreamAPI = require('destream-api')
let destream = new DeStreamAPI({clientId: '12345', clientSecret: 'secret-secret'})
let tipsArray = []
let tips = await destream.getTips({ tokenType: 'access_token', access_token: 'jahs62d123' })
while(tips.next){
let tips = await tips.next()
tipsArray.push(...tips.data)
}
$ npm i destream-api
or with yarn
$ yarn add destream-api
Each method except for subscribeToEvents() and validateSignature() has http_status
property in returned object; object is parsed JSON response.
const DeStreamAPI = require('destream-api')
let destream = new DeStreamAPI({clientId: '12345', clientSecret: 'secret-secret-secret'})
async function registerMe() {
let response = await destream.registerUser('vityaschel@utidteam.com')
console.log(response)
} registerMe()
DeStream API Documentation (ru)
Exchanges authorization code from oauth to access token, refresh token, token type.
Example usage:
let { access_token, refresh_token, token_type, http_status } = await destream.getTokensFromCode('lk12j3a1p', 'https://destream.ru/')
Refreshes access token so it won't expire.
Example usage:
let { access_token, refresh_token, token_type, http_status } = await destream.refreshAccessToken('profile+tips', '2QwlfWHU7OYs')
Gets user which gave your app access to its account. If Access Token expired or incorrect, will throw DeStreamAPI.AccessTokenIncorrect exception for 401 http status with API response included in apiResponse
property in it.
Example usage:
let { data } = await destream.getUser('token_type', '3jjprwOCd1Gi')
console.log(data.nickname, data.email)
Register new user on destream with specified email. If user exists, throws an DeStreamAPI.UserExistsException exception with API response included in it in apiResponse
property.
Example usage:
let { http_status } = await destream.registerUser('help@gmail.com')
console.log('User created!', newUser.data.user_id)
Gets latest tips. Tokens is an object: { token_type: 'string', access_token: 'string' }
; Everything else is optional: offset and limit are Numbers; sinceDate is Date object
If Access Token expired or incorrect, will throw DeStreamAPI.AccessTokenIncorrect exception for 401 http status with API response included in apiResponse
property in it.
Example usage:
let { data, total } = await destream.getTips({'token_type', '3jjprwOCd1Gi'})
console.log('You have', total, 'tips with total amount sum of', data.reduce((prev, cur) => prev+cur.amount, 0), '!')
Subscribes you to websocket server which sends you messages such as donationReceived. Callback function is called every time with exactly 1 argument: message text.
Example usage:
destream.subscribeToEvents('lk12j3a1p', message => {
console.log('WOO HOOO! DONATE!!!', message.sender, 'I LOVE YOU SO MUCH thanks for', message.amount, message.currency)
})
I call it invoices because it is literally invoice: user is redirected directly to pay page. No forms needed to be filled by user.
Creates an invoice with specified parameters. All arguments but optionalData
are required;
Optional data is an object in which every property is optional. If you choose to add any property, it will be passed to the DeStream API endpoint.
{
message: string;
success_url: string;
fail_url: string;
additional_data: string;
}
Example usage:
let invoice = await destream.createInvoice(81923, 100, 'RUB')
console.log('Invoice with', invoice.data.payment_id, 'created. Now please go to', invoice.data.payment_url)
Gets information about created invoices. Tokens is an object: { token_type: 'string', access_token: 'string' }
; Everything else is optional: offset and limit are Numbers; sinceDate is Date object; arrayOfIds must be an array of numbers (payment_ids)
If Access Token expired or incorrect, will throw DeStreamAPI.AccessTokenIncorrect exception for 401 http status with API response included in apiResponse
property in it.
Example usage:
let tenCreatedInvoices = await destream.getInvoicesPayments({'token_type', '3jjprwOCd1Gi'})
console.log('You created these invoices: ', ...tenCreatedInvoices.data.map(invoice => invoice.payment_id))
You have to setup server by yourself, but this library provides useful methods for webhook.
Concatenates body with clientSecret and hashes to SHA512. Returns true if equal to receivedSignature, false otherwise.
Example usage:
if(!destream.validateSignature(req.body, req.headers['X-Signature'])){
throw 'Signature invalid!!'
}
FAQs
Full featured DeStream API NodeJS wrapper [BETA]
We found that destream-api demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
RubyGems.org has added a new "maintainer" role that allows for publishing new versions of gems. This new permission type is aimed at improving security for gem owners and the service overall.
Security News
Node.js will be enforcing stricter semver-major PR policies a month before major releases to enhance stability and ensure reliable release candidates.
Security News
Research
Socket's threat research team has detected five malicious npm packages targeting Roblox developers, deploying malware to steal credentials and personal data.