import { getPublicSiteAbsoluteUrl } from "@/lib/mail-urls";

const DEFAULT_BLOG_SOCIAL_IMAGE_PATH = "/images/officialmail-og-20260923.png";

const MARKDOWN_IMAGE_PATTERN =
  /^!\[[^\]]*\]\(((?:https?:\/\/|\/(?!\/))[^\s)]+)\)(?:\{[^}]*\})?$/m;
const HTML_IMAGE_PATTERN = /<img\b[^>]*\bsrc=(?:"([^"]+)"|'([^']+)'|([^\s>]+))/i;

function normalizePublicImageUrl(value: string | undefined) {
  const candidate = value?.trim();

  if (!candidate) return null;
  if (candidate.startsWith("/")) return getPublicSiteAbsoluteUrl(candidate);

  try {
    const url = new URL(candidate);
    return url.protocol === "http:" || url.protocol === "https:" ? url.toString() : null;
  } catch {
    return null;
  }
}

export function findBlogRepresentativeImageUrl(content: string) {
  const markdownMatch = content.match(MARKDOWN_IMAGE_PATTERN);
  const markdownImage = normalizePublicImageUrl(markdownMatch?.[1]);

  if (markdownImage) return markdownImage;

  const htmlMatch = content.match(HTML_IMAGE_PATTERN);
  return normalizePublicImageUrl(htmlMatch?.[1] ?? htmlMatch?.[2] ?? htmlMatch?.[3]);
}

export function getBlogSocialImageUrl(content: string) {
  return (
    findBlogRepresentativeImageUrl(content) ??
    getPublicSiteAbsoluteUrl(DEFAULT_BLOG_SOCIAL_IMAGE_PATH)
  );
}
