Class: Sidemail::Delivery::Method

Inherits:
Object
  • Object
show all
Defined in:
lib/sidemail/delivery/method.rb

Constant Summary collapse

URL =
URI("https://api.sidemail.io/v1/email/send")

Instance Method Summary collapse

Constructor Details

#initialize(_options) ⇒ Method

Returns a new instance of Method.



8
9
10
# File 'lib/sidemail/delivery/method.rb', line 8

def initialize(_options)
  # empty but unused, to avoid errors
end

Instance Method Details

#deliver!(mail) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/sidemail/delivery/method.rb', line 12

def deliver!(mail)
  response = post_to_api(mail[:to].addrs.map(&:address) + mail[:cc]&.addrs.to_a.map(&:address) +
    mail[:bcc]&.addrs.to_a.map(&:address), payload(mail))
  JSON.parse(response.body).tap do |json|
    break if json.is_a?(Array) # successful mail to multiple addresses
    break unless json.key?("errorCode")

    raise Sidemail::Delivery::Exception.new("#{json["errorCode"]}: #{json["developerMessage"]}")
  end
rescue JSON::ParserError
  raise Sidemail::Delivery::Exception.new("Unable to parse response")
end