Socket
Socket
Sign inDemoInstall

node-vkcoinapi

Package Overview
Dependencies
Maintainers
1
Versions
17
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

node-vkcoinapi - npm Package Compare versions

Comparing version 1.5.4 to 1.6.0

.eslintrc.js

64

index.js

@@ -5,2 +5,3 @@ const WebSocket = require('ws');

const koaBody = require('koa-body');
const koaRoute = require('koa-route');

@@ -54,2 +55,4 @@ const { APIError, ParameterError } = require('./utils/errors');

async startPolling(callback) {
if (!this.token) throw new ParameterError('token');
if (callback) {

@@ -72,6 +75,9 @@ this.hasCallback = true;

this.ws.on('error', (data) => {
console.error(
`На стороне VK Coin возникла ошибка: ${data.message}\n\nПереподключение совершится через ${Math.round(this.reconnectTimeout / 1000)} сек...`
);
const message = `На стороне VK Coin возникла ошибка: ${data.message}\n\nПереподключение совершится через ${Math.round(this.reconnectTimeout / 1000)} сек...`;
callback
? callback(message)
: console.error(message)
;
setTimeout(() => {

@@ -96,11 +102,11 @@ this.reconnect();

if (/^(?:TR)/i.test(message)) {
let { amount, fromId, id } = message.match(/^(?:TR)\s(?<amount>.*)\s(?<fromId>.*)\s(?<id>.*)/i).groups;
amount = Number(amount);
fromId = Number(fromId);
id = Number(id);
const { amount, fromId, id } = message.match(
/^(?:TR)\s(?<amount>.*)\s(?<fromId>.*)\s(?<id>.*)/i
).groups;
const event = { amount, fromId, id };
this.transferHandler(event);
this.transferHandler({
id: Number(id),
amount: Number(amount),
fromId: Number(fromId)
});
}

@@ -111,3 +117,3 @@

callback(
`Вы зашли в VK Coin, переподключение совершится через ${Math.round(this.reconnectTimeout / 1000)} сек...`
'Вы зашли в VK Coin'
);

@@ -120,3 +126,3 @@ }

if (callback) {
callback('Соединение разорвано');
callback('Соединение разорвано, переподключение совершится через ${Math.round(this.reconnectTimeout / 1000)} сек...');
}

@@ -150,5 +156,5 @@

let { url, port, path } = options;
if (!url) {
return new ParameterError('url');
throw new ParameterError('url');
}

@@ -159,3 +165,3 @@ if (!path) {

if (!port) options.port = 8181;
if (!port) port = 8181;

@@ -171,2 +177,6 @@ this.app = new koa();

if (!path.startsWith('/')) {
path = `/${path}`;
}
const result = await request(

@@ -180,10 +190,15 @@ 'https://coin-without-bugs.vkforms.ru/merchant/set/',

);
if (result.response === 'ON') {
this.app.use((ctx) => {
ctx.status = 200;
this.app.use(
koaRoute.post(
path,
(ctx) => {
ctx.status = 200;
this.transferHandler(ctx.request.body);
}
)
);
this.transferHandler(ctx.request.body);
});
return true;

@@ -437,8 +452,9 @@ }

* @param {String} options.key - API-ключ
* @param {String} options.token - Токен пользователя
* @param {String} [options.token] - Токен пользователя
* @param {Number} options.userId - ID пользователя
*/
constructor(options) {
if (!options.token) options.token = null;
if (!options.key) throw new ParameterError('key');
if (!options.token) throw new ParameterError('token');
if (!options.userId) throw new ParameterError('userId');

@@ -445,0 +461,0 @@

{
"name": "node-vkcoinapi",
"version": "1.5.4",
"version": "1.6.0",
"description": "Работа с API VK Coin",

@@ -8,4 +8,5 @@ "main": "index.js",

"request-promise": "^4.2.2",
"koa-route": "^3.2.0",
"koa-body": "^4.1.0",
"request": "^2.88.0",
"koa-body": "^4.1.0",
"url": "^0.11.0",

@@ -12,0 +13,0 @@ "koa": "^2.7.0",

@@ -42,3 +42,3 @@ # node-vkcoinapi

const vkcoin = new VKCOINAPI(options = {});
const vkcoin = new VKCOINAPI(options);
```

@@ -48,5 +48,6 @@

|-|-|-|
|key|String|Ключ для взаимодействия с API|
|userId|Number|Ваш айди ВК|
|token|String|Ваш токен|
|options|Object|Опции конструктора|
|options.key|String|Ключ для взаимодействия с API|
|options.userId|Number|Ваш айди ВК|
|options.token|String|Ваш токен|

@@ -68,2 +69,4 @@ ### Где взять эти значения

Токеном будет являться строка от **access_token** до **&expires**. В этом случае **xxxxxxxxxxxx**
Токен нужен для получения событий через WebSocket (Моментальное получение платежей)
# API

@@ -114,3 +117,3 @@ call - Вызывает апи-метод по его названию (Нужен, если я не успел обновить модуль)

|-|-|-|
|tx|Array<Number>|Массив айди переводов для получения ИЛИ [1] - последняя 1000 транзакций, [2] - 100|
|tx|Number[]|Массив айди переводов для получения ИЛИ [1] - последняя 1000 транзакций, [2] - 100|
#

@@ -121,3 +124,3 @@ sendPayment - Делает перевод другому пользователю (в десятичных долях)

async function run() {
const result = await vkcoin.api.sendPayment(toId, amount); // 1 коин = 1000 ед.
const result = await vkcoin.api.sendPayment(toId, amount, fromShop); // 1 коин = 1000 ед.

@@ -195,3 +198,3 @@ console.log(result);

|-|-|-|
|userIds|Array<Number>|Массив айди пользователей|
|userIds|Number|Number[]|Массив айди пользователей|
#

@@ -221,9 +224,5 @@ setShopName - Меняет название магазина

```js
async function run() {
await vkcoin.updates.startPolling(callback);
vkcoin.updates.startPolling(callback);
/* Тут ваши действия со слушателем */
}
run().catch(console.error);
/* Тут ваши действия со слушателем */
```

@@ -254,4 +253,4 @@

> Подключено
> Вы зашли в VK Coin, переподключение совершится через 5 сек...
> Соединение разорвано
> Вы зашли в VK Coin
> Соединение разорвано, переподключение совершится через 5 сек...
> Подключено

@@ -263,3 +262,3 @@ ```

```js
vkcoin.updates.startWebHook(options = {});
vkcoin.updates.startWebHook(options);

@@ -271,5 +270,6 @@ /* Тут ваши действия со слушателем */

|-|-|-|
|url|String|Адрес вашего сервера для получения событий|
|port|Number|Порт для запуска сервера (8181 - по умолчанию)|
|path|String|Путь вашего хука (/ - по умолчанию)|
|options|Object|Опции вебхука|
|options.url|String|Адрес вашего сервера для получения событий|
|options.port|Number|Порт для запуска сервера (8181 - по умолчанию)|
|options.path|String|Путь вашего хука (/ - по умолчанию)|

@@ -280,12 +280,10 @@ При использовании startWebHook, вы лишаетесь многого: получение топов, места, онлайна и информации об объёме рынка. Всё это можно получить при использовании startPolling

**Метод ```updates.onTransfer``` нужно писать после ```updates.startPolling``` или ```updates.startWebHook```, иначе у вас ничего не сработает**
```js
async function run() {
await vkcoin.updates.startPolling();
vkcoin.updates.startPolling();
vkcoin.updates.onTransfer((event) => {
console.log(event);
});
}
run().catch(console.error);
vkcoin.updates.onTransfer((event) => {
console.log(event);
});
```

@@ -296,5 +294,3 @@

```js
vkcoin.updates.startPolling(async(data) => {
console.log(data);
vkcoin.updates.startPolling(console.log).then(() => {
vkcoin.updates.onTransfer((event) => {

@@ -310,3 +306,5 @@ console.log(event);

vkcoin.updates.startWebHook({
url: 'fakeman-cat.tk', // Тут ваша ссылка
url: '123.123.123.123', // Тут ваша ссылка или IP-адрес сервера
path: '/webhook',
port: 1337
});

@@ -323,5 +321,5 @@

|-|-|-|
|amount|Number|Количество коинов, которые послупили на счёт|
|fromId|Number|Айди плательщика|
|id|Number|Айди платежа|
|event.amount|Number|Количество коинов, которые послупили на счёт|
|event.fromId|Number|Айди плательщика|
|event.id|Number|Айди платежа|

@@ -384,40 +382,25 @@ Стоит отметить, что startWebHook получает только платежи по ссылке.

|online|Number|Онлайн пользователей в данный момент|
|digits|Array<Object>|Информация о рынке и сумме переводов. Подробнее: см. ниже|
|userTop|Array<Object>|Топ пользователей. Подробнее: см. ниже|
|groupTop|Array<Object>|Топ сообществ. Подробнее: см. ниже|
|digits|Object[]|Информация о рынке и сумме переводов|
|digits.description|String|Описание дигита|
|digits.value|Number|Значение дигита|
|digits.trend|Number|На сколько изменилось значение переводов за 5 минут|
|userTop|Object[]|Топ пользователей|
|userTop.id|Number|ID Пользователя|
|userTop.score|Number|Баланс|
|userTop.first_name|String|Имя|
|userTop.last_name|String|Фамилия|
|userTop.is_closed|Boolean|Закрыт ли аккаунт|
|userTop.can_access_closed|Boolean|Может ли текущий пользователь видеть профиль при is_closed = true|
|userTop.photo_200|String<URI>|Ссылка на аватарку|
|userTop.link|String<URI>|Ссылка на профиль|
|groupTop|Object[]|Топ сообществ. Подробнее: см. ниже|
|groupTop.id|Number|ID сообщества|
|groupTop.score|Number|Баланс|
|groupTop.name|String|Имя сообщества|
|groupTop.screen_name|String|Короткий адрес|
|groupTop.is_closed|Number|Закрыта ли группа|
|groupTop.type|String|Тип сообщества (паблик, страница, группа)|
|groupTop.photo_200|String|Аватарка сообщества|
|groupTop.link|String|Ссылка на сообщество|
```digits```:
|Параметр|Тип|Описание|
|-|-|-|
|description|String|Описание дигита|
|value|Number|Значение дигита|
|trend|Number|На сколько изменилось значение переводов за 5 минут|
```userTop```:
|Параметр|Тип|Описание|
|-|-|-|
|id|Number|ID Пользователя|
|score|Number|Баланс|
|first_name|String|Имя|
|last_name|String|Фамилия|
|is_closed|Boolean|Закрыт ли аккаунт|
|can_access_closed|Boolean|Может ли текущий пользователь видеть профиль при is_closed = true|
|photo_200|String<URI>|Ссылка на аватарку|
|link|String<URI>|Ссылка на профиль|
```groupTop```:
|Параметр|Тип|Описание|
|-|-|-|
|id|Number|ID сообщества|
|score|Number|Баланс|
|name|String|Имя сообщества|
|screen_name|String|Короткий адрес|
|is_closed|Number|Закрыта ли группа|
|type|String|Тип сообщества (паблик, страница, группа)|
|photo_200|String<URI>|Аватарка сообщества|
|link|String<URI>|Ссылка на сообщество|
Так же скорее всего, все значения будут равны ```null```, потому что клиент **ws** не успевает подключиться. Для решения этой проблемы могу посоветовать сделать ```delay``` функцию и интегрировать в метод:

@@ -424,0 +407,0 @@

@@ -11,2 +11,7 @@ import * as Responses from './responses';

constructor(key: string, token: string, userId: number);
/**
* Время переподключения к серверу ws
* @default 5000
*/
reconnectTimeout: number;

@@ -28,3 +33,9 @@ /**

*/
async startWebhook(options: Params.WebhookParams);
async startWebHook(options: Params.WebhookParams);
/**
*
* @param callback Функция, принимающая данные перевода
*/
onTransfer(event: Function);
}

@@ -31,0 +42,0 @@

@@ -22,3 +22,3 @@ export interface WebhookParams {

*/
token: string;
token?: string;

@@ -25,0 +25,0 @@ /**

@@ -66,2 +66,2 @@ export interface TransactionResponse {

}
}
}

@@ -7,3 +7,5 @@ const request = require('./request');

if (result.error) {
throw new Error('Не удалось получить ссылку на приложение. Попробуйте переполучить токен');
throw new Error(
'Не удалось получить ссылку на приложение. Попробуйте переполучить токен'
);
}

@@ -13,3 +15,9 @@

if (!mobile_iframe_url) {
throw new Error(
'Токен нужно получить от приложения "Клевер"'
);
}
return mobile_iframe_url;
};
module.exports = (min, max) => {
console.log(this);
const rand = Math.round(

@@ -4,0 +3,0 @@ min - 0.5 + Math.random() * (max - min + 1)

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc