use-api #1

Merged
anatolykopyl merged 2 commits from use-api into master 2022-03-06 22:37:18 +00:00
3 changed files with 40 additions and 5 deletions
Showing only changes of commit 13a1bd9ab0 - Show all commits

13
api.js
View File

@@ -1,13 +1,20 @@
const { default: axios } = require('axios') const axios = require('axios')
const { RateLimiter } = require('limiter')
class Api { class Api {
constructor () { constructor () {
this.baseUrl = 'https://api.warframe.market/v1/' this.baseUrl = 'https://api.warframe.market/v1/'
this.timeout = 0 this.delay = process.env.API_DELAY ?? 3000
this.limiter = new RateLimiter({ tokensPerInterval: 1, interval: Number(this.delay) })
}
async _get (url) {
await this.limiter.removeTokens(1)
return axios.get(url)
} }
async getOrders (url) { async getOrders (url) {
const response = await axios.get(this.baseUrl + 'items/' + url + '/orders') const response = await this._get(this.baseUrl + 'items/' + url + '/orders')
return response.data.payload.orders.filter(function (order) { return response.data.payload.orders.filter(function (order) {
return order.order_type === 'sell' && order.user.status !== 'offline' return order.order_type === 'sell' && order.user.status !== 'offline'
}) })

29
package-lock.json generated
View File

@@ -10,7 +10,8 @@
"dependencies": { "dependencies": {
"axios": "^0.26.0", "axios": "^0.26.0",
"dotenv": "^16.0.0", "dotenv": "^16.0.0",
"handlebars": "^4.7.7" "handlebars": "^4.7.7",
"limiter": "^2.1.0"
}, },
"devDependencies": { "devDependencies": {
"eslint-config-standard": "^16.0.3" "eslint-config-standard": "^16.0.3"
@@ -1646,6 +1647,11 @@
"json5": "lib/cli.js" "json5": "lib/cli.js"
} }
}, },
"node_modules/just-performance": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/just-performance/-/just-performance-4.3.0.tgz",
"integrity": "sha512-L7RjvtJsL0QO8xFs5wEoDDzzJwoiowRw6Rn/GnvldlchS2JQr9wFYPiwZcDfrbbujEKqKN0tvENdbjXdYhDp5Q=="
},
"node_modules/levn": { "node_modules/levn": {
"version": "0.4.1", "version": "0.4.1",
"resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
@@ -1660,6 +1666,14 @@
"node": ">= 0.8.0" "node": ">= 0.8.0"
} }
}, },
"node_modules/limiter": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/limiter/-/limiter-2.1.0.tgz",
"integrity": "sha512-361TYz6iay6n+9KvUUImqdLuFigK+K79qrUtBsXhJTLdH4rIt/r1y8r1iozwh8KbZNpujbFTSh74mJ7bwbAMOw==",
"dependencies": {
"just-performance": "4.3.0"
}
},
"node_modules/lodash.merge": { "node_modules/lodash.merge": {
"version": "4.6.2", "version": "4.6.2",
"resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
@@ -3567,6 +3581,11 @@
"minimist": "^1.2.0" "minimist": "^1.2.0"
} }
}, },
"just-performance": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/just-performance/-/just-performance-4.3.0.tgz",
"integrity": "sha512-L7RjvtJsL0QO8xFs5wEoDDzzJwoiowRw6Rn/GnvldlchS2JQr9wFYPiwZcDfrbbujEKqKN0tvENdbjXdYhDp5Q=="
},
"levn": { "levn": {
"version": "0.4.1", "version": "0.4.1",
"resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
@@ -3578,6 +3597,14 @@
"type-check": "~0.4.0" "type-check": "~0.4.0"
} }
}, },
"limiter": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/limiter/-/limiter-2.1.0.tgz",
"integrity": "sha512-361TYz6iay6n+9KvUUImqdLuFigK+K79qrUtBsXhJTLdH4rIt/r1y8r1iozwh8KbZNpujbFTSh74mJ7bwbAMOw==",
"requires": {
"just-performance": "4.3.0"
}
},
"lodash.merge": { "lodash.merge": {
"version": "4.6.2", "version": "4.6.2",
"resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",

View File

@@ -11,7 +11,8 @@
"dependencies": { "dependencies": {
"axios": "^0.26.0", "axios": "^0.26.0",
"dotenv": "^16.0.0", "dotenv": "^16.0.0",
"handlebars": "^4.7.7" "handlebars": "^4.7.7",
"limiter": "^2.1.0"
}, },
"devDependencies": { "devDependencies": {
"eslint-config-standard": "^16.0.3" "eslint-config-standard": "^16.0.3"