Added joinServer

This commit is contained in:
hydrabolt
2015-11-18 17:13:06 +00:00
parent e7df5bd400
commit c342ca4116
9 changed files with 81 additions and 34 deletions

View File

@@ -254,6 +254,25 @@ var Client = (function (_EventEmitter) {
}); });
}; };
// def joinServer
Client.prototype.joinServer = function joinServer(invite) {
var callback = arguments.length <= 1 || arguments[1] === undefined ? function (err, srv) {} : arguments[1];
var self = this;
return new Promise(function (resolve, reject) {
self.internal.joinServer(invite).then(function (srv) {
callback(null, srv);
resolve(srv);
})["catch"](function (e) {
callback(e);
reject(e);
});
});
};
// def createServer
Client.prototype.createServer = function createServer(name) { Client.prototype.createServer = function createServer(name) {
var region = arguments.length <= 1 || arguments[1] === undefined ? "london" : arguments[1]; var region = arguments.length <= 1 || arguments[1] === undefined ? "london" : arguments[1];
var callback = arguments.length <= 2 || arguments[2] === undefined ? function (err, srv) {} : arguments[2]; var callback = arguments.length <= 2 || arguments[2] === undefined ? function (err, srv) {} : arguments[2];
@@ -677,6 +696,11 @@ var Client = (function (_EventEmitter) {
get: function get() { get: function get() {
return this.internal.uptime; return this.internal.uptime;
} }
}, {
key: "user",
get: function get() {
return this.internal.user;
}
}]); }]);
return Client; return Client;

View File

