From 2137981bb98ed5fd6899904c18ce5b6bf87bed2b Mon Sep 17 00:00:00 2001 From: hydrabolt Date: Thu, 27 Aug 2015 12:43:25 +0100 Subject: [PATCH] Added the new gateway capability --- lib/Client.js | 32 ++++++++++++++++++++++++++------ src/Client.js | 36 ++++++++++++++++++++++++++++++------ test/bot.js | 12 ++++++++++-- 3 files changed, 66 insertions(+), 14 deletions(-) diff --git a/lib/Client.js b/lib/Client.js index 7d2c96445..3ff17e858 100644 --- a/lib/Client.js +++ b/lib/Client.js @@ -120,7 +120,6 @@ var Client = (function () { var self = this; - this.createws(); return new Promise(function (resolve, reject) { if (self.state === 0 || self.state === 4) { @@ -143,9 +142,15 @@ var Client = (function () { } else { self.state = 2; //set state to logged in (not yet ready) self.token = res.body.token; //set our token - self.trySendConnData(); - callback(null, self.token); - resolve(self.token); + + getGateway().then(function (url) { + self.createws(url); + callback(null, self.token); + resolve(self.token); + })["catch"](function (err) { + callback(err); + reject(err); + }); } }); } else { @@ -687,13 +692,13 @@ var Client = (function () { //def createws }, { key: "createws", - value: function createws() { + value: function createws(url) { if (this.websocket) return false; var self = this; //good to go - this.websocket = new WebSocket(Endpoints.WEBSOCKET_HUB); + this.websocket = new WebSocket(url); //open this.websocket.onopen = function () { @@ -1413,4 +1418,19 @@ var Client = (function () { return Client; })(); +function getGateway() { + + var self = this; + + return new Promise(function (resolve, reject) { + request.get(Endpoints.API + "/gateway").end(function (err, res) { + if (err) { + reject(err); + } else { + resolve(res.body.url); + } + }); + }); +} + module.exports = Client; \ No newline at end of file diff --git a/src/Client.js b/src/Client.js index e2e99d0b9..0fdc18539 100644 --- a/src/Client.js +++ b/src/Client.js @@ -132,7 +132,6 @@ class Client { var self = this; - this.createws(); return new Promise(function (resolve, reject) { if (self.state === 0 || self.state === 4) { @@ -157,9 +156,16 @@ class Client { } else { self.state = 2; //set state to logged in (not yet ready) self.token = res.body.token; //set our token - self.trySendConnData(); - callback(null, self.token); - resolve(self.token); + + getGateway().then(function (url) { + self.createws(url); + callback(null, self.token); + resolve(self.token); + }).catch(function (err) { + callback(err); + reject(err); + }); + } }); @@ -666,14 +672,14 @@ class Client { } //def createws - createws() { + createws(url) { if (this.websocket) return false; var self = this; //good to go - this.websocket = new WebSocket(Endpoints.WEBSOCKET_HUB); + this.websocket = new WebSocket(url); //open this.websocket.onopen = function () { @@ -1106,4 +1112,22 @@ class Client { } +function getGateway() { + + var self = this; + + return new Promise(function (resolve, reject) { + request + .get(`${Endpoints.API}/gateway`) + .end(function (err, res) { + if (err) { + reject(err); + } else { + resolve(res.body.url); + } + }); + }); + +} + module.exports = Client; \ No newline at end of file diff --git a/test/bot.js b/test/bot.js index b04c7ac29..f11b4a015 100644 --- a/test/bot.js +++ b/test/bot.js @@ -7,8 +7,16 @@ var mybot = new Discord.Client(); var server, channel, message, sentMessage = false; -function success1(){ //make server +function init(){ console.log("preparing..."); +} + +mybot.on("ready", function(){ + console.log("ready! beginning tests"); + success1(); +}); + +function success1(){ //make server mybot.createServer("test-server", "london").then(success2).catch(error); } @@ -123,4 +131,4 @@ mybot.on("message", function(message){ }); -mybot.login(process.env["ds_email"], process.env["ds_password"]).then(success1).catch(error); \ No newline at end of file +mybot.login(process.env["ds_email"], process.env["ds_password"]).then(init).catch(error); \ No newline at end of file