From 599e6eaf7e1286eed967fb213bfeab1476e9f680 Mon Sep 17 00:00:00 2001 From: WebStreamr <210764791+webstreamr@users.noreply.github.com> Date: Sun, 13 Jul 2025 19:33:04 +0000 Subject: [PATCH] fix(source): handle non-existent content gracefully via Movix --- src/source/Movix.test.ts | 5 +++++ src/source/Movix.ts | 6 +++++- .../https:api.movix.siteapitmdbtv46080season1andepisode999 | 1 + src/source/__snapshots__/Movix.test.ts.snap | 2 ++ 4 files changed, 13 insertions(+), 1 deletion(-) create mode 100644 src/source/__fixtures__/Movix/https:api.movix.siteapitmdbtv46080season1andepisode999 diff --git a/src/source/Movix.test.ts b/src/source/Movix.test.ts index 447dccd..14771c9 100644 --- a/src/source/Movix.test.ts +++ b/src/source/Movix.test.ts @@ -11,6 +11,11 @@ describe('Movix', () => { handler = new Movix(new FetcherMock(`${__dirname}/__fixtures__/Movix`)); }); + test('handles non-existent content gracefully', async () => { + const streams = await handler.handle(ctx, 'series', new TmdbId(46080, 1, 999)); + expect(streams).toMatchSnapshot(); + }); + test('handle tmdb black mirror s4e2', async () => { const streams = await handler.handle(ctx, 'series', new TmdbId(42009, 4, 2)); expect(streams).toMatchSnapshot(); diff --git a/src/source/Movix.ts b/src/source/Movix.ts index fb98f2b..3d596fb 100644 --- a/src/source/Movix.ts +++ b/src/source/Movix.ts @@ -32,7 +32,11 @@ export class Movix implements Source { : new URL(`/api/tmdb/movie/${tmdbId.id}`, this.baseUrl); const json = JSON.parse(await this.fetcher.text(ctx, apiUrl)); - const data: MovixApiData = tmdbId.season ? json['current_episode'] : json; + const data: MovixApiData | undefined = tmdbId.season ? json['current_episode'] : json; + + if (!data) { + return []; + } const urls: URL[] = data['player_links'].map(({ decoded_url }) => new URL(decoded_url)); diff --git a/src/source/__fixtures__/Movix/https:api.movix.siteapitmdbtv46080season1andepisode999 b/src/source/__fixtures__/Movix/https:api.movix.siteapitmdbtv46080season1andepisode999 new file mode 100644 index 0000000..efe9c23 --- /dev/null +++ b/src/source/__fixtures__/Movix/https:api.movix.siteapitmdbtv46080season1andepisode999 @@ -0,0 +1 @@ +{"message":"Contenu non disponible","tmdb_id":"46080","tmdb_details":{"id":46080,"title":"Masha et Michka","original_title":"Маша и Медведь","release_date":"2009-01-07","poster_path":"/ruQSBtzk5d6mQHLoiBvOQEr728R.jpg","backdrop_path":"/uu2qZZ82Ml2u6SgOd68OIIOI0si.jpg","overview":"Masha est une petite fille qui n'arrive pas facilement à se poser tant son énergie est grande. Sa curiosité et sa créativité provoquent des situations comiques, même si parfois cela crée des problèmes aux autres. L'ours, Michka, est un ami au coeur tendre qui voit son monde tranquille bouleversé dès que Masha entre en action...","vote_average":6.9}} \ No newline at end of file diff --git a/src/source/__snapshots__/Movix.test.ts.snap b/src/source/__snapshots__/Movix.test.ts.snap index c97af7a..df60715 100644 --- a/src/source/__snapshots__/Movix.test.ts.snap +++ b/src/source/__snapshots__/Movix.test.ts.snap @@ -134,3 +134,5 @@ exports[`Movix handle tmdb black mirror s4e2 1`] = ` }, ] `; + +exports[`Movix handles non-existent content gracefully 1`] = `[]`;