mirror of
https://github.com/Drop-OSS/drop.git
synced 2025-11-10 04:22:09 +10:00
gracefully disable metadata provider when api key is missing
This commit is contained in:
Submodule drop-base updated: ce59647cda...de0d1b4660
@ -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;
|
||||
|
||||
|
||||
@ -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}`);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user