From 097e1d1facf375c67bc2d9e08445c0d0143922a9 Mon Sep 17 00:00:00 2001 From: kirrg001 Date: Wed, 18 Apr 2018 11:30:40 +0200 Subject: [PATCH] Url Service: trigger url event with relative/absolute urls refs https://github.com/TryGhost/Team/issues/65 - this is just the first optimisation regarding relative/absolute urls - the full strike will happen when i start with the url utility re-write - for now: there will be only one subscriber of url events -> the sitemaps service - the sitemaps service outputs absolute urls - we don't want to receive an url event and ask the url service again to get an absolute version of the url --- core/server/services/url/UrlGenerator.js | 2 -- core/server/services/url/Urls.js | 9 ++++++++- core/test/unit/services/url/Urls_spec.js | 9 +++++++-- 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/core/server/services/url/UrlGenerator.js b/core/server/services/url/UrlGenerator.js index 85165a7c02..733b35376f 100644 --- a/core/server/services/url/UrlGenerator.js +++ b/core/server/services/url/UrlGenerator.js @@ -138,8 +138,6 @@ class UrlGenerator { /** * We currently generate relative urls. - * - * @TODO: reconsider? e.g. sitemaps would receive a relative url, but we show absolute urls */ _generateUrl(resource) { let url = this.routingType.getPermalinks().getValue(); diff --git a/core/server/services/url/Urls.js b/core/server/services/url/Urls.js index efe2b28e2a..a28797d10e 100644 --- a/core/server/services/url/Urls.js +++ b/core/server/services/url/Urls.js @@ -2,6 +2,7 @@ const _ = require('lodash'); const debug = require('ghost-ignition').debug('services:url:urls'); +const localUtils = require('./utils'); const common = require('../../lib/common'); /** @@ -9,6 +10,8 @@ const common = require('../../lib/common'); * Each resource has exactly one url. * * Connector for url generator and resources. + * + * Stores relative urls by default. */ class Urls { constructor() { @@ -38,11 +41,15 @@ class Urls { }; common.events.emit('url.added', { - url: url, + url: { + relative: url, + absolute: localUtils.createUrl(url, true) + }, resource: resource }); } + // @TODO: add an option to receive an absolute url getByResourceId(id) { return this.urls[id]; } diff --git a/core/test/unit/services/url/Urls_spec.js b/core/test/unit/services/url/Urls_spec.js index b38ec1f4f3..4b4dd39fdf 100644 --- a/core/test/unit/services/url/Urls_spec.js +++ b/core/test/unit/services/url/Urls_spec.js @@ -47,8 +47,8 @@ describe('Unit: services/url/Urls', function () { }); eventsToRemember = {}; - sandbox.stub(common.events, 'emit').callsFake(function (eventName, callback) { - eventsToRemember[eventName] = callback; + sandbox.stub(common.events, 'emit').callsFake(function (eventName, data) { + eventsToRemember[eventName] = data; }); }); @@ -69,6 +69,11 @@ describe('Unit: services/url/Urls', function () { }); should.exist(eventsToRemember['url.added']); + eventsToRemember['url.added'].url.absolute.should.eql('http://127.0.0.1:2369/test/'); + eventsToRemember['url.added'].url.relative.should.eql('/test/'); + should.exist(eventsToRemember['url.added'].resource); + should.exist(eventsToRemember['url.added'].resource.data); + urls.getByResourceId('object-id-x').resource.data.slug.should.eql('a'); // add duplicate