import { type ClassValue, clsx } from "clsx"; import { twMerge } from "tailwind-merge"; export function cn(...inputs: ClassValue[]) { return twMerge(clsx(inputs)); } export const formatDate = (date: Date): string => { const pad = (num: number): string => num.toString().padStart(2, "0"); const year = date.getFullYear(); const month = pad(date.getMonth() + 1); // Months are zero-based const day = pad(date.getDate()); const hours = pad(date.getHours()); const minutes = pad(date.getMinutes() + 5); return `${year}-${month}-${day} ${hours}:${minutes}`; }; export const formatMacAddress = (mac: string): string => { const formatted = mac .replace(/[^A-Fa-f0-9]/g, "") .toUpperCase() .match(/.{2}/g); // Provide a fallback if formatted is null return formatted ? formatted.join("-") : ""; }; export function validateApiKey(request: Request) { // Get API key from environment variable const validApiKey = process.env.CRON_API_KEY; if (!validApiKey) { throw new Error("CRON_API_KEY is not configured"); } // Get API key from request header const apiKey = request.headers.get("x-api-key"); if (!apiKey) { throw new Error("API key is missing"); } if (apiKey !== validApiKey) { throw new Error("Invalid API key"); } }