diff --git a/src/utils/innerTubeAPI.ts b/src/utils/innerTubeAPI.ts index 217651e..4a1d2be 100644 --- a/src/utils/innerTubeAPI.ts +++ b/src/utils/innerTubeAPI.ts @@ -1,4 +1,4 @@ -import axios from "axios"; +import axios, { AxiosError } from "axios"; import { Logger } from "./logger"; import { innerTubeVideoDetails } from "../types/innerTubeApi.model"; import DiskCache from "./diskCache"; @@ -30,19 +30,29 @@ const privateResponse = (videoId: string, reason: string): innerTubeVideoDetails export async function getFromITube (videoID: string): Promise { if (config.youTubeKeys.floatieUrl) { - const result = await axios.get(config.youTubeKeys.floatieUrl, { - params: { - videoID, - auth: config.youTubeKeys.floatieAuth - } - }); + try { + const result = await axios.get(config.youTubeKeys.floatieUrl, { + params: { + videoID, + auth: config.youTubeKeys.floatieAuth + } + }); - if (result.status === 200) { - return result.data?.videoDetails ?? privateResponse(videoID, result.data?.playabilityStatus?.reason ?? "Bad response"); - } else if (result.status === 500) { - return privateResponse(videoID, result.data ?? "Bad response"); - } else { - return Promise.reject(`Floatie returned non-200 response: ${result.status}`); + if (result.status === 200) { + return result.data?.videoDetails ?? privateResponse(videoID, result.data?.playabilityStatus?.reason ?? "Bad response"); + } else { + return Promise.reject(`Floatie returned non-200 response: ${result.status}`); + } + } catch (e) { + if (e instanceof AxiosError) { + const result = e.response; + + if (result.status === 500) { + return privateResponse(videoID, result.data ?? "Bad response"); + } else { + return Promise.reject(`Floatie returned non-200 response: ${result.status}`); + } + } } }