diff --git a/libs/feature/dataviz/src/lib/service/data.service.spec.ts b/libs/feature/dataviz/src/lib/service/data.service.spec.ts index ee9944f100..cb126ef076 100644 --- a/libs/feature/dataviz/src/lib/service/data.service.spec.ts +++ b/libs/feature/dataviz/src/lib/service/data.service.spec.ts @@ -593,11 +593,22 @@ describe('DataService', () => { it('builds a proxied url', () => { expect( service.getDownloadUrlFromEsriRest( - 'http://esri.rest/local/', + 'http://esri.rest/local', 'geojson' ) ).toBe( - 'http://proxy.local/?url=http%3A%2F%2Fesri.rest%2Flocal%2F%2Fquery%3Ff%3Dgeojson%26where%3D1%3D1%26outFields%3D*' + 'http://proxy.local/?url=http%3A%2F%2Fesri.rest%2Flocal%2Fquery%3Ff%3Dgeojson%26where%3D1%3D1%26outFields%3D*' + ) + }) + it('calls DataFetcher.openDataset with a proxied url', () => { + service.getDataset({ + url: new URL('http://esri.rest/local'), + accessServiceProtocol: 'esriRest', + type: 'service', + }) + expect(openDataset).toHaveBeenCalledWith( + 'http://proxy.local/?url=http%3A%2F%2Fesri.rest%2Flocal%2Fquery%3Ff%3Dgeojson%26where%3D1%3D1%26outFields%3D*', + 'geojson' ) }) }) diff --git a/libs/feature/dataviz/src/lib/service/data.service.ts b/libs/feature/dataviz/src/lib/service/data.service.ts index 5ed9dffad2..a8f7cb2b99 100644 --- a/libs/feature/dataviz/src/lib/service/data.service.ts +++ b/libs/feature/dataviz/src/lib/service/data.service.ts @@ -168,9 +168,8 @@ export class DataService { } getDataset(link: DatasetDistribution): Observable { - const linkUrl = this.proxy.getProxiedUrl(link.url.toString()) if (link.type === 'service' && link.accessServiceProtocol === 'wfs') { - return this.getDownloadUrlsFromWfs(linkUrl, link.name).pipe( + return this.getDownloadUrlsFromWfs(link.url.toString(), link.name).pipe( switchMap((urls) => { if (urls.geojson) return openDataset(urls.geojson, 'geojson') if (urls.gml) @@ -187,17 +186,21 @@ export class DataService { }) ) } else if (link.type === 'download') { + const linkProxifiedUrl = this.proxy.getProxiedUrl(link.url.toString()) const format = getFileFormat(link) const supportedType = SupportedTypes.indexOf(format as any) > -1 ? (format as SupportedType) : undefined - return from(openDataset(linkUrl, supportedType)).pipe() + return from(openDataset(linkProxifiedUrl, supportedType)).pipe() } else if ( link.type === 'service' && link.accessServiceProtocol === 'esriRest' ) { - const url = this.getDownloadUrlFromEsriRest(linkUrl, 'geojson') + const url = this.getDownloadUrlFromEsriRest( + link.url.toString(), + 'geojson' + ) return from(openDataset(url, 'geojson')).pipe() } return throwError(() => 'protocol not supported')