import { normalizeGameTitle } from "@/lib/game/game-format"; import { warnDev } from "@/lib/log"; let itadKeyWarned = false; export function _resetItadWarning(): void { itadKeyWarned = false; } export async function itadFetch(path: string, init?: RequestInit): Promise { const key = process.env.ITAD_API_KEY; if (!key) { if (!itadKeyWarned) { itadKeyWarned = true; warnDev("itad not configured"); } return null; } try { const separator = path.includes("?") ? "&" : "?"; const response = await fetch( `https://api.isthereanydeal.com${path}${separator}key=${key}`, { ...init, next: { revalidate: 3600 }, }, ); if (!response.ok) { warnDev(`itad failed: ${response.status}`); return null; } return (await response.json()) as T; } catch (error) { warnDev(`itad request failed: ${error instanceof Error ? error.message : error}`); return null; } } export async function getItadId(title: string): Promise { const results = await itadFetch>( `/games/search/v1?title=${encodeURIComponent(title)}&results=5`, ); if (!results || results.length === 0) { return null; } const wanted = normalizeGameTitle(title); return results.find((r) => r.title && normalizeGameTitle(r.title) === wanted)?.id ?? null; }