Skip to content

Commit

Permalink
Improve error messages for failed requests
Browse files Browse the repository at this point in the history
  • Loading branch information
Shraymonks committed Sep 17, 2023
1 parent 84a4342 commit 14c3593
Show file tree
Hide file tree
Showing 3 changed files with 55 additions and 18 deletions.
5 changes: 5 additions & 0 deletions .changeset/flat-bees-sing.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'unmonitorr': minor
---

Improve error messages for failed requests
27 changes: 20 additions & 7 deletions src/radarr.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,17 +26,23 @@ export async function unmonitorMovie(

let movies;
for (const tmdbId of tmdbIds) {
let moviesResponse;
try {
const moviesResponse = await fetch(api.getUrl('movie', { tmdbId }));
movies =
(await moviesResponse.json()) as components['schemas']['MovieResource'][];
break;
moviesResponse = await fetch(api.getUrl('movie', { tmdbId }));
} catch (error) {
console.error(
`Failed to get movie information from radarr for tmdbId: ${tmdbId} ${titleYear}`
);
console.error(error);
}
if (moviesResponse?.ok) {
movies =
(await moviesResponse.json()) as components['schemas']['MovieResource'][];
break;
}
console.error(
`Error getting movie information: ${moviesResponse?.status} ${moviesResponse?.statusText}`
);
}
if (!movies) {
console.warn(`Failed to find ${titleYear} in radarr library`);
Expand All @@ -49,8 +55,9 @@ export async function unmonitorMovie(
}
if (movie.monitored) {
movie.monitored = false;
let response;
try {
fetch(api.getUrl(`movie/${movie.id}`), {
response = await fetch(api.getUrl(`movie/${movie.id}`), {
method: 'PUT',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(movie),
Expand All @@ -61,8 +68,14 @@ export async function unmonitorMovie(
return res.end();
}

console.log(`${titleYear} unmonitored!`);
return res.end();
if (response.ok) {
console.log(`${titleYear} unmonitored!`);
return res.end();
}

console.error(
`Error unmonitoring ${titleYear}: ${response.status} ${response.statusText}`
);
}
return res.end();
}
41 changes: 30 additions & 11 deletions src/sonarr.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ export async function unmonitorEpisode(
return res.end();
}

let seriesList;
let seriesResponse;

// Sonarr has no api for getting an episode by episode tvdbId
// Go through the following steps to get the matching episode:
Expand All @@ -33,14 +33,20 @@ export async function unmonitorEpisode(
// 3. Get episode lists
// 4. Match episode on tvdbId
try {
const seriesResponse = await fetch(api.getUrl('series'));
seriesList =
(await seriesResponse.json()) as components['schemas']['SeriesResource'][];
seriesResponse = await fetch(api.getUrl('series'));
} catch (error) {
console.error('Failed to get series lists from sonarr:');
console.error(error);
return res.end();
}
if (!seriesResponse.ok) {
console.error(
`Error getting series information: ${seriesResponse?.status} ${seriesResponse?.statusText}`
);
return res.end();
}
const seriesList =
(await seriesResponse.json()) as components['schemas']['SeriesResource'][];

// Match potential series on title. Year metadata from Plex is for the episode
// so cannot be used for series filtering.
Expand All @@ -54,25 +60,31 @@ export async function unmonitorEpisode(
return res.end();
}

let episodeList;
let episode;
for (const series of seriesMatches) {
if (!series.id) {
continue;
}
let episodeListResponse;
try {
const episodeListResponse = await fetch(
episodeListResponse = await fetch(
api.getUrl('episode', {
seriesId: series.id.toString(),
})
);
episodeList =
(await episodeListResponse.json()) as components['schemas']['EpisodeResource'][];
} catch (error) {
console.error(`Failed to get episode list for ${seriesTitle}:`);
console.error(error);
continue;
}
if (!episodeListResponse.ok) {
console.error(
`Error getting episode list for ${seriesTitle}: ${seriesResponse?.status} ${seriesResponse?.statusText}`
);
continue;
}
const episodeList =
(await episodeListResponse.json()) as components['schemas']['EpisodeResource'][];

episode = episodeList.find(
({ tvdbId }) => tvdbId && episodeTvdbIds.includes(tvdbId.toString())
Expand All @@ -91,8 +103,9 @@ export async function unmonitorEpisode(
const episodeString = `${seriesTitle} - S${episode.seasonNumber}E${episode.episodeNumber}`;

if (episode.monitored) {
let response;
try {
fetch(api.getUrl('episode/monitor'), {
response = await fetch(api.getUrl('episode/monitor'), {
method: 'PUT',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
Expand All @@ -106,8 +119,14 @@ export async function unmonitorEpisode(
return res.end();
}

console.log(`${episodeString} unmonitored!`);
return res.end();
if (response.ok) {
console.log(`${episodeString} unmonitored!`);
return res.end();
}

console.error(
`Error unmonitoring ${episodeString}: ${response.status} ${response.statusText}`
);
}
return res.end();
}

0 comments on commit 14c3593

Please sign in to comment.