Add options.api_request_method

This commit is contained in:
Amish Shah
2016-08-19 18:15:13 +01:00
parent dcba580d89
commit 00be14b5d1
2 changed files with 14 additions and 1 deletions

View File

@@ -2,6 +2,7 @@ const UserAgentManager = require('./UserAgentManager');
const RESTMethods = require('./RESTMethods'); const RESTMethods = require('./RESTMethods');
const SequentialRequestHandler = require('./RequestHandlers/Sequential'); const SequentialRequestHandler = require('./RequestHandlers/Sequential');
const APIRequest = require('./APIRequest'); const APIRequest = require('./APIRequest');
const Constants = require('../../util/Constants');
class RESTManager { class RESTManager {
@@ -23,11 +24,21 @@ class RESTManager {
}); });
} }
getRequestHandler() {
switch (this.client.options.api_request_method) {
case 'sequential':
return SequentialRequestHandler;
default:
throw Constants.Errors.INVALID_RATE_LIMIT_METHOD;
}
}
makeRequest(method, url, auth, data, file) { makeRequest(method, url, auth, data, file) {
const apiRequest = new APIRequest(this, method, url, auth, data, file); const apiRequest = new APIRequest(this, method, url, auth, data, file);
if (!this.handlers[apiRequest.getEndpoint()]) { if (!this.handlers[apiRequest.getEndpoint()]) {
this.handlers[apiRequest.getEndpoint()] = new SequentialRequestHandler(this); const RequestHandlerType = this.getRequestHandler();
this.handlers[apiRequest.getEndpoint()] = new RequestHandlerType(this);
} }
return this.push(this.handlers[apiRequest.getEndpoint()], apiRequest); return this.push(this.handlers[apiRequest.getEndpoint()], apiRequest);

View File

@@ -13,6 +13,7 @@ exports.DefaultOptions = {
protocol_version: 6, protocol_version: 6,
max_message_cache: 200, max_message_cache: 200,
rest_ws_bridge_timeout: 5000, rest_ws_bridge_timeout: 5000,
api_request_method: 'sequential',
}; };
exports.Status = { exports.Status = {
@@ -37,6 +38,7 @@ exports.Errors = {
BAD_WS_MESSAGE: new Error('a bad message was received from the websocket - bad compression or not json'), BAD_WS_MESSAGE: new Error('a bad message was received from the websocket - bad compression or not json'),
TOOK_TOO_LONG: new Error('something took too long to do'), TOOK_TOO_LONG: new Error('something took too long to do'),
NOT_A_PERMISSION: new Error('that is not a valid permission number'), NOT_A_PERMISSION: new Error('that is not a valid permission number'),
INVALID_RATE_LIMIT_METHOD: new Error('unknown rate limiting method'),
}; };
const API = 'https://discordapp.com/api'; const API = 'https://discordapp.com/api';