Module: TempmailSdk::Providers::FakeEmailSite

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

Overview

fake-email.site 渠道实现 JSON REST API:创建临时邮箱 + 轮询收件箱

Constant Summary collapse

CHANNEL =
"fake-email-site"
BASE =
"https://api.fake-email.site"
HEADERS =
{
  "Accept" => "application/json",
  "Content-Type" => "application/json",
  "User-Agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"
}.freeze

Class Method Summary collapse

Class Method Details

.generate_emailEmailInfo

Returns:



19
20
21
22
23
24
25
26
27
28
29
# File 'lib/tempmail_sdk/providers/fake_email_site.rb', line 19

def generate_email
  resp = Http.post("#{BASE}/api/temporary-address", headers: HEADERS, json: {})
  resp.raise_for_status
  data = resp.json
  raise "fake-email-site: invalid response" unless data.is_a?(Hash)

  email = (data["temp_email_addr"] || "").to_s.strip
  raise "fake-email-site: missing temp_email_addr" if email.empty?

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

.get_emails(email) ⇒ Array<Email>

Parameters:

  • email (String)

Returns:



33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/tempmail_sdk/providers/fake_email_site.rb', line 33

def get_emails(email)
  resp = Http.get("#{BASE}/api/inbox/poll?address=#{email}", headers: HEADERS)
  return [] if resp.status_code == 404

  resp.raise_for_status
  data = resp.json
  return [] unless data.is_a?(Hash)

  rows = data["messages"]
  return [] unless rows.is_a?(Array)

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