mirror of
https://github.com/discordjs/discord.js.git
synced 2026-03-14 02:23:31 +01:00
initial
This commit is contained in:
53
src/client/rest/RESTManager.js
Normal file
53
src/client/rest/RESTManager.js
Normal file
@@ -0,0 +1,53 @@
|
||||
'use strict';
|
||||
|
||||
const request = require('superagent');
|
||||
const Constants = require('../../util/Constants');
|
||||
const UserAgentManager = require('./UserAgentManager');
|
||||
const RESTMethods = require('./RESTMethods');
|
||||
|
||||
class RESTManager{
|
||||
|
||||
constructor(client) {
|
||||
this.client = client;
|
||||
this.queue = [];
|
||||
this.userAgentManager = new UserAgentManager(this);
|
||||
this.methods = new RESTMethods(this);
|
||||
}
|
||||
|
||||
makeRequest(method, url, auth, data, file) {
|
||||
/*
|
||||
file is {file, name}
|
||||
*/
|
||||
let apiRequest = request[method](url);
|
||||
|
||||
if (auth) {
|
||||
if (this.client.store.token) {
|
||||
apiRequest.set('authorization', this.client.store.token);
|
||||
} else {
|
||||
throw Constants.Errors.NO_TOKEN;
|
||||
}
|
||||
}
|
||||
|
||||
if (data) {
|
||||
apiRequest.send(data);
|
||||
}
|
||||
|
||||
if (file) {
|
||||
apiRequest.attach('file', file.file, file.name);
|
||||
}
|
||||
|
||||
apiRequest.set('User-Agent', this.userAgentManager.userAgent);
|
||||
|
||||
return new Promise((resolve, reject) => {
|
||||
apiRequest.end((err, res) => {
|
||||
if (err) {
|
||||
reject(err);
|
||||
} else {
|
||||
resolve(res ? res.body || {} : {});
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
module.exports = RESTManager;
|
||||
37
src/client/rest/RESTMethods.js
Normal file
37
src/client/rest/RESTMethods.js
Normal file
@@ -0,0 +1,37 @@
|
||||
'use strict';
|
||||
|
||||
const Constants = require('../../util/Constants');
|
||||
|
||||
class RESTMethods{
|
||||
constructor(restManager) {
|
||||
this.rest = restManager;
|
||||
}
|
||||
|
||||
LoginEmailPassword(email, password) {
|
||||
return new Promise((resolve, reject) => {
|
||||
|
||||
this.rest.makeRequest('post', Constants.Endpoints.LOGIN, false, { email, password })
|
||||
.then(data => {
|
||||
this.rest.client.manager.connectToWebSocket(data.token, resolve, reject);
|
||||
})
|
||||
.catch(reject);
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
LoginToken(token) {
|
||||
return new Promise((resolve, reject) => {
|
||||
this.rest.client.manager.connectToWebSocket(token, resolve, reject);
|
||||
});
|
||||
}
|
||||
|
||||
GetGateway() {
|
||||
return new Promise((resolve, reject) => {
|
||||
this.rest.makeRequest('get', Constants.Endpoints.GATEWAY, true)
|
||||
.then(res => resolve(res.url))
|
||||
.catch(reject);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = RESTMethods;
|
||||
24
src/client/rest/UserAgentManager.js
Normal file
24
src/client/rest/UserAgentManager.js
Normal file
@@ -0,0 +1,24 @@
|
||||
'use strict';
|
||||
|
||||
const Constants = require('../../util/Constants');
|
||||
|
||||
class UserAgentManager{
|
||||
constructor(restManager) {
|
||||
this.restManager = restManager;
|
||||
this._userAgent = {
|
||||
url: 'https://github.com/hydrabolt/discord.js',
|
||||
version: Constants.Package.version,
|
||||
};
|
||||
}
|
||||
|
||||
set(info) {
|
||||
this._userAgent.url = info.url || 'https://github.com/hydrabolt/discord.js';
|
||||
this._userAgent.version = info.version || Constants.Package.version;
|
||||
}
|
||||
|
||||
get userAgent() {
|
||||
return `DiscordBot (${this._userAgent.url}, ${this._userAgent.version})`;
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = UserAgentManager;
|
||||
Reference in New Issue
Block a user