From c4e1e4f50f9ff60f336f703dbf9c094d97fed61a Mon Sep 17 00:00:00 2001 From: Programmix Date: Sun, 2 Oct 2016 16:21:08 -0700 Subject: [PATCH] Add InviteResolvable (#766) * Add InviteResolvable Add InviteResolvable * Return data as fallback instead * Rename resolver method --- src/client/Client.js | 5 +++-- src/client/ClientDataResolver.js | 20 ++++++++++++++++++++ 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/src/client/Client.js b/src/client/Client.js index 494dd5cbc..bbc09aada 100644 --- a/src/client/Client.js +++ b/src/client/Client.js @@ -265,10 +265,11 @@ class Client extends EventEmitter { /** * Fetches an invite object from an invite code. - * @param {string} code the invite code. + * @param {InviteResolvable} invite An invite code or URL * @returns {Promise} */ - fetchInvite(code) { + fetchInvite(invite) { + const code = this.resolver.resolveInviteCode(invite); return this.rest.methods.getInvite(code); } diff --git a/src/client/ClientDataResolver.js b/src/client/ClientDataResolver.js index 70efc8470..f8f027e0d 100644 --- a/src/client/ClientDataResolver.js +++ b/src/client/ClientDataResolver.js @@ -205,6 +205,26 @@ class ClientDataResolver { return String(data); } + /** + * Data that can be resolved to give an invite code. This can be: + * * An invite code + * * An invite URL + * @typedef {string} InviteResolvable + */ + + /** + * Resolves InviteResolvable to an invite code + * @param {InviteResolvable} data The invite resolvable to resolve + * @returns {string} + */ + resolveInviteCode(data) { + const inviteRegex = /discord(?:app)?\.(?:gg|com\/invite)\/([a-z0-9]{5})/i; + const match = inviteRegex.exec(data); + + if (match && match[1]) return match[1]; + return data; + } + /** * Data that can be resolved to give a Buffer. This can be: * * A Buffer