mirror of
https://github.com/discordjs/discord.js.git
synced 2026-03-14 02:23:31 +01:00
Implement Sequential Rate Limiting
This commit is contained in:
@@ -1,23 +1,21 @@
|
||||
const request = require('superagent');
|
||||
const Constants = require('../../util/Constants');
|
||||
const UserAgentManager = require('./UserAgentManager');
|
||||
const RESTMethods = require('./RESTMethods');
|
||||
const Bucket = require('./Bucket');
|
||||
const SequentialRequestHandler = require('./RequestHandlers/Sequential');
|
||||
const APIRequest = require('./APIRequest');
|
||||
|
||||
class RESTManager {
|
||||
|
||||
constructor(client) {
|
||||
this.client = client;
|
||||
this.buckets = {};
|
||||
this.handlers = {};
|
||||
this.userAgentManager = new UserAgentManager(this);
|
||||
this.methods = new RESTMethods(this);
|
||||
this.rateLimitedEndpoints = {};
|
||||
}
|
||||
|
||||
addToBucket(bucket, apiRequest) {
|
||||
push(handler, apiRequest) {
|
||||
return new Promise((resolve, reject) => {
|
||||
bucket.add({
|
||||
handler.push({
|
||||
request: apiRequest,
|
||||
resolve,
|
||||
reject,
|
||||
@@ -26,17 +24,13 @@ class RESTManager {
|
||||
}
|
||||
|
||||
makeRequest(method, url, auth, data, file) {
|
||||
/*
|
||||
file is {file, name}
|
||||
*/
|
||||
const apiRequest = new APIRequest(this, method, url, auth, data, file);
|
||||
|
||||
if (!this.buckets[apiRequest.getBucketName()]) {
|
||||
console.log('new bucket', apiRequest.getBucketName());
|
||||
this.buckets[apiRequest.getBucketName()] = new Bucket(this, 1, 1);
|
||||
if (!this.handlers[apiRequest.getEndpoint()]) {
|
||||
this.handlers[apiRequest.getEndpoint()] = new SequentialRequestHandler(this);
|
||||
}
|
||||
|
||||
return this.addToBucket(this.buckets[apiRequest.getBucketName()], apiRequest);
|
||||
|
||||
return this.push(this.handlers[apiRequest.getEndpoint()], apiRequest);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user