cal.pub0.org/packages/app-store/giphy/lib/giphyManager.ts

53 lines
1.6 KiB
TypeScript

import { HttpError } from "@calcom/lib/http-error";
import getAppKeysFromSlug from "../../_utils/getAppKeysFromSlug";
let api_key = "";
const checkGiphyApiKey = async () => {
const appKeys = await getAppKeysFromSlug("giphy");
if (typeof appKeys.api_key === "string") api_key = appKeys.api_key;
if (!api_key) throw new HttpError({ statusCode: 400, message: "Missing Giphy api_key" });
};
export const searchGiphy = async (locale: string, keyword: string, offset = 0) => {
await checkGiphyApiKey();
const queryParams = new URLSearchParams({
api_key,
q: keyword,
limit: "1",
offset: String(offset),
// Contains images that are broadly accepted as appropriate and commonly witnessed by people in a public environment.
rating: "g",
lang: locale,
});
const response = await fetch(`https://api.giphy.com/v1/gifs/search?${queryParams.toString()}`, {
method: "GET",
headers: {
Accept: "application/json",
},
});
const responseBody = await response.json();
const gifs = responseBody.data;
return {
gifImageUrl: gifs?.[0]?.images?.fixed_height_downsampled?.url || null,
total: responseBody.pagination.total_count,
};
};
export const getGiphyById = async (giphyId: string) => {
await checkGiphyApiKey();
const queryParams = new URLSearchParams({
api_key,
});
const response = await fetch(`https://api.giphy.com/v1/gifs/${giphyId}?${queryParams.toString()}`, {
method: "GET",
headers: {
Accept: "application/json",
},
});
const responseBody = await response.json();
const gifs = responseBody.data;
return gifs?.images?.fixed_height_downsampled?.url || null;
};