diff --git a/apps/electron-backend/src/app/workers/epg-response-utils.spec.ts b/apps/electron-backend/src/app/workers/epg-response-utils.spec.ts index 191b2227b..99962c77a 100644 --- a/apps/electron-backend/src/app/workers/epg-response-utils.spec.ts +++ b/apps/electron-backend/src/app/workers/epg-response-utils.spec.ts @@ -19,12 +19,32 @@ describe('shouldGunzipEpgResponse', () => { ).toBe(true); }); - it('returns true for gzip content-encoding even without a .gz path', () => { + it('returns false for gzip content-encoding without a gzip payload', () => { expect( shouldGunzipEpgResponse('https://example.com/guide', { headers: new Headers([['content-encoding', 'gzip']]), url: 'https://example.com/guide', }) + ).toBe(false); + }); + + it('returns true for gzip mime types', () => { + expect( + shouldGunzipEpgResponse('https://example.com/guide', { + headers: new Headers([['content-type', 'application/gzip']]), + url: 'https://example.com/guide', + }) + ).toBe(true); + }); + + it('returns true when content-disposition advertises a .gz filename', () => { + expect( + shouldGunzipEpgResponse('https://example.com/guide', { + headers: new Headers([ + ['content-disposition', 'attachment; filename="guide.xml.gz"'], + ]), + url: 'https://example.com/guide', + }) ).toBe(true); }); diff --git a/apps/electron-backend/src/app/workers/epg-response-utils.ts b/apps/electron-backend/src/app/workers/epg-response-utils.ts index 82faf8ebb..55db43d99 100644 --- a/apps/electron-backend/src/app/workers/epg-response-utils.ts +++ b/apps/electron-backend/src/app/workers/epg-response-utils.ts @@ -22,11 +22,6 @@ export function shouldGunzipEpgResponse( return true; } - const contentEncoding = response.headers.get('content-encoding'); - if (contentEncoding?.toLowerCase().includes('gzip')) { - return true; - } - const contentType = response.headers.get('content-type'); if ( contentType &&