From 73e0c1683b234cbca3c07f9d9bf51b2c282d28ea Mon Sep 17 00:00:00 2001 From: hydrabolt Date: Thu, 5 Nov 2015 20:02:34 +0000 Subject: [PATCH] Added overwrite shortcut --- lib/Client/Client.js | 24 +++++++++ lib/Client/InternalClient.js | 98 ++++++++++++++++++++++++++++++++---- lib/index.js | 42 +++++++++++++--- src/Client/Client.js | 16 ++++++ src/Client/InternalClient.js | 57 +++++++++++++++++++++ src/index.js | 32 +++++++++++- 6 files changed, 252 insertions(+), 17 deletions(-) diff --git a/lib/Client/Client.js b/lib/Client/Client.js index 01344fbd6..3b375617c 100644 --- a/lib/Client/Client.js +++ b/lib/Client/Client.js @@ -1,5 +1,7 @@ "use strict"; +var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } @@ -439,6 +441,28 @@ var Client = (function (_EventEmitter) { }); }; + _createClass(Client, [{ + key: "users", + get: function get() { + return this.internal.users; + } + }, { + key: "channels", + get: function get() { + return this.internal.channels; + } + }, { + key: "servers", + get: function get() { + return this.internal.servers; + } + }, { + key: "privateChannels", + get: function get() { + return this.internal.private_channels; + } + }]); + return Client; })(EventEmitter); diff --git a/lib/Client/InternalClient.js b/lib/Client/InternalClient.js index 04831ed40..00ad776d8 100644 --- a/lib/Client/InternalClient.js +++ b/lib/Client/InternalClient.js @@ -670,6 +670,86 @@ var InternalClient = (function () { }); }; + //def overwritePermissions + + InternalClient.prototype.overwritePermissions = function overwritePermissions(channel, role, updated) { + var self = this; + return new Promise(function (resolve, reject) { + channel = self.resolver.resolveChannel(channel)["catch"](reject).then(next); + function next(channel) { + var user = self.resolver.resolverUser(role); + + var data = {}; + data.allow = 0; + data.deny = 0; + + updated.allow = updated.allow || []; + updated.deny = updated.deny || []; + + if (role instanceof Role) { + data.id = role.id; + data.type = "role"; + } else if (user) { + data.id = user.id; + data.type = "member"; + } else { + reject(new Error("role incorrect")); + return; + } + + for (var _iterator3 = updated.allow, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) { + var _ref3; + + if (_isArray3) { + if (_i3 >= _iterator3.length) break; + _ref3 = _iterator3[_i3++]; + } else { + _i3 = _iterator3.next(); + if (_i3.done) break; + _ref3 = _i3.value; + } + + var perm = _ref3; + + if (perm instanceof String || typeof perm === "string") { + data.allow |= Constants.Permissions[perm] || 0; + } else { + data.allow |= perm; + } + } + + for (var _iterator4 = updated.deny, _isArray4 = Array.isArray(_iterator4), _i4 = 0, _iterator4 = _isArray4 ? _iterator4 : _iterator4[Symbol.iterator]();;) { + var _ref4; + + if (_isArray4) { + if (_i4 >= _iterator4.length) break; + _ref4 = _iterator4[_i4++]; + } else { + _i4 = _iterator4.next(); + if (_i4.done) break; + _ref4 = _i4.value; + } + + var perm = _ref4; + + if (perm instanceof String || typeof perm === "string") { + data.deny |= Constants.Permissions[perm] || 0; + } else { + data.deny |= perm; + } + } + + request.put(Endpoints.CHANNEL_PERMISSIONS(channel) + "/" + data.id).set("authorization", self.token).send(data).end(function (err) { + if (err) { + reject(err); + } else { + resolve(); + } + }); + } + }); + }; + InternalClient.prototype.sendWS = function sendWS(object) { if (this.websocket) this.websocket.send(JSON.stringify(object)); }; @@ -807,19 +887,19 @@ var InternalClient = (function () { var server = self.servers.get("id", data.id); if (server) { - for (var _iterator3 = server.channels, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) { - var _ref3; + for (var _iterator5 = server.channels, _isArray5 = Array.isArray(_iterator5), _i5 = 0, _iterator5 = _isArray5 ? _iterator5 : _iterator5[Symbol.iterator]();;) { + var _ref5; - if (_isArray3) { - if (_i3 >= _iterator3.length) break; - _ref3 = _iterator3[_i3++]; + if (_isArray5) { + if (_i5 >= _iterator5.length) break; + _ref5 = _iterator5[_i5++]; } else { - _i3 = _iterator3.next(); - if (_i3.done) break; - _ref3 = _i3.value; + _i5 = _iterator5.next(); + if (_i5.done) break; + _ref5 = _i5.value; } - var channel = _ref3; + var channel = _ref5; self.channels.remove(channel); } diff --git a/lib/index.js b/lib/index.js index a60af898f..33b18d636 100644 --- a/lib/index.js +++ b/lib/index.js @@ -11,14 +11,19 @@ a.on("debug", function (m) { a.on("warn", function (m) { return console.log("[warn]", m); }); - +var start = Date.now(); a.on("message", function (m) { + console.log("msgmsgmsg"); if (m.content === "$$$") { - a.createInvite(m.channel).then(function (invite) { - return a.reply(m, invite); - })["catch"](function (e) { - return console.log(e.stack); - }); + a.createServer("pongping", "london").then(function (server) { + a.createChannel(server, "pingpong", "text").then(function (channel) { + a.sendMessage(channel, "$$$").then(function (msg) { + a.leaveServer(msg.channel.server).then(function () { + console.log("!!! " + (Date.now() - start)); + }); + })["catch"](error); + })["catch"](error); + })["catch"](error); } }); a.on("userTypingStart", function (user, chan) { @@ -27,6 +32,31 @@ a.on("userTypingStart", function (user, chan) { a.on("userTypingStop", function (user, chan) { console.log(user.username + " stopped typing"); }); +a.on("ready", function () { + for (var _iterator = a.internal.servers, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) { + var _ref; + + if (_isArray) { + if (_i >= _iterator.length) break; + _ref = _iterator[_i++]; + } else { + _i = _iterator.next(); + if (_i.done) break; + _ref = _i.value; + } + + var server = _ref; + + if (server.name === "craptown") { + a.leaveServer(server); + } + } +}); + +function error(e) { + throw e; + process.exit(0); +} a.login(process.env["discordEmail"], process.env["discordPass"])["catch"](function (e) { return console.log(e); diff --git a/src/Client/Client.js b/src/Client/Client.js index e3593f4fc..f2daa96c1 100644 --- a/src/Client/Client.js +++ b/src/Client/Client.js @@ -14,6 +14,22 @@ class Client extends EventEmitter { this.internal = new InternalClient(this); } + get users(){ + return this.internal.users; + } + + get channels(){ + return this.internal.channels; + } + + get servers(){ + return this.internal.servers; + } + + get privateChannels(){ + return this.internal.private_channels; + } + // def login login(email, password, cb = function (err, token) { }) { var self = this; diff --git a/src/Client/InternalClient.js b/src/Client/InternalClient.js index 93a55bf17..b088e1adb 100644 --- a/src/Client/InternalClient.js +++ b/src/Client/InternalClient.js @@ -714,6 +714,63 @@ class InternalClient { }); } + + //def overwritePermissions + overwritePermissions(channel, role, updated){ + var self = this; + return new Promise((resolve, reject) => { + channel = self.resolver.resolveChannel(channel).catch(reject).then(next); + function next(channel){ + var user = self.resolver.resolverUser(role); + + var data = {}; + data.allow = 0; + data.deny = 0; + + updated.allow = updated.allow || []; + updated.deny = updated.deny || []; + + if(role instanceof Role){ + data.id = role.id; + data.type = "role"; + }else if(user){ + data.id = user.id; + data.type = "member"; + }else{ + reject(new Error("role incorrect")); + return; + } + + for(var perm of updated.allow){ + if(perm instanceof String || typeof perm === "string"){ + data.allow |= (Constants.Permissions[perm] || 0); + }else{ + data.allow |= perm; + } + } + + for(var perm of updated.deny){ + if(perm instanceof String || typeof perm === "string"){ + data.deny |= (Constants.Permissions[perm] || 0); + }else{ + data.deny |= perm; + } + } + + request + .put(Endpoints.CHANNEL_PERMISSIONS(channel)+"/"+data.id) + .set("authorization", self.token) + .send(data) + .end(function (err) { + if (err) { + reject(err); + } else { + resolve(); + } + }); + } + }); + } sendWS(object) { if (this.websocket) diff --git a/src/index.js b/src/index.js index 7ab3bbe24..ab8bf533d 100644 --- a/src/index.js +++ b/src/index.js @@ -5,10 +5,26 @@ module.exports = { var a = new module.exports.Client(); a.on("debug", (m) => console.log("[debug]",m)); a.on("warn", (m) => console.log("[warn]", m)); - +var start = Date.now(); a.on("message", m => { + console.log("msgmsgmsg"); if(m.content === "$$$"){ - a.createInvite(m.channel).then(invite => a.reply(m, invite)).catch(e => console.log(e.stack)); + a.createServer("pongping", "london") + .then( server => { + a.createChannel(server, "pingpong", "text") + .then( channel => { + a.sendMessage(channel, "$$$") + .then( msg => { + a.leaveServer(msg.channel.server) + .then(() => { + console.log("!!! " + (Date.now() - start)); + }); + }) + .catch(error); + }) + .catch(error); + }) + .catch(error) } }); a.on("userTypingStart", (user, chan) => { @@ -17,6 +33,18 @@ a.on("userTypingStart", (user, chan) => { a.on("userTypingStop", (user, chan) => { console.log(user.username + " stopped typing"); }); +a.on("ready", () => { + for(var server of a.internal.servers){ + if(server.name === "craptown"){ + a.leaveServer(server); + } + } +}); + +function error(e){ + throw e; + process.exit(0); +} a.login(process.env["discordEmail"], process.env["discordPass"]).catch((e)=>console.log(e)); \ No newline at end of file