Class: Unleash::Configuration

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

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(opts = {}) ⇒ Configuration

Returns a new instance of Configuration.



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/unleash/configuration.rb', line 13

def initialize(opts = {})
  self.app_name      = opts[:app_name]    || nil
  self.url           = opts[:url]         || nil
  self.instance_id   = opts[:instance_id] || SecureRandom.uuid

  if opts[:custom_http_headers].is_a?(Hash) || opts[:custom_http_headers].nil?
    self.custom_http_headers = opts[:custom_http_headers] || {}
  else
    raise ArgumentError, "custom_http_headers must be a hash."
  end
  self.disable_client   = opts[:disable_client]   || false
  self.disable_metrics  = opts[:disable_metrics]  || false
  self.refresh_interval = opts[:refresh_interval] || 15
  self.metrics_interval = opts[:metrics_interval] || 10
  self.timeout          = opts[:timeout] || 30
  self.retry_limit      = opts[:retry_limit] || 1

  self.backup_file   = opts[:backup_file] || nil

  self.logger    = opts[:logger] || Logger.new(STDOUT)
  self.log_level = opts[:log_level] || Logger::WARN


  if opts[:logger].nil?
    # on default logger, use custom formatter that includes thread_name:
    self.logger.formatter = proc do |severity, datetime, progname, msg|
      thread_name = (Thread.current[:name] || "Unleash").rjust(16, ' ')
      "[#{datetime.iso8601(6)} #{thread_name} #{severity.ljust(5, ' ')}] : #{msg}\n"
    end
  end

  refresh_backup_file!
end

Instance Attribute Details

#app_nameObject

Returns the value of attribute app_name.



6
7
8
# File 'lib/unleash/configuration.rb', line 6

def app_name
  @app_name
end

#backup_fileObject

Returns the value of attribute backup_file.



6
7
8
# File 'lib/unleash/configuration.rb', line 6

def backup_file
  @backup_file
end

#custom_http_headersObject

Returns the value of attribute custom_http_headers.



6
7
8
# File 'lib/unleash/configuration.rb', line 6

def custom_http_headers
  @custom_http_headers
end

#disable_clientObject

Returns the value of attribute disable_client.



6
7
8
# File 'lib/unleash/configuration.rb', line 6

def disable_client
  @disable_client
end

#disable_metricsObject

Returns the value of attribute disable_metrics.



6
7
8
# File 'lib/unleash/configuration.rb', line 6

def disable_metrics
  @disable_metrics
end

#instance_idObject

Returns the value of attribute instance_id.



6
7
8
# File 'lib/unleash/configuration.rb', line 6

def instance_id
  @instance_id
end

#log_levelObject

Returns the value of attribute log_level.



6
7
8
# File 'lib/unleash/configuration.rb', line 6

def log_level
  @log_level
end

#loggerObject

Returns the value of attribute logger.



6
7
8
# File 'lib/unleash/configuration.rb', line 6

def logger
  @logger
end

#metrics_intervalObject

Returns the value of attribute metrics_interval.



6
7
8
# File 'lib/unleash/configuration.rb', line 6

def metrics_interval
  @metrics_interval
end

#refresh_intervalObject

Returns the value of attribute refresh_interval.



6
7
8
# File 'lib/unleash/configuration.rb', line 6

def refresh_interval
  @refresh_interval
end

#retry_limitObject

Returns the value of attribute retry_limit.



6
7
8
# File 'lib/unleash/configuration.rb', line 6

def retry_limit
  @retry_limit
end

#timeoutObject

Returns the value of attribute timeout.



6
7
8
# File 'lib/unleash/configuration.rb', line 6

def timeout
  @timeout
end

#urlObject

Returns the value of attribute url.



6
7
8
# File 'lib/unleash/configuration.rb', line 6

def url
  @url
end

Instance Method Details

#client_metrics_urlObject



80
81
82
# File 'lib/unleash/configuration.rb', line 80

def client_metrics_url
  self.url + '/client/metrics'
end

#client_register_urlObject



84
85
86
# File 'lib/unleash/configuration.rb', line 84

def client_register_url
  self.url + '/client/register'
end

#fetch_toggles_urlObject



76
77
78
# File 'lib/unleash/configuration.rb', line 76

def fetch_toggles_url
  self.url + '/client/features'
end

#get_http_headersObject



69
70
71
72
73
74
# File 'lib/unleash/configuration.rb', line 69

def get_http_headers
  {
    'UNLEASH-INSTANCEID' => self.instance_id,
    'UNLEASH-APPNAME' => self.app_name
  }.merge(custom_http_headers.dup)
end

#metrics_interval_in_millisObject



47
48
49
# File 'lib/unleash/configuration.rb', line 47

def metrics_interval_in_millis
  self.metrics_interval * 1_000
end

#refresh_backup_file!Object



63
64
65
66
67
# File 'lib/unleash/configuration.rb', line 63

def refresh_backup_file!
  if self.backup_file.nil?
    self.backup_file = Dir.tmpdir + "/unleash-#{app_name}-repo.json"
  end
end

#validate!Object



51
52
53
54
55
56
57
58
59
60
61
# File 'lib/unleash/configuration.rb', line 51

def validate!
  return if self.disable_client

  if self.app_name.nil? or self.url.nil?
    raise ArgumentError, "URL and app_name are required parameters."
  end

  if ! self.custom_http_headers.is_a?(Hash)
    raise ArgumentError, "custom_http_headers must be a hash."
  end
end