Files
Epicnabbo-Catalogus-Updated…/src/lib/imager.ts
T

38 lines
1.2 KiB
TypeScript

/**
* Centralized Habbo avatar imager utility.
* Points to the self-hosted imager API (`/api/imaging/avatar`) which handles
* disk + memory caching and (Phase 2) local rendering from .nitro bundles.
* Override with NEXT_PUBLIC_IMAGER_URL when needed (e.g. CDN in front).
*/
const IMAGER_URL = process.env.NEXT_PUBLIC_IMAGER_URL || "/api/imaging/avatar";
export type { AvatarOptions } from "@/types/admin";
import type { AvatarOptions } from "@/types/admin";
/**
* Build an avatar image URL served by the self-hosted imager.
*
* @example
* getAvatarUrl('hr-893-45.hd-180-1.ch-210-66.lg-270-82')
* getAvatarUrl(look, { size: 'l', headOnly: true })
* getAvatarUrl(look, { size: 'm', gesture: 'sml', direction: 2 })
*/
export function getAvatarUrl(figure: string, options: AvatarOptions = {}): string {
const { size = "m", direction = 2, headDirection = 3, headOnly = false, gesture, action } = options;
const params = new URLSearchParams({
figure,
direction: String(direction),
head_direction: String(headDirection),
size,
});
if (headOnly) params.set("headonly", "1");
if (gesture) params.set("gesture", gesture);
if (action) params.set("action", action);
return `${IMAGER_URL}?${params.toString()}`;
}