class Hps::ExceptionMapper

Attributes

exceptions[R]

Public Class Methods

new() click to toggle source
# File lib/hps/infrastructure/hps_exception_mapper.rb, line 8
def initialize
        path = File.join( File.dirname(__FILE__), "exceptions.json")

        File.open(path, "r") do |f|
                @exceptions = JSON.load(f)
        end
end

Public Instance Methods

map_gateway_exception(transaction_id, response_code, response_text) click to toggle source
# File lib/hps/infrastructure/hps_exception_mapper.rb, line 45
def map_gateway_exception(transaction_id, response_code, response_text)

        mapping = exception_for_category_and_code("gateway", response_code)
        message = message_for_mapping(mapping, response_text)

        unless mapping.nil?

                code = mapping["mapping_code"]
                exception_type = mapping["mapping_type"]

                if exception_type == "AuthenticationException"

                        return AuthenticationException.new(message)

                elsif exception_type == "CardException"

                        return CardException.new(transaction_id, code, message)

                elsif exception_type == "InvalidRequestException"

                        return InvalidRequestException.new(message, mapping["param"], code)

                elsif !code.nil?

                        return HpsException.new(response_text, code)

                end

        end

        HpsException.new(message, "unknown")
end
map_gift_card_exception(transaction_id, response_code, response_text) click to toggle source
# File lib/hps/infrastructure/hps_exception_mapper.rb, line 34
       def map_gift_card_exception(transaction_id, response_code, response_text)
        mapping = exception_for_category_and_code("gift", response_code)
        unless mapping.nil?
                message = message_for_mapping(mapping, response_text)
                code = mapping["mapping_code"]
                return CardException.new(transaction_id, code, message)
        else
                return CardException.new(transaction_id, "unknown_card_exception", response_text)
        end
end
map_issuer_exception(transaction_id, response_code, response_text) click to toggle source
# File lib/hps/infrastructure/hps_exception_mapper.rb, line 20
def map_issuer_exception(transaction_id, response_code, response_text)

        mapping = exception_for_category_and_code("issuer", response_code)

        unless mapping.nil?
                message = message_for_mapping(mapping, response_text)
                code = mapping["mapping_code"]
                return CardException.new(transaction_id, code, message)
        else
                return CardException.new(transaction_id, "unknown_card_exception", response_text)
        end

end
map_sdk_exception(error_code, inner_exception = nil) click to toggle source
# File lib/hps/infrastructure/hps_exception_mapper.rb, line 78
def map_sdk_exception(error_code, inner_exception = nil)

        mapping = exception_for_category_and_code("sdk", error_code)
        sdk_code_name = SdkCodes.instance_methods.detect { |m| SdkCodes.send(m) == error_code }

        if sdk_code_name.nil?
                response_text = "unknown"
        else
                response_text = sdk_code_name
        end

        unless mapping.nil?

                        message = message_for_mapping(mapping, response_text)
                        code = mapping["mapping_code"]
                        exception_type = mapping["mapping_type"]

                        if exception_type == "InvalidRequestException"

                                return InvalidRequestException.new(message, mapping["param"], code)

                        elsif exception_type == "ApiConnectionException"

                                return ApiConnectionException.new(message, inner_exception, code)

                        elsif !code.nil?

                                return HpsException.new(message, code)

                        end

        end

        HpsException.new("unknown", "unknown", inner_exception)

end
version_number() click to toggle source
# File lib/hps/infrastructure/hps_exception_mapper.rb, line 16
def version_number
        @exceptions["version"]
end

Private Instance Methods

exception_for_category_and_code(category, code) click to toggle source
# File lib/hps/infrastructure/hps_exception_mapper.rb, line 137
def exception_for_category_and_code(category, code)

        @exceptions["exception_mappings"].detect { |m|
                m["category"] == category and m["exception_codes"].include?(code.to_s)
        }

end
message_for_mapping(mapping, original_message) click to toggle source
# File lib/hps/infrastructure/hps_exception_mapper.rb, line 117
def message_for_mapping(mapping, original_message)

        return original_message if mapping.nil?

        message = mapping["mapping_message"]

        unless message.nil?

                mapping_message = @exceptions["exception_messages"].detect { |m|
                        m["code"] == message
                }

                return mapping_message["message"] unless mapping_message["message"].nil?

        end

        original_message

end