Sha256: 6976d3cb629ff81a945b8e6912baa19fe85b4b292916f4f08c42fad3cd3eb8e7

Contents?: true

Size: 1.23 KB

Versions: 1

Compression:

Stored size: 1.23 KB

Contents

module PagarMe
  class PagarMeError < StandardError
  end

  class ConnectionError < PagarMeError
    attr_reader :error

    def initialize(error)
      @error = error
      super error.message
    end
  end

  class RequestError < PagarMeError
  end

  class ResponseError < PagarMeError
    attr_reader :request_params, :error

    def initialize(request_params, error)
      @request_params, @error = request_params, error
      super @error.message
    end
  end

  class NotFound < ResponseError
    attr_reader :response
    def initialize(response, request_params, error)
      @response = response
      super request_params, error
    end
  end

  class ValidationError < PagarMeError
    attr_reader :response, :errors

    def initialize(response)
      @response = response
      @errors   = response['errors'].map do |error|
        params = error.values_at('message', 'parameter_name', 'type', 'url')
        ParamError.new(*params)
      end
      super @errors.map(&:message).join(', ')
    end
  end

  class ParamError < PagarMeError
    attr_reader :parameter_name, :type, :url

    def initialize(message, parameter_name, type, url)
      @parameter_name, @type, @url = parameter_name, type, url
      super message
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
pagarme-2.1.3 lib/pagarme/errors.rb