diff --git a/lib/Constants.js b/lib/Constants.js index 2178a927d..24667eebb 100644 --- a/lib/Constants.js +++ b/lib/Constants.js @@ -4,6 +4,7 @@ exports.__esModule = true; var Constants = {}; var API = Constants.API = "https://discordapp.com/api"; +var CDN = Constants.CDN = "https://cdn.discordapp.com"; var Endpoints = Constants.Endpoints = { // general endpoints @@ -26,6 +27,11 @@ var Endpoints = Constants.Endpoints = { return API + "/invite/" + id; }, + // emojis + EMOJI: function EMOJI(emojiID) { + return CDN + "/emojis/" + emojiID + ".png"; + }, + // servers SERVERS: API + "/guilds", SERVER: function SERVER(serverID) { diff --git a/lib/Structures/Emoji.js b/lib/Structures/Emoji.js new file mode 100644 index 000000000..5a38280e9 --- /dev/null +++ b/lib/Structures/Emoji.js @@ -0,0 +1,58 @@ +"use strict"; + +exports.__esModule = true; + +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"); } } + +var _Constants = require("../Constants"); + +/* example data +{ + id: '164585980739846145' + name: 'wlfSS', + roles: [ '135829612780322816' ], + require_colons: false, + managed: true, +} +*/ + +var Emoji = (function () { + function Emoji(data, server) { + _classCallCheck(this, Emoji); + + this.server = server; + this.id = data.id; + this.name = data.name; + this.roleList = data.roles; + this.colons = data.require_colons; + this.managed = data.managed; + } + + _createClass(Emoji, [{ + key: "roles", + get: function get() { + var roleGroup = []; + + if (this.managed) { + for (var i = 0; i < this.roleList.length; i++) { + var roleID = this.roleList[i].toString(); + var role = this.server.roles.get("id", roleID); + roleGroup.push(role); + } + } + return roleGroup; + } + }, { + key: "getURL", + get: function get() { + return _Constants.Endpoints.EMOJI(this.id); + } + }]); + + return Emoji; +})(); + +exports["default"] = Emoji; +module.exports = exports["default"]; diff --git a/lib/Structures/Server.js b/lib/Structures/Server.js index 7512f7f63..52aeaa925 100644 --- a/lib/Structures/Server.js +++ b/lib/Structures/Server.js @@ -45,6 +45,10 @@ var _Role = require("./Role"); var _Role2 = _interopRequireDefault(_Role); +var _Emoji = require("./Emoji"); + +var _Emoji2 = _interopRequireDefault(_Emoji); + var _UtilArgumentRegulariser = require("../Util/ArgumentRegulariser"); var strictKeys = ["region", "ownerID", "name", "id", "icon", "afkTimeout", "afkChannelID"]; @@ -77,6 +81,7 @@ var Server = (function (_Equality) { this.members = new _UtilCache2["default"](); this.channels = new _UtilCache2["default"](); this.roles = new _UtilCache2["default"](); + this.emojis = new _UtilCache2["default"](); this.icon = data.icon; this.afkTimeout = data.afk_timeout; this.afkChannelID = data.afk_channel_id || data.afkChannelID; @@ -94,6 +99,16 @@ var Server = (function (_Equality) { }); } + if (data.emojis instanceof _UtilCache2["default"]) { + data.emojis.forEach(function (emoji) { + return _this.emojis.add(emoji); + }); + } else { + data.emojis.forEach(function (dataEmoji) { + _this.emojis.add(new _Emoji2["default"](dataEmoji, _this)); + }); + } + if (data.members instanceof _UtilCache2["default"]) { data.members.forEach(function (member) { return _this.members.add(member); diff --git a/lib/Util/TokenCacher-shim.js b/lib/Util/TokenCacher-shim.js index f483e9575..53412d365 100644 --- a/lib/Util/TokenCacher-shim.js +++ b/lib/Util/TokenCacher-shim.js @@ -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; diff --git a/src/Constants.js b/src/Constants.js index 0f8020665..fad709a18 100644 --- a/src/Constants.js +++ b/src/Constants.js @@ -3,6 +3,7 @@ const Constants = {}; const API = Constants.API = "https://discordapp.com/api"; +const CDN = Constants.CDN = "https://cdn.discordapp.com"; const Endpoints = Constants.Endpoints = { // general endpoints @@ -17,6 +18,9 @@ const Endpoints = Constants.Endpoints = { AVATAR : (userID, avatar) => `${API}/users/${userID}/avatars/${avatar}.jpg`, INVITE: (id) => `${API}/invite/${id}`, + // emojis + EMOJI: (emojiID) => `${CDN}/emojis/${emojiID}.png`, + // servers SERVERS: `${API}/guilds`, SERVER: (serverID) => `${Endpoints.SERVERS}/${serverID}`, diff --git a/src/Structures/Emoji.js b/src/Structures/Emoji.js new file mode 100644 index 000000000..9a722bbd0 --- /dev/null +++ b/src/Structures/Emoji.js @@ -0,0 +1,40 @@ +"use strict"; + +import {Endpoints} from "../Constants"; +/* example data +{ + id: '164585980739846145' + name: 'wlfSS', + roles: [ '135829612780322816' ], + require_colons: false, + managed: true, +} +*/ + +export default class Emoji { + constructor(data, server) { + this.server = server; + this.id = data.id; + this.name = data.name; + this.roleList = data.roles; + this.colons = data.require_colons; + this.managed = data.managed; + } + + get roles() { + var roleGroup = []; + + if (this.managed) { + for (var i = 0; i < this.roleList.length; i++) { + var roleID = this.roleList[i].toString(); + var role = this.server.roles.get("id", roleID); + roleGroup.push(role); + } + } + return roleGroup + } + + get getURL() { + return Endpoints.EMOJI(this.id); + } +} diff --git a/src/Structures/Server.js b/src/Structures/Server.js index 3e92ab2ec..4775c438b 100644 --- a/src/Structures/Server.js +++ b/src/Structures/Server.js @@ -13,6 +13,7 @@ import User from "./User"; import TextChannel from "./TextChannel"; import VoiceChannel from "./VoiceChannel"; import Role from "./Role"; +import Emoji from "./Emoji"; import {reg} from "../Util/ArgumentRegulariser"; var strictKeys = [ @@ -42,6 +43,7 @@ export default class Server extends Equality { this.members = new Cache(); this.channels = new Cache(); this.roles = new Cache(); + this.emojis = new Cache(); this.icon = data.icon; this.afkTimeout = data.afk_timeout; this.afkChannelID = data.afk_channel_id || data.afkChannelID; @@ -57,6 +59,14 @@ export default class Server extends Equality { }); } + if (data.emojis instanceof Cache) { + data.emojis.forEach((emoji) => this.emojis.add(emoji)); + } else { + data.emojis.forEach((dataEmoji) => { + this.emojis.add(new Emoji(dataEmoji, this)); + }) + } + if (data.members instanceof Cache) { data.members.forEach((member) => this.members.add(member)); } else {