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;
}
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, [{
key: "roles",
get: function get() {

View File

@@ -79,12 +79,11 @@ var Message = (function (_Equality) {
});
}
Message.prototype.isMentioned = function isMentioned(user) {
user = this.client.internal.resolver.resolveUser(user);
if (!user) {
return false;
}
for (var _iterator = this.mentions, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
Message.prototype.toObject = function toObject() {
var keys = ['id', 'timestamp', 'everyoneMentioned', 'pinned', 'editedTimestamp', 'content', 'cleanContent', 'tts', 'attachments', 'embeds'],
obj = {};
for (var _iterator = keys, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
var _ref;
if (_isArray) {
@@ -96,7 +95,39 @@ var Message = (function (_Equality) {
_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) {
return true;

View File

@@ -44,6 +44,30 @@ var PMChannel = (function (_Channel) {
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() {
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
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) {
var _this = this;

View File

@@ -42,6 +42,30 @@ var Role = (function () {
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) {
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) {
var _this2 = this;
@@ -285,19 +322,19 @@ var Server = (function (_Equality) {
};
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]();;) {
var _ref3;
for (var _iterator4 = this.channels.getAll("type", "voice"), _isArray4 = Array.isArray(_iterator4), _i4 = 0, _iterator4 = _isArray4 ? _iterator4 : _iterator4[Symbol.iterator]();;) {
var _ref4;
if (_isArray3) {
if (_i3 >= _iterator3.length) break;
_ref3 = _iterator3[_i3++];
if (_isArray4) {
if (_i4 >= _iterator4.length) break;
_ref4 = _iterator4[_i4++];
} else {
_i3 = _iterator3.next();
if (_i3.done) break;
_ref3 = _i3.value;
_i4 = _iterator4.next();
if (_i4.done) break;
_ref4 = _i4.value;
}
var chan = _ref3;
var chan = _ref4;
if (chan.members.has("id", user.id)) {
chan.members.remove(user);
@@ -310,19 +347,19 @@ var Server = (function (_Equality) {
Server.prototype.equalsStrict = function equalsStrict(obj) {
if (obj instanceof Server) {
for (var _iterator4 = strictKeys, _isArray4 = Array.isArray(_iterator4), _i4 = 0, _iterator4 = _isArray4 ? _iterator4 : _iterator4[Symbol.iterator]();;) {
var _ref4;
for (var _iterator5 = strictKeys, _isArray5 = Array.isArray(_iterator5), _i5 = 0, _iterator5 = _isArray5 ? _iterator5 : _iterator5[Symbol.iterator]();;) {
var _ref5;
if (_isArray4) {
if (_i4 >= _iterator4.length) break;
_ref4 = _iterator4[_i4++];
if (_isArray5) {
if (_i5 >= _iterator5.length) break;
_ref5 = _iterator5[_i5++];
} else {
_i4 = _iterator4.next();
if (_i4.done) break;
_ref4 = _i4.value;
_i5 = _iterator5.next();
if (_i5.done) break;
_ref5 = _i5.value;
}
var key = _ref4;
var key = _ref5;
if (obj[key] !== this[key]) {
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) {
userOrRole = this.client.internal.resolver.resolveUser(userOrRole);
if (userOrRole) {
@@ -74,26 +102,7 @@ var ServerChannel = (function (_Channel) {
var permissions = 0;
for (var _iterator = userRoles, _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 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]();;) {
for (var _iterator2 = userRoles, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {
var _ref2;
if (_isArray2) {
@@ -105,7 +114,26 @@ var ServerChannel = (function (_Channel) {
_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) {
permissions = permissions & ~overwrite.deny;

View File

@@ -35,6 +35,15 @@ var TextChannel = (function (_ServerChannel) {
/* 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() {
return this.client.setChannelTopic.apply(this.client, _UtilArgumentRegulariser.reg(this, arguments));
};

View File

@@ -51,6 +51,36 @@ var User = (function (_Equality) {
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) {
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
}
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() {
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"); } }
var TokenCacher = (function () {
function TokenCacher() {
_classCallCheck(this, TokenCacher);
}
function 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() {
return null;
};
TokenCacher.prototype.getToken = function getToken() {
return null;
};
TokenCacher.prototype.init = function init(ind) {
this.done = true;
};
TokenCacher.prototype.init = function init(ind) {
this.done = true;
};
return TokenCacher;
return TokenCacher;
})();
exports["default"] = TokenCacher;

View File

@@ -37,4 +37,15 @@ export default class Emoji {
get getURL() {
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;
}
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){
user = this.client.internal.resolver.resolveUser(user);
if (!user) {

View File

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

View File

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

View File

@@ -47,6 +47,17 @@ export default class Role {
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){
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);
}
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) {
user = this.client.internal.resolver.resolveUser(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){
userOrRole = this.client.internal.resolver.resolveUser(userOrRole);
if (userOrRole) {

View File

@@ -18,6 +18,15 @@ export default class TextChannel extends ServerChannel{
return this.messages.get("id", this.lastMessageID);
}
toObject() {
let obj = super.toObject();
obj.topic = this.topic;
obj.lastMessageID = this.lastMessageID;
return obj;
}
setTopic(){
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();
}
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){
if(obj instanceof User)
return (

View File

@@ -13,6 +13,16 @@ export default class VoiceChannel extends ServerChannel{
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 () { }) {
return this.client.joinVoiceChannel.apply(this.client, [this, callback]);
}