Sha256: 748245a258c0b8f858e86ef7c5b6060a74ac2c303fe01633bcd86c5a2aad0fb9

Contents?: true

Size: 783 Bytes

Versions: 6

Compression:

Stored size: 783 Bytes

Contents

module PinPayment
  class Error < StandardError

    def self.create type, description, messages = nil
      klass = case type
        when 'token_already_used'; TokenAlreadyUsed
        when 'invalid_resource';   InvalidResource
        when 'resource_not_found'; ResourceNotFound
        else self
      end
      if messages.is_a?(Array)
        description = description + ' ' + messages.map{|x| "(#{x['message']})" }.join(' & ')
      elsif messages.is_a?(Hash)
        description = description + ' ' + messages.values.flatten.map{|x| "(#{x})" }.join(' & ')
      end
      klass.new(description)
    end

    class InvalidResponse  < Error; end
    class InvalidResource  < Error; end
    class ResourceNotFound < Error; end
    class TokenAlreadyUsed < Error; end

  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
pin_payment-0.5.2 lib/pin_payment/error.rb
pin_payment-0.5.1 lib/pin_payment/error.rb
pin_payment-0.5.0 lib/pin_payment/error.rb
pin_payment-0.4.0 lib/pin_payment/error.rb
pin_payment-0.3.0 lib/pin_payment/error.rb
pin_payment-0.2.0 lib/pin_payment/error.rb