export function extractNumber(str) {
  if (typeof str !== "string") return null;

  const cleaned = str.replace(/,/g, "");
  const match = cleaned.match(/\d+(\.\d+)?/);
  return match ? parseFloat(match[0]) : null;
}

export function extractModelId(url) {
  try {
    switch (extractDomain(url)) {
      case "https://www.grays.com": {
        const match = url.match(/\/lot\/([\d-]+)\//);
        return match ? match[1] : null;
      }
      case "https://www.langtons.com.au": {
        const match = url.match(/auc-var-\d+/);
        return match[0];
      }
      case "https://www.lawsons.com.au": {
        const match = url.split("_");
        return match ? match[1] : null;
      }
      case "https://www.pickles.com.au": {
        const model = url.split("/").pop();
        return model ? model : null;
      }
      case "https://www.allbids.com.au": {
        const match = url.match(/-(\d+)(?:[\?#]|$)/);
        return match ? match[1] : null;
      }
      default:
        return null;
    }
  } catch (error) {
    return null;
  }
}

export function extractDomain(url) {
  try {
    const parsedUrl = new URL(url);
    return parsedUrl.origin;
  } catch (error) {
    return null;
  }
}
