Sha256: 7cb4f416ad63e96cd61fd5734337a75b559852ddd2b7f459a962840674d5ee24

Contents?: true

Size: 1021 Bytes

Versions: 4

Compression:

Stored size: 1021 Bytes

Contents

# frozen_string_literal: true

module IssuerResponseCodes
  class Context
    attr_reader :default_target, :default_locale, :fraud_notice_by_default

    NOT_PROVIDED = ::Object.new

    def initialize(default_target: :merchant, default_locale: :en, fraud_notice_by_default: NOT_PROVIDED)
      @default_target = default_target
      @default_locale = default_locale

      raise IllegalLocale, "No such locale: #{default_locale.inspect}" unless AVAILABLE_LOCALES.include?(default_locale)
      raise IllegalTarget, "No such target: #{default_target.inspect}" unless AVAILABLE_TARGETS.include?(default_target)

      if fraud_notice_by_default != NOT_PROVIDED
        @fraud_notice_by_default = fraud_notice_by_default
        return
      end

      @fraud_notice_by_default = default_target == :merchant
    end

    def code(id:, target: default_target, locale: default_locale, fraud_notice: fraud_notice_by_default)
      Code.new(id: id, target: target, locale: locale, fraud_notice: fraud_notice)
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
issuer_response_codes-0.1.3 lib/issuer_response_codes/context.rb
issuer_response_codes-0.1.2 lib/issuer_response_codes/context.rb
issuer_response_codes-0.1.1 lib/issuer_response_codes/context.rb
issuer_response_codes-0.1.0 lib/issuer_response_codes/context.rb