diff --git a/src/app/core/metadata/metadata.service.spec.ts b/src/app/core/metadata/metadata.service.spec.ts index b3404e84d5..9f3f782406 100644 --- a/src/app/core/metadata/metadata.service.spec.ts +++ b/src/app/core/metadata/metadata.service.spec.ts @@ -74,7 +74,7 @@ describe('MetadataService', () => { } } as any as Router; hardRedirectService = jasmine.createSpyObj( { - getRequestOrigin: 'https://request.org', + getCurrentOrigin: 'https://request.org', }); // @ts-ignore diff --git a/src/app/core/metadata/metadata.service.ts b/src/app/core/metadata/metadata.service.ts index 10e37b4282..6f07ecbb06 100644 --- a/src/app/core/metadata/metadata.service.ts +++ b/src/app/core/metadata/metadata.service.ts @@ -272,7 +272,7 @@ export class MetadataService { if (this.currentObject.value instanceof Item) { let url = this.getMetaTagValue('dc.identifier.uri'); if (hasNoValue(url)) { - url = new URLCombiner(this.hardRedirectService.getRequestOrigin(), this.router.url).toString(); + url = new URLCombiner(this.hardRedirectService.getCurrentOrigin(), this.router.url).toString(); } this.addMetaTag('citation_abstract_html_url', url); } @@ -336,7 +336,7 @@ export class MetadataService { // Use the found link to set the tag this.addMetaTag( 'citation_pdf_url', - new URLCombiner(this.hardRedirectService.getRequestOrigin(), link).toString() + new URLCombiner(this.hardRedirectService.getCurrentOrigin(), link).toString() ); }); } diff --git a/src/app/core/services/browser-hard-redirect.service.spec.ts b/src/app/core/services/browser-hard-redirect.service.spec.ts index d0fecd9be5..b9745906c3 100644 --- a/src/app/core/services/browser-hard-redirect.service.spec.ts +++ b/src/app/core/services/browser-hard-redirect.service.spec.ts @@ -2,7 +2,7 @@ import { TestBed } from '@angular/core/testing'; import { BrowserHardRedirectService } from './browser-hard-redirect.service'; describe('BrowserHardRedirectService', () => { - const origin = 'test origin'; + const origin = 'https://test-host.com:4000'; const mockLocation = { href: undefined, pathname: '/pathname', @@ -43,7 +43,7 @@ describe('BrowserHardRedirectService', () => { describe('when requesting the origin', () => { it('should return the location origin', () => { - expect(service.getRequestOrigin()).toEqual(origin); + expect(service.getCurrentOrigin()).toEqual(origin); }); }); diff --git a/src/app/core/services/browser-hard-redirect.service.ts b/src/app/core/services/browser-hard-redirect.service.ts index 5f90fb8dbd..eeb9006039 100644 --- a/src/app/core/services/browser-hard-redirect.service.ts +++ b/src/app/core/services/browser-hard-redirect.service.ts @@ -28,16 +28,20 @@ export class BrowserHardRedirectService extends HardRedirectService { } /** - * Get the origin of a request + * Get the current route, with query params included + * e.g. /search?page=1&query=open%20access&f.dateIssued.min=1980&f.dateIssued.max=2020 */ - getCurrentRoute() { + getCurrentRoute(): string { return this.location.pathname + this.location.search; } /** - * Get the hostname of the request + * Get the origin of the current URL + * i.e. "://" [ ":" ] + * e.g. if the URL is https://demo7.dspace.org/search?query=test, + * the origin would be https://demo7.dspace.org */ - getRequestOrigin() { + getCurrentOrigin(): string { return this.location.origin; } } diff --git a/src/app/core/services/hard-redirect.service.ts b/src/app/core/services/hard-redirect.service.ts index 730101701f..3733059283 100644 --- a/src/app/core/services/hard-redirect.service.ts +++ b/src/app/core/services/hard-redirect.service.ts @@ -18,10 +18,13 @@ export abstract class HardRedirectService { * Get the current route, with query params included * e.g. /search?page=1&query=open%20access&f.dateIssued.min=1980&f.dateIssued.max=2020 */ - abstract getCurrentRoute(); + abstract getCurrentRoute(): string; /** - * Get the hostname of the request + * Get the origin of the current URL + * i.e. "://" [ ":" ] + * e.g. if the URL is https://demo7.dspace.org/search?query=test, + * the origin would be https://demo7.dspace.org */ - abstract getRequestOrigin(); + abstract getCurrentOrigin(): string; } diff --git a/src/app/core/services/server-hard-redirect.service.spec.ts b/src/app/core/services/server-hard-redirect.service.spec.ts index 892f4f4087..4501547b92 100644 --- a/src/app/core/services/server-hard-redirect.service.spec.ts +++ b/src/app/core/services/server-hard-redirect.service.spec.ts @@ -7,11 +7,12 @@ describe('ServerHardRedirectService', () => { const mockResponse = jasmine.createSpyObj(['redirect', 'end']); const service: ServerHardRedirectService = new ServerHardRedirectService(mockRequest, mockResponse); - const origin = 'test-host'; + const origin = 'https://test-host.com:4000'; beforeEach(() => { + mockRequest.protocol = 'https'; mockRequest.headers = { - host: 'test-host', + host: 'test-host.com:4000', }; TestBed.configureTestingModule({}); @@ -49,7 +50,7 @@ describe('ServerHardRedirectService', () => { describe('when requesting the origin', () => { it('should return the location origin', () => { - expect(service.getRequestOrigin()).toEqual(origin); + expect(service.getCurrentOrigin()).toEqual(origin); }); }); diff --git a/src/app/core/services/server-hard-redirect.service.ts b/src/app/core/services/server-hard-redirect.service.ts index 65b404ca6c..94b9ed6198 100644 --- a/src/app/core/services/server-hard-redirect.service.ts +++ b/src/app/core/services/server-hard-redirect.service.ts @@ -55,16 +55,19 @@ export class ServerHardRedirectService extends HardRedirectService { } /** - * Get the origin of a request + * Get the URL of the current route */ - getCurrentRoute() { + getCurrentRoute(): string { return this.req.originalUrl; } /** - * Get the hostname of the request + * Get the origin of the current URL + * i.e. "://" [ ":" ] + * e.g. if the URL is https://demo7.dspace.org/search?query=test, + * the origin would be https://demo7.dspace.org */ - getRequestOrigin() { - return this.req.headers.host; + getCurrentOrigin(): string { + return this.req.protocol + '://' + this.req.headers.host; } }