From 865acecaefa43737d797ac3896aa46768e37e9a9 Mon Sep 17 00:00:00 2001 From: Kevin Ansfield Date: Mon, 9 Jul 2018 10:32:39 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20Koenig=20-=20Support=20schema-le?= =?UTF-8?q?ss=20URLs=20in=20embed=20card=20(#9725)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit refs https://github.com/TryGhost/Ghost/issues/9724 - adjust the "base url" regex in the oembed endpoint to strip schemaless scheme `//` as well as `https?://` --- core/server/api/oembed.js | 2 +- core/test/unit/api/oembed_spec.js | 17 +++++++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/core/server/api/oembed.js b/core/server/api/oembed.js index 60a931a459..4252ab80f6 100644 --- a/core/server/api/oembed.js +++ b/core/server/api/oembed.js @@ -14,7 +14,7 @@ let oembed = { // build up a list of URL variations to test against because the oembed // providers list is not always up to date with scheme or www vs non-www - let base = url.replace(/https?:\/\/(?:www\.)?/, ''); + let base = url.replace(/^\/\/|^https?:\/\/(?:www\.)?/, ''); let testUrls = [ `http://${base}`, `https://${base}`, diff --git a/core/test/unit/api/oembed_spec.js b/core/test/unit/api/oembed_spec.js index 70be425bbe..3cf0936de6 100644 --- a/core/test/unit/api/oembed_spec.js +++ b/core/test/unit/api/oembed_spec.js @@ -22,6 +22,23 @@ describe('API: oembed', function () { }).catch(done); }); + it('finds match for schema-less urls', function (done) { + let requestMock = nock('https://www.reddit.com') + .get('/oembed') + .query(true) + .reply(200, { + html: 'test' + }); + + OembedAPI.read({url: '//www.reddit.com/r/pics/comments/8qi5oq/breathtaking_picture_of_jupiter_with_its_moon_io/'}) + .then((results) => { + requestMock.isDone().should.be.true; + should.exist(results); + should.exist(results.html); + done(); + }).catch(done); + }); + it('returns error for missing url', function (done) { OembedAPI.read({url: ''}) .then(() => {