class SGMailer::Client
Attributes
api_key[R]
Public Class Methods
new(api_key:, api_url: nil)
click to toggle source
# File lib/sg_mailer/client.rb, line 8 def initialize(api_key:, api_url: nil) @api_key = api_key @api_url ||= 'https://api.sendgrid.com/v3/mail/send' @api_uri = URI(@api_url) end
Public Instance Methods
send(mail)
click to toggle source
# File lib/sg_mailer/client.rb, line 14 def send(mail) response = Net::HTTP.start(*http_options) do |http| http.request(request(mail.to_json)) end raise ResponseError, response if response.code.to_i > 299 response end
Private Instance Methods
http_options()
click to toggle source
# File lib/sg_mailer/client.rb, line 27 def http_options [@api_uri.host, @api_uri.port, use_ssl: @api_uri.scheme == 'https'] end
request(body)
click to toggle source
# File lib/sg_mailer/client.rb, line 31 def request(body) request = Net::HTTP::Post.new(@api_uri, request_headers) request.body = body request end
request_headers()
click to toggle source
# File lib/sg_mailer/client.rb, line 37 def request_headers { 'Authorization' => "Bearer #{@api_key}", 'Content-Type' => 'application/json' } end