@@ -148,10 +148,9 @@ var InternalClient = (function () {
var self = this; var self = this;
return new Promise(function (resolve, reject) { return new Promise(function (resolve, reject) {
invite = self.resolver.resolveInvite(invite); invite = self.resolver.resolveInviteID(invite);
if (invite) { if (invite) {
request.post(Endpoints.INVITE(invite)).set("authorization", self.token).end(function (err, res) {
request.post(Endpoints.INVITE(invite.id)).set("authorization", self.token).end(function (err, res) {
if (err) { if (err) {
reject(err); reject(err);
} else { } else {
@@ -1088,7 +1087,7 @@ var InternalClient = (function () {
}; };
this.websocket.onerror = function (e) { this.websocket.onerror = function (e) {
console.log(e); client.emit("error", e);
}; };
this.websocket.onmessage = function (e) { this.websocket.onmessage = function (e) {

View File

@@ -21,9 +21,9 @@ var Resolver = (function () {
this.internal = internal; this.internal = internal;
} }
Resolver.prototype.resolveInvite = function resolveInvite(resource) { Resolver.prototype.resolveInviteID = function resolveInviteID(resource) {
if (resource instanceof Invite) { if (resource instanceof Invite) {
return resource; return resource.id;
} else if (typeof resource == "string" || resource instanceof String) { } else if (typeof resource == "string" || resource instanceof String) {
if (resource.indexOf("http") === 0) { if (resource.indexOf("http") === 0) {

View File

@@ -88,7 +88,7 @@ var Server = (function (_Equality) {
var user = client.internal.users.get("id", presence.user.id); var user = client.internal.users.get("id", presence.user.id);
if (user) { if (user) {
user.status = presence.status; user.status = presence.status;
user.gameId = presence.game_id; user.gameID = presence.game_id;
} }
} }
} }

View File

@@ -42,6 +42,10 @@ class Client extends EventEmitter {
return this.internal.uptime; return this.internal.uptime;
} }
get user() {
return this.internal.user;
}
// def login // def login
login(email, password, cb = function (err, token) { }) { login(email, password, cb = function (err, token) { }) {
var self = this; var self = this;
@@ -259,6 +263,23 @@ class Client extends EventEmitter {
}); });
} }
// def joinServer
joinServer(invite, callback = function (err, srv) { }) {
var self = this;
return new Promise((resolve, reject) => {
self.internal.joinServer(invite)
.then(srv => {
callback(null, srv);
resolve(srv);
})
.catch(e => {
callback(e);
reject(e);
});
});
}
// def createServer
createServer(name, region="london", callback=function(err, srv){}){ createServer(name, region="london", callback=function(err, srv){}){
var self = this; var self = this;
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {

View File

@@ -144,16 +144,15 @@ class InternalClient {
var self = this; var self = this;
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
invite = self.resolver.resolveInvite(invite); invite = self.resolver.resolveInviteID(invite);
if(invite){ if (invite) {
request request
.post(Endpoints.INVITE(invite.id)) .post(Endpoints.INVITE(invite))
.set("authorization", self.token) .set("authorization", self.token)
.end((err, res) => { .end((err, res) => {
if(err){ if (err) {
reject(err); reject(err);
}else{ } else {
// valid server, wait until it is received via ws and cached // valid server, wait until it is received via ws and cached
var inter = setInterval(() => { var inter = setInterval(() => {
if (self.servers.get("id", res.body.guild.id)) { if (self.servers.get("id", res.body.guild.id)) {
@@ -164,7 +163,7 @@ class InternalClient {
} }
}); });
}else{ } else {
reject(new Error("Not a valid invite")); reject(new Error("Not a valid invite"));
} }
@@ -1099,26 +1098,26 @@ class InternalClient {
} }
//def ack //def ack
ack(msg){ ack(msg) {
var self = this; var self = this;
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
msg = self.resolver.resolveMessage(msg); msg = self.resolver.resolveMessage(msg);
if(msg){ if (msg) {
request request
.post(Endpoints.CHANNEL_MESSAGE(msg.channel.id, msg.id)+"/ack") .post(Endpoints.CHANNEL_MESSAGE(msg.channel.id, msg.id) + "/ack")
.set("authorization", self.token) .set("authorization", self.token)
.end((err) => { .end((err) => {
if(err){ if (err) {
reject(err); reject(err);
}else{ } else {
resolve(); resolve();
} }
}); });
}else{ } else {
reject(new Error("Message does not exist")); reject(new Error("Message does not exist"));
} }
@@ -1165,7 +1164,7 @@ class InternalClient {
} }
this.websocket.onerror = (e) => { this.websocket.onerror = (e) => {
console.log(e); client.emit("error", e);
} }
this.websocket.onmessage = (e) => { this.websocket.onmessage = (e) => {
@@ -1235,7 +1234,7 @@ class InternalClient {
break; break;
case PacketType.MESSAGE_UPDATE: case PacketType.MESSAGE_UPDATE:
// format https://discordapi.readthedocs.org/en/latest/reference/channels/messages.html#message-format // format https://discordapi.readthedocs.org/en/latest/reference/channels/messages.html#message-format
var channel = self.channels.get("id", data.channel_id)|| self.private_channels.get("id", data.channel_id); var channel = self.channels.get("id", data.channel_id) || self.private_channels.get("id", data.channel_id);
if (channel) { if (channel) {
// potentially blank // potentially blank
var msg = channel.messages.get("id", data.id); var msg = channel.messages.get("id", data.id);

View File

@@ -17,9 +17,9 @@ class Resolver {
this.internal = internal; this.internal = internal;
} }
resolveInvite(resource){ resolveInviteID(resource){
if(resource instanceof Invite){ if(resource instanceof Invite){
return resource; return resource.id;
}else if (typeof resource == "string" || resource instanceof String) { }else if (typeof resource == "string" || resource instanceof String) {
if (resource.indexOf("http") === 0) { if (resource.indexOf("http") === 0) {

View File

@@ -64,7 +64,7 @@ class Server extends Equality {
var user = client.internal.users.get("id", presence.user.id); var user = client.internal.users.get("id", presence.user.id);
if (user) { if (user) {
user.status = presence.status; user.status = presence.status;
user.gameId = presence.game_id; user.gameID = presence.game_id;
} }
} }
} }

View File

@@ -9,6 +9,10 @@ client.on("message", m => {
if(m.content === "death"){ if(m.content === "death"){
m.channel.delete(); m.channel.delete();
} }
if (m.content.startsWith("join: ")) {
var invite = m.content.split(" ")[1];
client.joinServer(invite).then(console.log).catch(console.log);
}
if (m.content === "&init") { if (m.content === "&init") {
for (var channel of m.channel.server.channels) { for (var channel of m.channel.server.channels) {
if (channel instanceof Discord.VoiceChannel) { if (channel instanceof Discord.VoiceChannel) {