From f48a4145b436b3e029594d858f0aa2cd6a6582cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tim=20H=C3=A5rek=20Andreassen?= Date: Sun, 7 Apr 2024 22:45:43 +0200 Subject: [PATCH] refactor: Split up functions MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Tim HÄrek Andreassen --- lib/nrk/nrk.ts | 32 ++++++++++++++++++++++---------- 1 file changed, 22 insertions(+), 10 deletions(-) diff --git a/lib/nrk/nrk.ts b/lib/nrk/nrk.ts index 5e97f3e..8fc9b77 100644 --- a/lib/nrk/nrk.ts +++ b/lib/nrk/nrk.ts @@ -20,17 +20,17 @@ export type SearchResult = ArrayElement & { }; export type SeriesData = { episodes: NrkOriginalEpisode[] } & (RadioSeries["series"] | Podcast["series"]); -function parseSeries(nrkSeries: SeriesData): Series { - const imageUrl = nrkSeries.squareImage?.at(-1)?.url ?? ""; +function parseSeries(nrkSeriesData: SeriesData): Series { + const imageUrl = nrkSeriesData.squareImage?.at(-1)?.url ?? ""; return { - id: nrkSeries.id, - title: nrkSeries.titles.title, - subtitle: nrkSeries.titles.subtitle ?? null, - link: `https://radio.nrk.no/podkast/${nrkSeries.id}`, + id: nrkSeriesData.id, + title: nrkSeriesData.titles.title, + subtitle: nrkSeriesData.titles.subtitle ?? null, + link: `https://radio.nrk.no/podkast/${nrkSeriesData.id}`, imageUrl: imageUrl, lastFetchedAt: new Date(), - episodes: nrkSeries.episodes.map((episode) => { + episodes: nrkSeriesData.episodes.map((episode) => { return { id: episode.id, title: episode.titles.title, @@ -62,7 +62,7 @@ async function search(query: string): Promise { return null; } -async function getSeries(seriesId: string): Promise { +async function getSeriesData(seriesId: string): Promise { let [ { status: episodeStatus, body: episodeResponse }, { status: seriesStatus, body: serieResponse }, @@ -100,8 +100,7 @@ async function getSeries(seriesId: string): Promise { ...serieResponse.series, episodes, }; - const parsedSeries = parseSeries(seriesData); - return parsedSeries; + return seriesData; } console.error( `Error getting episodes for ${seriesId}: EpisodeStatus: ${episodeStatus}. SerieStatus: ${seriesStatus}`, @@ -109,6 +108,15 @@ async function getSeries(seriesId: string): Promise { return null; } +async function getSeries(seriesId: string): Promise { + const seriesData = await getSeriesData(seriesId); + if (!seriesData) { + return null; + } + const parsedSeries = parseSeries(seriesData); + return parsedSeries; +} + async function getEpisode(seriesId: string, episodeId: string): Promise { const url = `${nrkAPI}/radio/catalog/podcast/${seriesId}/episodes/${episodeId}`; const { status, body: episode } = await get(url); @@ -151,3 +159,7 @@ export const nrkRadio = { getEpisode, parseSeries, }; + +export const forTestingOnly = { + getSeriesData, +};