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_email ⇒ EmailInfo
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>
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 |