Added the joinServer funciton internally

This commit is contained in:
hydrabolt
2015-11-18 16:45:37 +00:00
parent fb989bb39e
commit 7b73671295
3 changed files with 51 additions and 1 deletions

View File

@@ -138,6 +138,38 @@ class InternalClient {
}); });
}); });
} }
//def joinServer
joinServer(invite) {
var self = this;
return new Promise((resolve, reject) => {
invite = self.resolver.resolveInvite(invite);
if(invite){
request
.post(Endpoints.INVITE(invite.id))
.set("authorization", self.token)
.end((err, res) => {
if(err){
reject(err);
}else{
// valid server, wait until it is received via ws and cached
var inter = setInterval(() => {
if (self.servers.get("id", res.body.guild.id)) {
clearInterval(inter);
resolve(self.servers.get("id", res.body.guild.id));
}
}, 20);
}
});
}else{
reject(new Error("Not a valid invite"));
}
});
}
//def leaveServer //def leaveServer
leaveServer(srv) { leaveServer(srv) {

View File

@@ -9,12 +9,29 @@ var User = require("../../Structures/User.js"),
ServerChannel = require("../../Structures/ServerChannel.js"), ServerChannel = require("../../Structures/ServerChannel.js"),
PMChannel = require("../../Structures/PMChannel.js"), PMChannel = require("../../Structures/PMChannel.js"),
Server = require("../../Structures/Server.js"), Server = require("../../Structures/Server.js"),
Message = require("../../Structures/Message.js"); Message = require("../../Structures/Message.js"),
Invite = require("../../Structures/Invite.js");
class Resolver { class Resolver {
constructor(internal) { constructor(internal) {
this.internal = internal; this.internal = internal;
} }
resolveInvite(resource){
if(resource instanceof Invite){
return resource;
}else if (typeof resource == "string" || resource instanceof String) {
if (resource.indexOf("http") === 0) {
var split = resource.split("/");
return split.pop();
} else {
return resource;
}
}
return null;
}
resolveServer(resource){ resolveServer(resource){
if(resource instanceof Server){ if(resource instanceof Server){

View File

@@ -7,6 +7,7 @@ var Endpoints = {
GATEWAY: `${API}/gateway`, GATEWAY: `${API}/gateway`,
USER_CHANNELS: (userID) => `${API}/users/${userID}/channels`, USER_CHANNELS: (userID) => `${API}/users/${userID}/channels`,
AVATAR : (userID, avatar) => `${API}/users/${userID}/avatars/${avatar}.jpg`, AVATAR : (userID, avatar) => `${API}/users/${userID}/avatars/${avatar}.jpg`,
INVITE: (id) => `${API}/invite/${id}`,
// servers // servers
SERVERS: `${API}/guilds`, SERVERS: `${API}/guilds`,