Sha256: 987567afa68f6631975e4fd632e69409b0d9e2844e2582f0dfc0038fc3ac1b89

Contents?: true

Size: 1.09 KB

Versions: 15

Compression:

Stored size: 1.09 KB

Contents

# frozen_string_literal: true
module FinAppsCore
  module REST
    # Represents the client configuration options
    class Configuration # :nodoc:
      using ObjectExtensions

      attr_accessor :tenant_token, :user_identifier, :user_token,
                    :host, :proxy, :timeout, :retry_limit,
                    :log_level

      def initialize(options={})
        FinAppsCore::REST::Defaults::DEFAULTS.merge(remove_empty_options(options))
                                             .each {|key, value| public_send("#{key}=", value) }

        raise FinAppsCore::InvalidArgumentsError.new "Invalid argument. {host: #{host}}" unless valid_host?
        raise FinAppsCore::InvalidArgumentsError.new "Invalid argument. {timeout: #{timeout}}" unless timeout.integer?
      end

      def valid_user_credentials?
        FinAppsCore::REST::Credentials.new(user_identifier, user_token).valid?
      end

      private

      def valid_host?
        host.start_with?('http://', 'https://')
      end

      def remove_empty_options(hash)
        hash.select {|_, value| !value.nil? }
      end
    end
  end
end

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
finapps_core-2.0.20 lib/finapps_core/rest/configuration.rb
finapps_core-2.0.19 lib/finapps_core/rest/configuration.rb
finapps_core-2.0.18 lib/finapps_core/rest/configuration.rb
finapps_core-2.0.17 lib/finapps_core/rest/configuration.rb
finapps_core-2.0.16 lib/finapps_core/rest/configuration.rb
finapps_core-2.0.15 lib/finapps_core/rest/configuration.rb
finapps_core-2.0.14 lib/finapps_core/rest/configuration.rb
finapps_core-2.0.13 lib/finapps_core/rest/configuration.rb
finapps_core-2.0.12 lib/finapps_core/rest/configuration.rb
finapps_core-2.0.11 lib/finapps_core/rest/configuration.rb
finapps_core-2.0.10 lib/finapps_core/rest/configuration.rb
finapps_core-2.0.9 lib/finapps_core/rest/configuration.rb
finapps_core-2.0.8 lib/finapps_core/rest/configuration.rb
finapps_core-2.0.7 lib/finapps_core/rest/configuration.rb
finapps_core-2.0.6 lib/finapps_core/rest/configuration.rb