From 50d1dba959513715cf4d40bc54a89b5373966506 Mon Sep 17 00:00:00 2001 From: illiakovalenko Date: Tue, 28 Jan 2025 10:52:22 +0200 Subject: [PATCH] [Next.js] Simplify sitemap.xml handling --- .../nextjs-sxa/src/pages/api/sitemap.ts | 14 ++--------- .../sitecore-jss/src/native-fetcher.test.ts | 24 ------------------- packages/sitecore-jss/src/native-fetcher.ts | 5 +--- 3 files changed, 3 insertions(+), 40 deletions(-) diff --git a/packages/create-sitecore-jss/src/templates/nextjs-sxa/src/pages/api/sitemap.ts b/packages/create-sitecore-jss/src/templates/nextjs-sxa/src/pages/api/sitemap.ts index 2fb54de46f..dfa7c59944 100644 --- a/packages/create-sitecore-jss/src/templates/nextjs-sxa/src/pages/api/sitemap.ts +++ b/packages/create-sitecore-jss/src/templates/nextjs-sxa/src/pages/api/sitemap.ts @@ -36,19 +36,9 @@ const sitemapApi = async ( try { const fetcher = new NativeDataFetcher(); - const response = await fetcher.fetch>(sitemapUrl); + const xmlResponse = await fetcher.fetch(sitemapUrl); - const reader = response.data.getReader(); - if (reader) { - while (true) { - const { done, value } = await reader.read(); - - if (done) break; - if (value) res.write(value); - } - } - - res.end(); + res.send(xmlResponse.data); } catch (error) { return res.redirect('/404'); } diff --git a/packages/sitecore-jss/src/native-fetcher.test.ts b/packages/sitecore-jss/src/native-fetcher.test.ts index 1ce7bf4972..39ae5c011b 100644 --- a/packages/sitecore-jss/src/native-fetcher.test.ts +++ b/packages/sitecore-jss/src/native-fetcher.test.ts @@ -136,30 +136,6 @@ describe('NativeDataFetcher', () => { expect(fetchInit?.body).to.be.undefined; }); - it('should execute request with stream response type', async () => { - const fetcher = new NativeDataFetcher(); - - const fakeRes = { body: new ReadableStream() }; - - spy.on( - global, - 'fetch', - mockFetch(200, fakeRes, { - customHeaders: { - 'Content-Type': 'text/xml', - }, - }) - ); - - const response = await fetcher.fetch('http://test.com/api'); - - expect(response.status).to.equal(200); - expect(response.data instanceof ReadableStream).to.be.true; - expect(fetchInput).to.equal('http://test.com/api'); - expect(fetchInit?.method).to.equal('GET'); - expect(fetchInit?.body).to.be.undefined; - }); - it('should execute POST request with data', async () => { const fetcher = new NativeDataFetcher(); const postData = { x: 'val1', y: 'val2' }; diff --git a/packages/sitecore-jss/src/native-fetcher.ts b/packages/sitecore-jss/src/native-fetcher.ts index 8356a3a444..7155863509 100644 --- a/packages/sitecore-jss/src/native-fetcher.ts +++ b/packages/sitecore-jss/src/native-fetcher.ts @@ -216,15 +216,12 @@ export class NativeDataFetcher { debug: (message: string, ...optionalParams: any[]) => void ): Promise { const contentType = response.headers.get('Content-Type') || ''; + try { if (contentType.includes('application/json')) { return await response.json(); } - if (response.body instanceof ReadableStream) { - return response.body; - } - return await response.text(); } catch (error) { debug('Response parsing error: %o', error);