Module: TempmailSdk::Providers::DevmailUk

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

Overview

devmail.uk 渠道实现

Constant Summary collapse

CHANNEL =
"devmail-uk"
API_BASE =
"https://www.devmail.uk/api"
HEADERS =
{ "Accept" => "application/json" }.freeze

Class Method Summary collapse

Class Method Details

.generate_emailEmailInfo

Returns:



22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/tempmail_sdk/providers/devmail_uk.rb', line 22

def generate_email
  resp = Http.get("#{API_BASE}/new", headers: HEADERS, timeout: 15)
  resp.raise_for_status
  data = resp.json
  raise "devmail-uk: invalid new email response" unless data.is_a?(Hash)

  email = data["email"].to_s.strip
  if email.empty? && !data["mailbox"].to_s.strip.empty?
    email = "#{data['mailbox'].to_s.strip}@devmail.uk"
  end
  raise "devmail-uk: invalid new email response" if email.empty? || !email.include?("@")

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

.get_emails(email) ⇒ Array<Email>

Parameters:

  • email (String)

Returns:



39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/tempmail_sdk/providers/devmail_uk.rb', line 39

def get_emails(email)
  mailbox = mailbox_from_email(email)
  raise "devmail-uk: empty email" if mailbox.empty?

  resp = Http.get(
    "#{API_BASE}/inbox/#{URI.encode_www_form_component(mailbox)}?detail=true",
    headers: HEADERS, timeout: 15
  )
  resp.raise_for_status
  data = resp.json
  return [] unless data.is_a?(Hash)

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

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

.mailbox_from_email(email) ⇒ Object



13
14
15
16
17
18
19
# File 'lib/tempmail_sdk/providers/devmail_uk.rb', line 13

def mailbox_from_email(email)
  address = email.to_s.strip
  return "" if address.empty?
  return address.split("@", 2).first.to_s.strip if address.include?("@")

  address
end