diff --git a/drop-base b/drop-base index ce59647..de0d1b4 160000 --- a/drop-base +++ b/drop-base @@ -1 +1 @@ -Subproject commit ce59647cdaf460fdb609ddcf1875b1be876fd73e +Subproject commit de0d1b46603a4140ad0ff2c149e4fd91277c2fff diff --git a/server/internal/metadata/giantbomb.ts b/server/internal/metadata/giantbomb.ts index 7fdcf95..dfcd2ad 100644 --- a/server/internal/metadata/giantbomb.ts +++ b/server/internal/metadata/giantbomb.ts @@ -1,5 +1,5 @@ import { Developer, MetadataSource, Publisher } from "@prisma/client"; -import { MetadataProvider } from "."; +import { MetadataProvider, MissingMetadataProviderApiKey } from "."; import { GameMetadataSearchResult, _FetchGameMetadataParams, @@ -80,7 +80,7 @@ export class GiantBombProvider implements MetadataProvider { constructor() { const apikey = process.env.GIANT_BOMB_API_KEY; - if (!apikey) throw new Error("No GIANT_BOMB_API_KEY in environment"); + if (!apikey) throw new MissingMetadataProviderApiKey("GiantBomb"); this.apikey = apikey; diff --git a/server/internal/metadata/index.ts b/server/internal/metadata/index.ts index 5fcdada..f97d83f 100644 --- a/server/internal/metadata/index.ts +++ b/server/internal/metadata/index.ts @@ -20,6 +20,19 @@ import { PriorityList, PriorityListIndexed } from "../utils/prioritylist"; import { GiantBombProvider } from "./giantbomb"; import { ManualMetadataProvider } from "./manual"; +export class MissingMetadataProviderApiKey extends Error { + private providerName: string; + + constructor(providerName: string) { + super(`Missing ${providerName} api key`); + this.providerName = providerName; + } + + getProviderName() { + return this.providerName; + } +} + export abstract class MetadataProvider { abstract id(): string; abstract name(): string; @@ -240,13 +253,17 @@ export default metadataHandler; export const enabledMedadataProviders: string[] = []; const metadataProviders = [GiantBombProvider, ManualMetadataProvider]; -for(const provider of metadataProviders){ +for (const provider of metadataProviders) { try { - const prov = new provider; + const prov = new provider(); metadataHandler.addProvider(prov); enabledMedadataProviders.push(prov.id()); - console.log(`enabled metadata provider: ${prov.name()}`) - }catch(e){ - console.error(`skipping metadata provider setup: ${e}`); + console.log(`enabled metadata provider: ${prov.name()}`); + } catch (e) { + if (e instanceof MissingMetadataProviderApiKey) { + console.warn(`Disabling ${e.getProviderName()} metadata provider`); + } else { + console.error(`skipping metadata provider setup: ${e}`); + } } -} \ No newline at end of file +}