53 lines
1.6 KiB
TypeScript
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;
|
|
};
|