Sha256: b7953fad4d7821e454aae477c8a7dd5ca86bd1af23e494a319626da2699d80f8

Contents?: true

Size: 1.66 KB

Versions: 6

Compression:

Stored size: 1.66 KB

Contents

module Conekta
  class Error < Exception
    attr_reader :message
    attr_reader :type
    attr_reader :code
    attr_reader :param

    def initialize(message=nil, type=nil, code=nil, param=nil)
      @message = message
      @type = type
      @code = code
      @param = param
    end
    def class_name
      self.class.name.split('::')[-1]
    end
    def self.error_handler(resp, code)
      if resp.instance_of?(Hash)
        @message = resp["message"] if resp.has_key?('message')
        @type = resp["type"] if resp.has_key?('type')
        @code = resp["code"] if resp.has_key?('code')
        @param = resp["param"] if resp.has_key?('param')
      end
      if code == nil or code == 0 or code == nil or code == ""
        raise NoConnectionError.new("Could not connect to #{Conekta.api_base}", @type, @code, @param)
      end
      case code
      when 400
				raise MalformedRequestError.new(@message, @type, @code, @params)
			when 401
				raise AuthenticationError.new(@message, @type, @code, @params)
			when 402
				raise ProcessingError.new(@message, @type, @code, @params)
			when 404
				raise ResourceNotFoundError.new(@message, @type, @code, @params)
			when 422
				raise ParameterValidationError.new(@message, @type, @code, @params)
			when 500
				raise ApiError.new(@message, @type, @code, @params)
			else
				raise Error.new(@message, @type, @code, @params)
      end
    end
  end
  class ApiError < Error		
	end
	
	class NoConnectionError < Error 
	end

	class AuthenticationError < Error 
	end

	class ParameterValidationError < Error 
	end

	class ProcessingError < Error 
	end

	class ResourceNotFoundError < Error 
	end

	class MalformedRequestError < Error 
	end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
conekta-0.4.2 lib/conekta/error.rb
conekta-0.4.1 lib/conekta/error.rb
conekta-0.4.0 lib/conekta/error.rb
conekta-0.3.7 lib/conekta/error.rb
conekta-0.3.6 lib/conekta/error.rb
conekta-0.3.5 lib/conekta/error.rb