class EmailClient
General client that sends email utilizing multiple service providers
Public Class Methods
bad_req_code()
click to toggle source
Accessor for the Bad Request Code
# File lib/email_api/email/client/email_client.rb, line 15 def self.bad_req_code 400 end
internal_err_code()
click to toggle source
Accessor for the Internal Server Error Code
# File lib/email_api/email/client/email_client.rb, line 20 def self.internal_err_code 500 end
ok_code()
click to toggle source
Accessor for the OK Code
# File lib/email_api/email/client/email_client.rb, line 10 def self.ok_code 200 end
send_email(email_object)
click to toggle source
Sends email utilizing multiple service providers
@param [EmailObject] email_object @return [ClientResponse] response
# File lib/email_api/email/client/email_client.rb, line 28 def self.send_email(email_object) return ClientResponse.new if email_object.nil? || !email_object.is_a?(EmailObject) puts 'Attempting Email Sending via primary client: SENDGRID' response = use_client_client SendgridClient, email_object if response != ok_code puts 'Primary client failed. Attempting secondary client: MAILGUN' response = use_client_client MailgunClient, email_object end client_response = ClientResponse.new email_object if response == ok_code client_response.set_ok elsif response == bad_req_code client_response.set_bad_req elsif response == internal_err_code client_response.set_internal_err end client_response end
use_client_client(email_client, email_object)
click to toggle source
Sends email using a single email client
@param [MailgunClient|SendgridClient] email_client @param [EmailObject] email_object @return [Integer] response_code
# File lib/email_api/email/client/email_client.rb, line 56 def self.use_client_client(email_client, email_object) begin response = email_client.send_email(email_object) puts 'Successful attempt' if response == ok_code puts 'Bad Request' if response == bad_req_code puts 'Internal Server Error' if response == internal_err_code rescue StandardError => e # Log error and fail send puts "Error: #{e.message}" response = internal_err_code end response end