From 4bb0f39a433f6b2e0ff30eeacfc1eb90307b00b5 Mon Sep 17 00:00:00 2001 From: Rory& Date: Tue, 7 Jul 2026 20:18:21 +0200 Subject: [PATCH] Add endpoint to get enabled/known gif providers --- src/api/Server.ts | 4 ++++ src/integrations/gifs/GifProviderManager.ts | 11 +++++++++++ 2 files changed, 15 insertions(+) diff --git a/src/api/Server.ts b/src/api/Server.ts index 7fa5476da..1266bf42e 100644 --- a/src/api/Server.ts +++ b/src/api/Server.ts @@ -191,6 +191,10 @@ export class SpacebarServer extends Server { }); }); + app.get("/_spacebar/api/v1/integrations/gif", (req, res) => { + res.json({ providers: GifProviderManager.getProviders() }); + }); + // Pickup non-expired polls const nonExpiredPolls = await Message.createQueryBuilder("message").where("message.poll->>'expiry' > :now", { now: new Date().toISOString() }).getMany(); diff --git a/src/integrations/gifs/GifProviderManager.ts b/src/integrations/gifs/GifProviderManager.ts index 8bbfccf52..799ee0020 100644 --- a/src/integrations/gifs/GifProviderManager.ts +++ b/src/integrations/gifs/GifProviderManager.ts @@ -48,4 +48,15 @@ export class GifProviderManager { throw new Error(`Unknown GIF provider, or it is not enabled: ${id}, known GIF providers: ${this._providers.keys().toArray().join(", ")}`); } + + public static getProviders() { + const providers: { [key: string]: { available: boolean } } = {}; + for (const [id, provider] of this._providers) { + providers[id] = { + available: provider.available, + }; + } + + return providers; + } }