Module: TempmailSdk::Providers::Cleantempmail

Defined in:
lib/tempmail_sdk/providers/cleantempmail.rb

Overview

cleantempmail.com 渠道实现

Constant Summary collapse

CHANNEL =
"cleantempmail"
API_BASE =
"https://cleantempmail.com/api"
HEADERS =
{
  "Accept" => "application/json",
  "User-Agent" => "Mozilla/5.0",
  "X-API-Key" => (ENV["CLEANTEMPMAIL_API_KEY"].to_s.strip.empty? ? "ct-test" : ENV["CLEANTEMPMAIL_API_KEY"].to_s.strip)
}.freeze

Class Method Summary collapse

Class Method Details

.fetch_json(path) ⇒ Object



17
18
19
20
21
22
# File 'lib/tempmail_sdk/providers/cleantempmail.rb', line 17

def fetch_json(path)
  resp = Http.get("#{API_BASE}#{path}", headers: HEADERS, timeout: 15)
  resp.raise_for_status
  data = resp.json
  data.is_a?(Hash) ? data : {}
end

.generate_emailEmailInfo

Returns:



25
26
27
28
29
30
31
32
# File 'lib/tempmail_sdk/providers/cleantempmail.rb', line 25

def generate_email
  data = fetch_json("/generate-email")
  payload = data["data"].is_a?(Hash) ? data["data"] : {}
  email = (payload["email"] || payload["mailbox"]).to_s.strip
  raise "cleantempmail: invalid generate-email response" if email.empty? || !email.include?("@")

  EmailInfo.new(channel: CHANNEL, email: email)
end

.get_emails(email) ⇒ Array<Email>

Parameters:

  • email (String)

Returns:



36
37
38
39
40
41
42
43
44
45
46
# File 'lib/tempmail_sdk/providers/cleantempmail.rb', line 36

def get_emails(email)
  address = email.to_s.strip
  raise "cleantempmail: empty email" if address.empty?

  data = fetch_json("/emails?email=#{URI.encode_www_form_component(address)}")
  payload = data["data"].is_a?(Hash) ? data["data"] : {}
  rows = payload["emails"]
  return [] unless rows.is_a?(Array)

  rows.select { |r| r.is_a?(Hash) }.map { |item| Normalize.normalize_email(item, address) }
end