use-api #1
13
api.js
13
api.js
@@ -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
29
package-lock.json
generated
@@ -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",
|
||||||
|
|||||||
@@ -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"
|
||||||
|
|||||||
Reference in New Issue
Block a user