mirror of
https://github.com/Drop-OSS/drop.git
synced 2026-07-27 18:24:43 +10:00
gracefully disable metadata provider when api key is missing
This commit is contained in:
+1
-1
Submodule drop-base updated: ce59647cda...de0d1b4660
@@ -1,5 +1,5 @@
|
|||||||
import { Developer, MetadataSource, Publisher } from "@prisma/client";
|
import { Developer, MetadataSource, Publisher } from "@prisma/client";
|
||||||
import { MetadataProvider } from ".";
|
import { MetadataProvider, MissingMetadataProviderApiKey } from ".";
|
||||||
import {
|
import {
|
||||||
GameMetadataSearchResult,
|
GameMetadataSearchResult,
|
||||||
_FetchGameMetadataParams,
|
_FetchGameMetadataParams,
|
||||||
@@ -80,7 +80,7 @@ export class GiantBombProvider implements MetadataProvider {
|
|||||||
|
|
||||||
constructor() {
|
constructor() {
|
||||||
const apikey = process.env.GIANT_BOMB_API_KEY;
|
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;
|
this.apikey = apikey;
|
||||||
|
|
||||||
|
|||||||
@@ -20,6 +20,19 @@ import { PriorityList, PriorityListIndexed } from "../utils/prioritylist";
|
|||||||
import { GiantBombProvider } from "./giantbomb";
|
import { GiantBombProvider } from "./giantbomb";
|
||||||
import { ManualMetadataProvider } from "./manual";
|
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 {
|
export abstract class MetadataProvider {
|
||||||
abstract id(): string;
|
abstract id(): string;
|
||||||
abstract name(): string;
|
abstract name(): string;
|
||||||
@@ -240,13 +253,17 @@ export default metadataHandler;
|
|||||||
export const enabledMedadataProviders: string[] = [];
|
export const enabledMedadataProviders: string[] = [];
|
||||||
const metadataProviders = [GiantBombProvider, ManualMetadataProvider];
|
const metadataProviders = [GiantBombProvider, ManualMetadataProvider];
|
||||||
|
|
||||||
for(const provider of metadataProviders){
|
for (const provider of metadataProviders) {
|
||||||
try {
|
try {
|
||||||
const prov = new provider;
|
const prov = new provider();
|
||||||
metadataHandler.addProvider(prov);
|
metadataHandler.addProvider(prov);
|
||||||
enabledMedadataProviders.push(prov.id());
|
enabledMedadataProviders.push(prov.id());
|
||||||
console.log(`enabled metadata provider: ${prov.name()}`)
|
console.log(`enabled metadata provider: ${prov.name()}`);
|
||||||
}catch(e){
|
} catch (e) {
|
||||||
console.error(`skipping metadata provider setup: ${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