diff --git a/src/structures/Guild.js b/src/structures/Guild.js index 3482736fa..0d43bd44d 100644 --- a/src/structures/Guild.js +++ b/src/structures/Guild.js @@ -245,7 +245,7 @@ class Guild { */ get iconURL() { if (!this.icon) return null; - return Constants.Endpoints.guildIcon(this.id, this.icon); + return Constants.Endpoints.Guild(this).Icon(this.client.options.http.cdn, this.icon); } /** @@ -255,7 +255,7 @@ class Guild { */ get splashURL() { if (!this.splash) return null; - return Constants.Endpoints.guildSplash(this.id, this.splash); + return Constants.Endpoints.Guild(this).Splash(this.client.options.http.cdn, this.splash); } /** diff --git a/src/structures/User.js b/src/structures/User.js index 257609ff7..52da6adbf 100644 --- a/src/structures/User.js +++ b/src/structures/User.js @@ -109,7 +109,7 @@ class User { */ get avatarURL() { if (!this.avatar) return null; - return Constants.Endpoints.avatar(this.id, this.avatar); + return Constants.Endpoints.User(this).Avatar(this.client.options.http.cdn, this.avatar); } /** diff --git a/src/util/Constants.js b/src/util/Constants.js index 2da695b4d..f43852cf2 100644 --- a/src/util/Constants.js +++ b/src/util/Constants.js @@ -66,6 +66,7 @@ exports.DefaultOptions = { http: { version: 6, host: 'https://discordapp.com', + cdn: 'https://cdn.discordapp.com', }, }; @@ -83,7 +84,7 @@ exports.Errors = { INVALID_TOKEN: 'An invalid token was provided.', }; -exports.Endpoints = { +const Endpoints = exports.Endpoints = { User: userID => { if (userID.id) userID = userID.id; const base = `/users/${userID}`; @@ -97,9 +98,9 @@ exports.Endpoints = { Note: id => `${base}/notes/${id}`, Mentions: (limit, roles, everyone, guildID) => `${base}/mentions?limit=${limit}&roles=${roles}&everyone=${everyone}${guildID ? `&guild_id=${guildID}` : ''}`, - Avatar: hash => { + Avatar: (root, hash) => { if (userID === '1') return hash; - return hash; + return Endpoints.CDN(root).Avatar(userID, hash); }, }; }, @@ -124,8 +125,8 @@ exports.Endpoints = { ack: `${base}/ack`, settings: `${base}/settings`, Emoji: emojiID => `${base}/emojis/${emojiID}`, - Icon: hash => `cdn/${hash}`, - Splash: hash => `cdn/${hash}`, + Icon: (root, hash) => Endpoints.CDN(root).Icon(guildID, hash), + Splash: (root, hash) => Endpoints.CDN(root).Splash(guildID, hash), Role: roleID => `${base}/roles/${roleID}`, Member: memberID => { const mbase = `${base}/members/${memberID}`; @@ -176,9 +177,14 @@ exports.Endpoints = { }, Message: m => exports.Endpoints.Channel(m.channel).Message(m), Member: m => exports.Endpoints.Guild(m.guild).Member(m), - CDN: { - Emoji: emojiID => `/emojis/$${emojiID}.png`, - Asset: name => `/assets/${name}`, + CDN(root) { + return { + Emoji: emojiID => `${root}/emojis/$${emojiID}.png`, + Asset: name => `${root}/assets/${name}`, + Avatar: (userID, hash) => `${root}/avatars/${userID}/${hash}.${hash.startsWith('a_') ? 'gif' : 'png'}?size=2048`, + Icon: (guildID, hash) => `${root}/icons/${guildID}/${hash}.jpg`, + Splash: (guildID, hash) => `${root}/splashes/${guildID}/${hash}.jpg`, + }; }, OAUTH2: { Application: appID => {