import crypto from 'crypto'; /** * Generate a Gravatar URL from an email address * @param email - The email address * @param size - The size of the image (default: 80) * @param defaultImage - Default image type if no Gravatar found (default: 'identicon') * @returns The Gravatar URL */ export function getGravatarUrl( email: string, size: number = 80, defaultImage: string = 'identicon' ): string { // Normalize email: trim whitespace and convert to lowercase const normalizedEmail = email.trim().toLowerCase(); // i love md5 hash (no i dont) // Generate MD5 hash of the email const hash = crypto.createHash('md5').update(normalizedEmail).digest('hex'); // Construct the Gravatar URL return `https://www.gravatar.com/avatar/${hash}?s=${size}&d=${defaultImage}`; } /** * Generate a Gravatar URL with retina support (2x size) * @param email - The email address * @param size - The base size of the image * @param defaultImage - Default image type if no Gravatar found * @returns The Gravatar URL at 2x resolution */ export function getGravatarUrlRetina( email: string, size: number = 80, defaultImage: string = 'identicon' ): string { return getGravatarUrl(email, size * 2, defaultImage); }