bananabots
Advanced tools
Comparing version 0.1.4 to 0.1.5
28
index.js
const rq = require("prequest"); | ||
const httpBuildQuery = require('http-build-query'); | ||
const express = require("express"); | ||
const app = express(); | ||
const bodyParser = require('body-parser'); | ||
app.use(bodyParser.json()); | ||
app.use(bodyParser.urlencoded({ extended: true })); | ||
const fastify = require('fastify') | ||
const EventEmitter = require('events'); | ||
class Emitter extends EventEmitter {} | ||
class BananaBots { | ||
constructor({ | ||
token, | ||
}) { | ||
constructor(token) { | ||
this.token = token; | ||
this.events = new Emitter(); | ||
} | ||
async createWebServer(port){ | ||
await rq(`http://bananabots.site/api/callback.create?token=${this.token}&port=${port}`).then(async (res) => { | ||
async createWebServer(port, https){ | ||
this.app = fastify({https}); | ||
await this.call("callback.create", {port: port}).then(async (res) => { | ||
if(res.error_msg) return console.error("Ошибка при создании веб-сервера: ", res.error_msg); | ||
@@ -23,9 +18,8 @@ this.botip = res.botip; | ||
}); | ||
app.post('/', (req, res) => { | ||
if(req.ip.slice(7) !== this.botip) return res.end(); | ||
console.log(req.body) | ||
this.events.emit(req.body.data.event, req.body.data); | ||
return res.json({answer: true}); | ||
this.app.post('/', (req, res) => { | ||
if(req.headers["x-forwarded-for"] || req.socket.remoteAddress !== this.botip) return res.send(false); | ||
this.events.emit(req.body.event, req.body); | ||
return res.send({answer: true}); | ||
}); | ||
app.listen(port); | ||
this.app.listen(port, `0.0.0.0`, (err) => console.log(err)); | ||
} | ||
@@ -35,3 +29,3 @@ async call(method, params){ | ||
params.token = this.token; | ||
rq(`http://bananabots.site/api/${method}?${httpBuildQuery(params)}`) | ||
rq(`https://bananabots.site/api/${method}?${httpBuildQuery(params)}`) | ||
.then((res) => { | ||
@@ -38,0 +32,0 @@ if(res.error_msg){ return reject(res); |
{ | ||
"name": "bananabots", | ||
"version": "0.1.4", | ||
"version": "0.1.5", | ||
"description": "простой враппер для взаимодействия с API.", | ||
@@ -25,4 +25,3 @@ "main": "index.js", | ||
"http-build-query": "^0.7.0", | ||
"express": "^4.17.1", | ||
"body-parser": "^1.19.0" | ||
"fastify": "^3.6.0" | ||
}, | ||
@@ -29,0 +28,0 @@ "author": "BananaBots (kravets)", |
# BananaBots | ||
[![npm](https://img.shields.io/npm/v/bananabots)](https://www.npmjs.com/package/bananabots)[![npm](https://img.shields.io/npm/dt/bananabots.svg)](https://www.npmjs.com/package/bananabots)[![npm](https://img.shields.io/npm/dm/bananabots.svg)](https://www.npmjs.com/package/bananabots) | ||
================ | ||
`bananabots` - простой враппер для взаимодействия с API. | ||
## Установка | ||
## Установка: | ||
### NPM | ||
@@ -10,3 +11,3 @@ ``` | ||
``` | ||
## Пример: | ||
### Иницилизация: | ||
```js | ||
@@ -18,10 +19,30 @@ const BananaBots = require('bananabots') | ||
}) | ||
``` | ||
## Примеры: | ||
### Запросы к апи: | ||
| Параметр | Тип | Обязателен | Описание | | ||
|--|--|--|--| | ||
| methodName | string | Да |Имя метода | | ||
| params | object | Нет | Параметры запроса | | ||
**Пример:** | ||
```js | ||
bbot.call('users.getBalance', {id: 70267059}) | ||
.then(async (res) => console.log(res)); //Вывод в консоль результата метода users.getBalance (подробнее на сайте «http://bananabots.site/api») | ||
.then(async (res) => console.log(res)); //Вывод в консоль результата метода users.getBalance (подробнее на сайте «https://bananabots.site/api») | ||
``` | ||
###Обработка событий: | ||
### Обработка событий: | ||
**Создание Веб-сервера для получения событий:** | ||
```js | ||
bbot.createWebServer(3000); //позволит получать события на порту 3000 | ||
``` | ||
**Получать событие «new_transfer» можно так:** | ||
```js | ||
bbot.events.on("new_transfer", (data) => console.log(data)); //при событии new_transfer выведет в консоль информацию о переводе | ||
``` | ||
``` | ||
| Параметр | Тип | Обязателен | Описание | | ||
|--|--|--|--| | ||
| eventName | string | Да |Имя метода | | ||
| eventFunction | function | Да | Функция которая выполниться при получении события | | ||
## Changelog: | ||
**0.1.5** - Переписан на fastify тем самым ускорил (да fastify) обработку событий убрал ненужные зависимости и переписал документацию. |
4121
3
46
39
+ Addedfastify@^3.6.0
+ Added@fastify/ajv-compiler@1.1.0(transitive)
+ Added@fastify/error@2.0.0(transitive)
+ Addedabstract-logging@2.0.1(transitive)
+ Addedajv@8.17.1(transitive)
+ Addedarchy@1.0.0(transitive)
+ Addedatomic-sleep@1.0.0(transitive)
+ Addedavvio@7.2.5(transitive)
+ Addedcookie@0.5.0(transitive)
+ Addeddebug@4.4.0(transitive)
+ Addeddeepmerge@4.3.1(transitive)
+ Addedfast-content-type-parse@1.1.0(transitive)
+ Addedfast-decode-uri-component@1.0.1(transitive)
+ Addedfast-json-stringify@2.7.13(transitive)
+ Addedfast-redact@3.5.0(transitive)
+ Addedfast-safe-stringify@2.1.1(transitive)
+ Addedfast-uri@3.0.6(transitive)
+ Addedfastify@3.29.5(transitive)
+ Addedfastq@1.19.0(transitive)
+ Addedfind-my-way@4.5.1(transitive)
+ Addedflatstr@1.0.12(transitive)
+ Addedjson-schema-traverse@1.0.0(transitive)
+ Addedlight-my-request@4.12.0(transitive)
+ Addedpino@6.14.0(transitive)
+ Addedpino-std-serializers@3.2.0(transitive)
+ Addedprocess-warning@1.0.0(transitive)
+ Addedqueue-microtask@1.2.3(transitive)
+ Addedquick-format-unescaped@4.0.4(transitive)
+ Addedrequire-from-string@2.0.2(transitive)
+ Addedret@0.2.2(transitive)
+ Addedreusify@1.0.4(transitive)
+ Addedrfdc@1.4.1(transitive)
+ Addedsafe-regex2@2.0.0(transitive)
+ Addedsecure-json-parse@2.7.0(transitive)
+ Addedsemver@7.7.1(transitive)
+ Addedsemver-store@0.3.0(transitive)
+ Addedset-cookie-parser@2.7.1(transitive)
+ Addedsonic-boom@1.4.1(transitive)
+ Addedstring-similarity@4.0.4(transitive)
+ Addedtiny-lru@8.0.2(transitive)
- Removedbody-parser@^1.19.0
- Removedexpress@^4.17.1
- Removedaccepts@1.3.8(transitive)
- Removedarray-flatten@1.1.1(transitive)
- Removedbody-parser@1.20.3(transitive)
- Removedbytes@3.1.2(transitive)
- Removedcall-bind-apply-helpers@1.0.1(transitive)
- Removedcall-bound@1.0.3(transitive)
- Removedcontent-disposition@0.5.4(transitive)
- Removedcontent-type@1.0.5(transitive)
- Removedcookie@0.7.1(transitive)
- Removedcookie-signature@1.0.6(transitive)
- Removeddebug@2.6.9(transitive)
- Removeddepd@2.0.0(transitive)
- Removeddestroy@1.2.0(transitive)
- Removeddunder-proto@1.0.1(transitive)
- Removedee-first@1.1.1(transitive)
- Removedencodeurl@1.0.22.0.0(transitive)
- Removedes-define-property@1.0.1(transitive)
- Removedes-errors@1.3.0(transitive)
- Removedes-object-atoms@1.1.1(transitive)
- Removedescape-html@1.0.3(transitive)
- Removedetag@1.8.1(transitive)
- Removedexpress@4.21.2(transitive)
- Removedfinalhandler@1.3.1(transitive)
- Removedfresh@0.5.2(transitive)
- Removedfunction-bind@1.1.2(transitive)
- Removedget-intrinsic@1.2.7(transitive)
- Removedget-proto@1.0.1(transitive)
- Removedgopd@1.2.0(transitive)
- Removedhas-symbols@1.1.0(transitive)
- Removedhasown@2.0.2(transitive)
- Removedhttp-errors@2.0.0(transitive)
- Removediconv-lite@0.4.24(transitive)
- Removedinherits@2.0.4(transitive)
- Removedmath-intrinsics@1.1.0(transitive)
- Removedmedia-typer@0.3.0(transitive)
- Removedmerge-descriptors@1.0.3(transitive)
- Removedmethods@1.1.2(transitive)
- Removedmime@1.6.0(transitive)
- Removedms@2.0.0(transitive)
- Removednegotiator@0.6.3(transitive)
- Removedobject-inspect@1.13.4(transitive)
- Removedon-finished@2.4.1(transitive)
- Removedparseurl@1.3.3(transitive)
- Removedpath-to-regexp@0.1.12(transitive)
- Removedqs@6.13.0(transitive)
- Removedrange-parser@1.2.1(transitive)
- Removedraw-body@2.5.2(transitive)
- Removedsend@0.19.0(transitive)
- Removedserve-static@1.16.2(transitive)
- Removedsetprototypeof@1.2.0(transitive)
- Removedside-channel@1.1.0(transitive)
- Removedside-channel-list@1.0.0(transitive)
- Removedside-channel-map@1.0.1(transitive)
- Removedside-channel-weakmap@1.0.2(transitive)
- Removedstatuses@2.0.1(transitive)
- Removedtoidentifier@1.0.1(transitive)
- Removedtype-is@1.6.18(transitive)
- Removedunpipe@1.0.0(transitive)
- Removedutils-merge@1.0.1(transitive)
- Removedvary@1.1.2(transitive)