/**
 * Base Parser - 邮件解析器基类
 * 所有网站的邮件解析器都继承此类
 */

class BaseParser {
  constructor(siteName) {
    this.siteName = siteName;
  }

  /**
   * 判断是否能解析此邮件
   * @param {Object} email - 邮件对象
   * @returns {boolean}
   */
  canParse(email) {
    throw new Error('Must implement canParse() method');
  }

  /**
   * 从邮件中提取验证码
   * @param {Object} email - 邮件对象
   * @returns {string|null} - 验证码或null
   */
  extractCode(email) {
    throw new Error('Must implement extractCode() method');
  }

  /**
   * 通用的验证码提取方法
   * @param {string} content - 邮件内容
   * @param {RegExp} pattern - 正则表达式
   * @returns {string|null}
   */
  extractByRegex(content, pattern) {
    if (!content) return null;
    
    const match = content.match(pattern);
    return match ? match[1] : null;
  }

  /**
   * 从HTML中提取文本
   * @param {string} html - HTML内容
   * @returns {string}
   */
  stripHtml(html) {
    if (!html) return '';
    return html.replace(/<[^>]*>/g, ' ').replace(/\s+/g, ' ').trim();
  }
}

module.exports = BaseParser;
