class PagSeguro::Errors

Public Class Methods

new(response = nil) click to toggle source
# File lib/pagseguro/errors.rb, line 8
def initialize(response = nil)
  @response = response
  @messages = []

  process(@response) if response
end

Public Instance Methods

add(response) click to toggle source

Adds errors. Accepts a response.

# File lib/pagseguro/errors.rb, line 17
def add(response)
  process(response)
end

Private Instance Methods

error_message(code, message) click to toggle source
# File lib/pagseguro/errors.rb, line 36
def error_message(code, message)
  I18n.t(code, scope: "pagseguro.errors", default: message)
end
error_to_human(error) click to toggle source
# File lib/pagseguro/errors.rb, line 51
def error_to_human(error)
  error_to_sym(error).to_s
    .capitalize
    .gsub('_', ' ')
end
error_to_sym(error) click to toggle source

Error formats

# File lib/pagseguro/errors.rb, line 42
def error_to_sym(error)
  error.to_s.split(/::/)[-1]
    .gsub(/Error$/, '')
    .gsub(/[[:upper:]]/)
    .with_index {|k, i| i == 0 ? k : ('_' + k)}
    .downcase
    .to_sym
end
process(response) click to toggle source
# File lib/pagseguro/errors.rb, line 22
def process(response)
  return unless response.error?
  @messages << error_message(
    error_to_sym(response.error),
    error_to_human(response.error)
  )

  if response.error == Aitch::BadRequestError
    response.data.css("errors > error").each do |error|
      @messages << error_message(error.css("code").text, error.css("message").text)
    end
  end
end