add .toObject() method to structures (#522)

* add .toObject() method to structures

* add compiled PMChannel change from last commit

* uncomment members in VoiceChannel toObject method
This commit is contained in:
Brian Tanner
2016-08-16 23:53:07 +07:00
committed by abal
parent e42178181d
commit fdfd41dd8c
21 changed files with 426 additions and 58 deletions

View File

@@ -30,6 +30,30 @@ var Emoji = (function () {
this.managed = data.managed; this.managed = data.managed;
} }
Emoji.prototype.toObject = function toObject() {
var keys = ['id', 'name', 'roleList', 'colons', 'managed'],
obj = {};
for (var _iterator = keys, _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 k = _ref;
obj[k] = this[k];
}
return obj;
};
_createClass(Emoji, [{ _createClass(Emoji, [{
key: "roles", key: "roles",
get: function get() { get: function get() {

View File

@@ -79,12 +79,11 @@ var Message = (function (_Equality) {
}); });
} }
Message.prototype.isMentioned = function isMentioned(user) { Message.prototype.toObject = function toObject() {
user = this.client.internal.resolver.resolveUser(user); var keys = ['id', 'timestamp', 'everyoneMentioned', 'pinned', 'editedTimestamp', 'content', 'cleanContent', 'tts', 'attachments', 'embeds'],
if (!user) { obj = {};
return false;
} for (var _iterator = keys, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
for (var _iterator = this.mentions, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
var _ref; var _ref;
if (_isArray) { if (_isArray) {
@@ -96,7 +95,39 @@ var Message = (function (_Equality) {
_ref = _i.value; _ref = _i.value;
} }
var mention = _ref; var k = _ref;
obj[k] = this[k];
}
obj.channelID = this.channel ? this.channel.id : null;
obj.serverID = this.server ? this.server.id : null;
obj.author = this.author.toObject();
obj.mentions = this.mentions.map(function (m) {
return m.toObject();
});
return obj;
};
Message.prototype.isMentioned = function isMentioned(user) {
user = this.client.internal.resolver.resolveUser(user);
if (!user) {
return false;
}
for (var _iterator2 = this.mentions, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {
var _ref2;
if (_isArray2) {
if (_i2 >= _iterator2.length) break;
_ref2 = _iterator2[_i2++];
} else {
_i2 = _iterator2.next();
if (_i2.done) break;
_ref2 = _i2.value;
}
var mention = _ref2;
if (mention.id == user.id) { if (mention.id == user.id) {
return true; return true;

View File

@@ -44,6 +44,30 @@ var PMChannel = (function (_Channel) {
return this.recipient.toString(); return this.recipient.toString();
}; };
PMChannel.prototype.toObject = function toObject() {
var keys = ['type', 'lastMessageID', 'recipient'],
obj = {};
for (var _iterator = keys, _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 k = _ref;
obj[k] = this[k];
}
return obj;
};
PMChannel.prototype.sendMessage = function sendMessage() { PMChannel.prototype.sendMessage = function sendMessage() {
return this.client.sendMessage.apply(this.client, _UtilArgumentRegulariser.reg(this, arguments)); return this.client.sendMessage.apply(this.client, _UtilArgumentRegulariser.reg(this, arguments));
}; };

View File

@@ -20,6 +20,30 @@ var PermissionOverwrite = (function () {
// returns an array of allowed permissions // returns an array of allowed permissions
PermissionOverwrite.prototype.toObject = function toObject() {
var keys = ['id', 'type', 'allow', 'deny'],
obj = {};
for (var _iterator = keys, _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 k = _ref;
obj[k] = this[k];
}
return obj;
};
PermissionOverwrite.prototype.setAllowed = function setAllowed(allowedArray) { PermissionOverwrite.prototype.setAllowed = function setAllowed(allowedArray) {
var _this = this; var _this = this;

View File

@@ -42,6 +42,30 @@ var Role = (function () {
this.mentionable = data.mentionable || false; this.mentionable = data.mentionable || false;
} }
Role.prototype.toObject = function toObject() {
var keys = ['id', 'position', 'permissions', 'name', 'managed', 'hoist', 'color', 'mentionable'],
obj = {};
for (var _iterator = keys, _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 k = _ref;
obj[k] = this[k];
}
return obj;
};
Role.prototype.serialise = function serialise(explicit) { Role.prototype.serialise = function serialise(explicit) {
var _this = this; var _this = this;

View File

@@ -200,6 +200,43 @@ var Server = (function (_Equality) {
} }
} }
Server.prototype.toObject = function toObject() {
var keys = ['id', 'name', 'region', 'ownerID', 'icon', 'afkTimeout', 'afkChannelID', 'large', 'memberCount'],
obj = {};
for (var _iterator3 = keys, _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 k = _ref3;
obj[k] = this[k];
}
obj.members = this.members.map(function (member) {
return member.toObject();
});
obj.channels = this.channels.map(function (channel) {
return channel.toObject();
});
obj.roles = this.roles.map(function (role) {
return role.toObject();
});
obj.emojis = this.emojis.map(function (emoji) {
return emoji.toObject();
});
return obj;
};
Server.prototype.detailsOf = function detailsOf(user) { Server.prototype.detailsOf = function detailsOf(user) {
var _this2 = this; var _this2 = this;
@@ -285,19 +322,19 @@ var Server = (function (_Equality) {
}; };
Server.prototype.eventVoiceLeave = function eventVoiceLeave(user) { Server.prototype.eventVoiceLeave = function eventVoiceLeave(user) {
for (var _iterator3 = this.channels.getAll("type", "voice"), _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) { for (var _iterator4 = this.channels.getAll("type", "voice"), _isArray4 = Array.isArray(_iterator4), _i4 = 0, _iterator4 = _isArray4 ? _iterator4 : _iterator4[Symbol.iterator]();;) {
var _ref3; var _ref4;
if (_isArray3) { if (_isArray4) {
if (_i3 >= _iterator3.length) break; if (_i4 >= _iterator4.length) break;
_ref3 = _iterator3[_i3++]; _ref4 = _iterator4[_i4++];
} else { } else {
_i3 = _iterator3.next(); _i4 = _iterator4.next();
if (_i3.done) break; if (_i4.done) break;
_ref3 = _i3.value; _ref4 = _i4.value;
} }
var chan = _ref3; var chan = _ref4;
if (chan.members.has("id", user.id)) { if (chan.members.has("id", user.id)) {
chan.members.remove(user); chan.members.remove(user);
@@ -310,19 +347,19 @@ var Server = (function (_Equality) {
Server.prototype.equalsStrict = function equalsStrict(obj) { Server.prototype.equalsStrict = function equalsStrict(obj) {
if (obj instanceof Server) { if (obj instanceof Server) {
for (var _iterator4 = strictKeys, _isArray4 = Array.isArray(_iterator4), _i4 = 0, _iterator4 = _isArray4 ? _iterator4 : _iterator4[Symbol.iterator]();;) { for (var _iterator5 = strictKeys, _isArray5 = Array.isArray(_iterator5), _i5 = 0, _iterator5 = _isArray5 ? _iterator5 : _iterator5[Symbol.iterator]();;) {
var _ref4; var _ref5;
if (_isArray4) { if (_isArray5) {
if (_i4 >= _iterator4.length) break; if (_i5 >= _iterator5.length) break;
_ref4 = _iterator4[_i4++]; _ref5 = _iterator5[_i5++];
} else { } else {
_i4 = _iterator4.next(); _i5 = _iterator5.next();
if (_i4.done) break; if (_i5.done) break;
_ref4 = _i4.value; _ref5 = _i5.value;
} }
var key = _ref4; var key = _ref5;
if (obj[key] !== this[key]) { if (obj[key] !== this[key]) {
return false; return false;

View File

@@ -47,6 +47,34 @@ var ServerChannel = (function (_Channel) {
} }
} }
ServerChannel.prototype.toObject = function toObject() {
var keys = ['id', 'name', 'type', 'position'],
obj = {};
for (var _iterator = keys, _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 k = _ref;
obj[k] = this[k];
}
obj.permissionOverwrites = this.permissionOverwrites.map(function (p) {
return p.toObject();
});
return obj;
};
ServerChannel.prototype.permissionsOf = function permissionsOf(userOrRole) { ServerChannel.prototype.permissionsOf = function permissionsOf(userOrRole) {
userOrRole = this.client.internal.resolver.resolveUser(userOrRole); userOrRole = this.client.internal.resolver.resolveUser(userOrRole);
if (userOrRole) { if (userOrRole) {
@@ -74,26 +102,7 @@ var ServerChannel = (function (_Channel) {
var permissions = 0; var permissions = 0;
for (var _iterator = userRoles, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) { for (var _iterator2 = userRoles, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[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 serverRole = _ref;
if (serverRole) {
permissions |= serverRole.permissions;
}
}
for (var _iterator2 = roleOverwrites.concat(memberOverwrites), _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {
var _ref2; var _ref2;
if (_isArray2) { if (_isArray2) {
@@ -105,7 +114,26 @@ var ServerChannel = (function (_Channel) {
_ref2 = _i2.value; _ref2 = _i2.value;
} }
var overwrite = _ref2; var serverRole = _ref2;
if (serverRole) {
permissions |= serverRole.permissions;
}
}
for (var _iterator3 = roleOverwrites.concat(memberOverwrites), _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 overwrite = _ref3;
if (overwrite) { if (overwrite) {
permissions = permissions & ~overwrite.deny; permissions = permissions & ~overwrite.deny;

View File

@@ -35,6 +35,15 @@ var TextChannel = (function (_ServerChannel) {
/* warning! may return null */ /* warning! may return null */
TextChannel.prototype.toObject = function toObject() {
var obj = _ServerChannel.prototype.toObject.call(this);
obj.topic = this.topic;
obj.lastMessageID = this.lastMessageID;
return obj;
};
TextChannel.prototype.setTopic = function setTopic() { TextChannel.prototype.setTopic = function setTopic() {
return this.client.setChannelTopic.apply(this.client, _UtilArgumentRegulariser.reg(this, arguments)); return this.client.setChannelTopic.apply(this.client, _UtilArgumentRegulariser.reg(this, arguments));
}; };

View File

@@ -51,6 +51,36 @@ var User = (function (_Equality) {
return this.mention(); return this.mention();
}; };
User.prototype.toObject = function toObject() {
var keys = ['id', 'username', 'discriminator', 'avatar', 'bot', 'status', 'game', 'note', 'voiceState', 'speaking'],
obj = {};
for (var _iterator = keys, _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 k = _ref;
obj[k] = this[k];
}
obj.typing = {
since: this.typing.since,
channelID: this.typing.channel ? this.typing.channel.id : null
};
obj.voiceChannelID = this.voiceChannel ? this.voiceChannel.id : null;
return obj;
};
User.prototype.equalsStrict = function equalsStrict(obj) { User.prototype.equalsStrict = function equalsStrict(obj) {
if (obj instanceof User) return this.id === obj.id && this.username === obj.username && this.discriminator === obj.discriminator && this.avatar === obj.avatar && this.status === obj.status && (this.game === obj.game || this.game && obj.game && this.game.name === obj.game.name);else return false; if (obj instanceof User) return this.id === obj.id && this.username === obj.username && this.discriminator === obj.discriminator && this.avatar === obj.avatar && this.status === obj.status && (this.game === obj.game || this.game && obj.game && this.game.name === obj.game.name);else return false;
}; };

View File

@@ -31,6 +31,18 @@ var VoiceChannel = (function (_ServerChannel) {
this.bitrate = Math.round(this._bitrate / 1000); // store as kbps this.bitrate = Math.round(this._bitrate / 1000); // store as kbps
} }
VoiceChannel.prototype.toObject = function toObject() {
var obj = _ServerChannel.prototype.toObject.call(this);
obj.userLimit = this.userLimit;
obj.bitrate = this.bitrate;
obj.members = this.members.map(function (member) {
return member.toObject();
});
return obj;
};
VoiceChannel.prototype.join = function join() { VoiceChannel.prototype.join = function join() {
var callback = arguments.length <= 0 || arguments[0] === undefined ? function () {} : arguments[0]; var callback = arguments.length <= 0 || arguments[0] === undefined ? function () {} : arguments[0];

View File

@@ -6,23 +6,23 @@ exports.__esModule = true;
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
var TokenCacher = (function () { var TokenCacher = (function () {
function TokenCacher() { function TokenCacher() {
_classCallCheck(this, TokenCacher); _classCallCheck(this, TokenCacher);
} }
TokenCacher.prototype.setToken = function setToken() {}; TokenCacher.prototype.setToken = function setToken() {};
TokenCacher.prototype.save = function save() {}; TokenCacher.prototype.save = function save() {};
TokenCacher.prototype.getToken = function getToken() { TokenCacher.prototype.getToken = function getToken() {
return null; return null;
}; };
TokenCacher.prototype.init = function init(ind) { TokenCacher.prototype.init = function init(ind) {
this.done = true; this.done = true;
}; };
return TokenCacher; return TokenCacher;
})(); })();
exports["default"] = TokenCacher; exports["default"] = TokenCacher;

View File

@@ -37,4 +37,15 @@ export default class Emoji {
get getURL() { get getURL() {
return Endpoints.EMOJI(this.id); return Endpoints.EMOJI(this.id);
} }
toObject() {
let keys = ['id', 'name', 'roleList', 'colons', 'managed'],
obj = {};
for (let k of keys) {
obj[k] = this[k];
}
return obj;
}
} }

View File

@@ -58,6 +58,22 @@ export default class Message extends Equality{
return this.author; return this.author;
} }
toObject() {
let keys = ['id', 'timestamp', 'everyoneMentioned', 'pinned', 'editedTimestamp', 'content', 'cleanContent', 'tts', 'attachments', 'embeds'],
obj = {};
for (let k of keys) {
obj[k] = this[k];
}
obj.channelID = this.channel ? this.channel.id : null;
obj.serverID = this.server ? this.server.id : null;
obj.author = this.author.toObject();
obj.mentions = this.mentions.map(m => m.toObject());
return obj;
}
isMentioned(user){ isMentioned(user){
user = this.client.internal.resolver.resolveUser(user); user = this.client.internal.resolver.resolveUser(user);
if (!user) { if (!user) {

View File

@@ -24,6 +24,17 @@ export default class PMChannel extends Channel {
return this.recipient.toString(); return this.recipient.toString();
} }
toObject() {
let keys = ['type', 'lastMessageID', 'recipient'],
obj = {};
for (let k of keys) {
obj[k] = this[k];
}
return obj;
}
sendMessage(){ sendMessage(){
return this.client.sendMessage.apply(this.client, reg(this, arguments)); return this.client.sendMessage.apply(this.client, reg(this, arguments));
} }

View File

@@ -43,6 +43,17 @@ export default class PermissionOverwrite {
return denied; return denied;
} }
toObject() {
let keys = ['id', 'type', 'allow', 'deny'],
obj = {};
for (let k of keys) {
obj[k] = this[k];
}
return obj;
}
setAllowed(allowedArray){ setAllowed(allowedArray){
allowedArray.forEach( (permission) => { allowedArray.forEach( (permission) => {
if(permission instanceof String || typeof permission === "string"){ if(permission instanceof String || typeof permission === "string"){

View File

@@ -47,6 +47,17 @@ export default class Role {
return new Date((+this.id / 4194304) + 1420070400000); return new Date((+this.id / 4194304) + 1420070400000);
} }
toObject() {
let keys = ['id', 'position', 'permissions', 'name', 'managed', 'hoist', 'color', 'mentionable'],
obj = {};
for (let k of keys) {
obj[k] = this[k];
}
return obj;
}
serialise(explicit){ serialise(explicit){
var hp = (perm) => this.hasPermission(perm, explicit); var hp = (perm) => this.hasPermission(perm, explicit);

View File

@@ -132,6 +132,22 @@ export default class Server extends Equality {
return new Date((+this.id / 4194304) + 1420070400000); return new Date((+this.id / 4194304) + 1420070400000);
} }
toObject() {
var keys = ['id', 'name', 'region', 'ownerID', 'icon', 'afkTimeout', 'afkChannelID', 'large', 'memberCount'],
obj = {};
for (let k of keys) {
obj[k] = this[k];
}
obj.members = this.members.map(member => member.toObject());
obj.channels = this.channels.map(channel => channel.toObject());
obj.roles = this.roles.map(role => role.toObject());
obj.emojis = this.emojis.map(emoji => emoji.toObject());
return obj;
}
detailsOf(user) { detailsOf(user) {
user = this.client.internal.resolver.resolveUser(user); user = this.client.internal.resolver.resolveUser(user);
if (user) { if (user) {

View File

@@ -21,6 +21,19 @@ export default class ServerChannel extends Channel{
} }
} }
toObject() {
let keys = ['id', 'name', 'type', 'position'],
obj = {};
for (let k of keys) {
obj[k] = this[k];
}
obj.permissionOverwrites = this.permissionOverwrites.map(p => p.toObject());
return obj;
}
permissionsOf(userOrRole){ permissionsOf(userOrRole){
userOrRole = this.client.internal.resolver.resolveUser(userOrRole); userOrRole = this.client.internal.resolver.resolveUser(userOrRole);
if (userOrRole) { if (userOrRole) {

View File

@@ -18,6 +18,15 @@ export default class TextChannel extends ServerChannel{
return this.messages.get("id", this.lastMessageID); return this.messages.get("id", this.lastMessageID);
} }
toObject() {
let obj = super.toObject();
obj.topic = this.topic;
obj.lastMessageID = this.lastMessageID;
return obj;
}
setTopic(){ setTopic(){
return this.client.setChannelTopic.apply(this.client, reg(this, arguments)); return this.client.setChannelTopic.apply(this.client, reg(this, arguments));
} }

View File

@@ -49,6 +49,23 @@ export default class User extends Equality {
return this.mention(); return this.mention();
} }
toObject() {
let keys = ['id', 'username', 'discriminator', 'avatar', 'bot', 'status', 'game', 'note', 'voiceState', 'speaking'],
obj = {};
for (let k of keys) {
obj[k] = this[k];
}
obj.typing = {
since: this.typing.since,
channelID: this.typing.channel ? this.typing.channel.id : null
};
obj.voiceChannelID = this.voiceChannel ? this.voiceChannel.id : null;
return obj;
}
equalsStrict(obj){ equalsStrict(obj){
if(obj instanceof User) if(obj instanceof User)
return ( return (

View File

@@ -13,6 +13,16 @@ export default class VoiceChannel extends ServerChannel{
this.bitrate = Math.round(this._bitrate / 1000); // store as kbps this.bitrate = Math.round(this._bitrate / 1000); // store as kbps
} }
toObject() {
let obj = super.toObject();
obj.userLimit = this.userLimit;
obj.bitrate = this.bitrate;
obj.members = this.members.map(member => member.toObject());
return obj;
}
join(callback = function () { }) { join(callback = function () { }) {
return this.client.joinVoiceChannel.apply(this.client, [this, callback]); return this.client.joinVoiceChannel.apply(this.client, [this, callback]);
} }