From 7b736712955256b391c1b933e0045a51fedf7341 Mon Sep 17 00:00:00 2001 From: hydrabolt Date: Wed, 18 Nov 2015 16:45:37 +0000 Subject: [PATCH] Added the joinServer funciton internally --- src/Client/InternalClient.js | 32 ++++++++++++++++++++++++++++++++ src/Client/Resolver/Resolver.js | 19 ++++++++++++++++++- src/Constants.js | 1 + 3 files changed, 51 insertions(+), 1 deletion(-) diff --git a/src/Client/InternalClient.js b/src/Client/InternalClient.js index 3df5a6266..573224d53 100644 --- a/src/Client/InternalClient.js +++ b/src/Client/InternalClient.js @@ -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 leaveServer(srv) { diff --git a/src/Client/Resolver/Resolver.js b/src/Client/Resolver/Resolver.js index 8df817877..433b40b90 100644 --- a/src/Client/Resolver/Resolver.js +++ b/src/Client/Resolver/Resolver.js @@ -9,12 +9,29 @@ var User = require("../../Structures/User.js"), ServerChannel = require("../../Structures/ServerChannel.js"), PMChannel = require("../../Structures/PMChannel.js"), Server = require("../../Structures/Server.js"), - Message = require("../../Structures/Message.js"); + Message = require("../../Structures/Message.js"), + Invite = require("../../Structures/Invite.js"); class Resolver { constructor(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){ if(resource instanceof Server){ diff --git a/src/Constants.js b/src/Constants.js index 653cd77d0..694365b39 100644 --- a/src/Constants.js +++ b/src/Constants.js @@ -7,6 +7,7 @@ var Endpoints = { GATEWAY: `${API}/gateway`, USER_CHANNELS: (userID) => `${API}/users/${userID}/channels`, AVATAR : (userID, avatar) => `${API}/users/${userID}/avatars/${avatar}.jpg`, + INVITE: (id) => `${API}/invite/${id}`, // servers SERVERS: `${API}/guilds`,