Class: GettiveMailer::DeliveryMethod

Inherits:
Object
  • Object
show all
Defined in:
lib/gettive_mailer/delivery_method.rb

Instance Method Summary collapse

Constructor Details

#initialize(_options = {}) ⇒ DeliveryMethod

Returns a new instance of DeliveryMethod.



5
6
# File 'lib/gettive_mailer/delivery_method.rb', line 5

def initialize(_options = {})
end

Instance Method Details

#deliver!(mail) ⇒ Object

Raises:

  • (StandardError)


8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/gettive_mailer/delivery_method.rb', line 8

def deliver!(mail)
  uri = URI("#{GettiveMailer.config.host}/send-mail")

  response = Net::HTTP.start(
    uri.host,
    uri.port,
    use_ssl: uri.scheme == "https"
  ) do |http|
    request = Net::HTTP::Post.new(uri)

    request["Authorization"] =
      "Bearer #{GettiveMailer.config.api_key}"

    request["Content-Type"] = "application/json"

    request.body = {
      raw_email: Base64.strict_encode64(mail.to_s)
    }.to_json

    http.request(request)
  end

  return if response.code.to_i.between?(200, 299)

  raise StandardError,
        "GettiveMailer delivery failed: #{response.code} #{response.body}"
end