Class: Multicard::Configuration

Inherits:
Object
  • Object
show all
Defined in:
lib/multicard/configuration.rb

Constant Summary collapse

DEFAULT_BASE_URL =
'https://api.multicard.uz'
DEFAULT_TIMEOUT =
30
DEFAULT_OPEN_TIMEOUT =
10

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(**options) ⇒ Configuration

Returns a new instance of Configuration.



11
12
13
14
15
16
17
18
19
# File 'lib/multicard/configuration.rb', line 11

def initialize(**options)
  @application_id = options[:application_id]
  @secret = options[:secret]
  @base_url = (options[:base_url] || DEFAULT_BASE_URL).chomp('/')
  @timeout = options[:timeout] || DEFAULT_TIMEOUT
  @open_timeout = options[:open_timeout] || DEFAULT_OPEN_TIMEOUT
  @logger = options[:logger]
  @store_id = options[:store_id]
end

Instance Attribute Details

#application_idObject

Returns the value of attribute application_id.



5
6
7
# File 'lib/multicard/configuration.rb', line 5

def application_id
  @application_id
end

#base_urlObject

Returns the value of attribute base_url.



5
6
7
# File 'lib/multicard/configuration.rb', line 5

def base_url
  @base_url
end

#loggerObject

Returns the value of attribute logger.



5
6
7
# File 'lib/multicard/configuration.rb', line 5

def logger
  @logger
end

#open_timeoutObject

Returns the value of attribute open_timeout.



5
6
7
# File 'lib/multicard/configuration.rb', line 5

def open_timeout
  @open_timeout
end

#secretObject

Returns the value of attribute secret.



5
6
7
# File 'lib/multicard/configuration.rb', line 5

def secret
  @secret
end

#store_idObject

Returns the value of attribute store_id.



5
6
7
# File 'lib/multicard/configuration.rb', line 5

def store_id
  @store_id
end

#timeoutObject

Returns the value of attribute timeout.



5
6
7
# File 'lib/multicard/configuration.rb', line 5

def timeout
  @timeout
end

Instance Method Details

#merge(overrides) ⇒ Object

Merge per-client overrides into this configuration. Uses .key? for fields where nil/0/false are valid override values (e.g., store_id: nil to clear, timeout: 0 to disable).



29
30
31
32
33
34
35
36
37
38
39
# File 'lib/multicard/configuration.rb', line 29

def merge(overrides)
  self.class.new(
    application_id: overrides[:application_id] || application_id,
    secret: overrides[:secret] || secret,
    base_url: overrides[:base_url] || base_url,
    timeout: overrides.key?(:timeout) ? overrides[:timeout] : timeout,
    open_timeout: overrides.key?(:open_timeout) ? overrides[:open_timeout] : open_timeout,
    logger: overrides.key?(:logger) ? overrides[:logger] : logger,
    store_id: overrides.key?(:store_id) ? overrides[:store_id] : store_id
  )
end

#validate!Object

Raises:

  • (ArgumentError)


21
22
23
24
# File 'lib/multicard/configuration.rb', line 21

def validate!
  raise ArgumentError, 'application_id is required' if application_id.nil? || application_id.to_s.empty?
  raise ArgumentError, 'secret is required' if secret.nil? || secret.to_s.empty?
end