Sha256: e869c25736257408dd99c836893623267f02f02f7f7efabf2198e704a18fed8f

Contents?: true

Size: 969 Bytes

Versions: 3

Compression:

Stored size: 969 Bytes

Contents

module Avatax
  class Configuration
    attr_reader :sandbox, :base_url, :env, :username, :password, :headers

    REST_URLS = {
      sandbox:    'https://sandbox-rest.avatax.com',
      production: 'https://rest.avatax.com'
    }

    SANDBOX = :sandbox
    PRODUCTION = :production

    def initialize(args = {})
      validate_args(args)

      @env = args[:env].to_sym
      @sandbox = @env == SANDBOX
      @base_url = REST_URLS[env]

      @headers = args[:headers] || {}

      @username = args[:username]
      @password = args[:password]
    end

    private

    def validate_args(args)
      raise ArgumentError, 'username is required' if args[:username].blank?
      raise ArgumentError, 'password is required' if args[:password].blank?
      raise ArgumentError, 'env is required' if args[:env].blank?

      return if [SANDBOX, PRODUCTION].include?(args[:env].to_sym)
      raise ArgumentError, 'env must be of :sandbox or :production'
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
avatax-ruby-0.0.4 lib/avatax/configuration.rb
avatax-ruby-0.0.3 lib/avatax/configuration.rb
avatax-ruby-0.0.2 lib/avatax/configuration.rb