module SendGridMailer::Logger

Public Instance Methods

log_api_error_response(status_code, errors, api_call_type) click to toggle source
# File lib/send_grid_mailer/logger.rb, line 27
def log_api_error_response(status_code, errors, api_call_type)
  msg = "There was a problem calling the SendGrid API :(\nStatus Code: #{status_code}\nErrors:"
  msg += log_errors(errors)
  log(msg)
end
log_api_success_response(status_code, api_call_type) click to toggle source
# File lib/send_grid_mailer/logger.rb, line 23
def log_api_success_response(status_code, api_call_type)
  log("Succesfully called the SendGrid API :)\nStatus Code: #{status_code}")
end
log_definition(definition) click to toggle source
# File lib/send_grid_mailer/logger.rb, line 3
def log_definition(definition)
  mail = definition.mail
  personalization = definition.personalization

  data = {
    "Subject" => personalization.subject,
    "Template ID" => mail.template_id,
    "From" => log_email(mail.from),
    "To" => log_emails(personalization, :tos),
    "Cc" => log_emails(personalization, :ccs),
    "Bcc" => log_emails(personalization, :bccs),
    "Substitutions" => log_pairs(personalization.substitutions),
    "Headers" => log_pairs(personalization.headers),
    "body" => log_contents(mail),
    "Attachments" => log_attachments(mail)
  }

  log(build_definition_message(data))
end

Private Instance Methods

build_definition_message(data) click to toggle source
# File lib/send_grid_mailer/logger.rb, line 40
def build_definition_message(data)
  data = data.keys.map do |k|
    d = data[k].to_s
    "#{k}: #{d.presence || '-'}"
  end.join("\n")
end
log(msg) click to toggle source
# File lib/send_grid_mailer/logger.rb, line 35
def log(msg)
  Rails.logger.info("\n#{msg}")
  nil
end
log_attachments(mail) click to toggle source
# File lib/send_grid_mailer/logger.rb, line 62
def log_attachments(mail)
  return if mail.attachments.blank?

  mail.attachments.map do |f|
    "\n\t#{f['filename']}"
  end.join("")
end
log_contents(mail) click to toggle source
# File lib/send_grid_mailer/logger.rb, line 70
def log_contents(mail)
  return if mail.contents.blank?

  mail.contents.map do |content|
    "\n\ttype: #{content['type']}\n\tvalue: #{content['value']}"
  end.join("")
end
log_email(email) click to toggle source
# File lib/send_grid_mailer/logger.rb, line 47
def log_email(email)
  return if email.blank?

  email["email"]
end
log_emails(personalization, origin) click to toggle source
# File lib/send_grid_mailer/logger.rb, line 53
def log_emails(personalization, origin)
  emails = personalization.send(origin)
  return if emails.blank?

  emails.map do |email|
    log_email(email)
  end.join(", ")
end
log_errors(errors) click to toggle source
# File lib/send_grid_mailer/logger.rb, line 86
def log_errors(errors)
  errors.map do |error|
    msg = []
    msg << "#{error['field']}: " if error['field']
    msg << error['message']
    msg << " - help: #{error['help']}" if error['help']
    "\n\t* #{msg.join('')}"
  end.join("")
end
log_pairs(hash) click to toggle source
# File lib/send_grid_mailer/logger.rb, line 78
def log_pairs(hash)
  return if hash.blank?

  hash.keys.map do |k|
    "\n\t#{k} => #{hash[k]}"
  end.join("")
end