Class: Kameleoon::KameleoonClientConfig

Inherits:
Object
  • Object
show all
Defined in:
lib/kameleoon/kameleoon_client_config.rb

Overview

KameleoonClient configuration which can be used instead of an external configuration file

Constant Summary collapse

DEFAULT_REFRESH_INTERVAL_MINUTES =
60
DEFAULT_SESSION_DURATION_MINUTES =
30
DEFAULT_TIMEOUT_MILLISECONDS =
10_000
DEFAULT_TRACKING_INTERVAL_MILLISECONDS =
1000
MIN_TRACKING_INTERVAL_MILLISECONDS =
300
MAX_TRACKING_INTERVAL_MILLISECONDS =
1000

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(client_id, client_secret, refresh_interval_minute: DEFAULT_REFRESH_INTERVAL_MINUTES, session_duration_minute: DEFAULT_SESSION_DURATION_MINUTES, default_timeout_millisecond: DEFAULT_TIMEOUT_MILLISECONDS, tracking_interval_millisecond: DEFAULT_TRACKING_INTERVAL_MILLISECONDS, environment: nil, top_level_domain: nil, verbose_mode: nil) ⇒ KameleoonClientConfig

verbose_mode is DEPRECATED. Please use KameleoonLogger.log_level instead.



33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
# File 'lib/kameleoon/kameleoon_client_config.rb', line 33

def initialize(
  client_id,
  client_secret,
  refresh_interval_minute: DEFAULT_REFRESH_INTERVAL_MINUTES,
  session_duration_minute: DEFAULT_SESSION_DURATION_MINUTES,
  default_timeout_millisecond: DEFAULT_TIMEOUT_MILLISECONDS,
  tracking_interval_millisecond: DEFAULT_TRACKING_INTERVAL_MILLISECONDS,
  environment: nil,
  top_level_domain: nil,
  verbose_mode: nil
)
  raise Exception::ConfigCredentialsInvalid, 'Client ID is not specified' if client_id&.empty? != false
  raise Exception::ConfigCredentialsInvalid, 'Client secret is not specified' if client_secret&.empty? != false

  unless verbose_mode.nil?
    Logging::KameleoonLogger.warning(
      '[DEPRECATION] `verbose_mode` is deprecated. Please use `KameleoonLogger.log_level` instead.'
    )
  end

  @verbose_mode = verbose_mode

  @client_id = client_id
  @client_secret = client_secret

  if refresh_interval_minute.nil?
    refresh_interval_minute = DEFAULT_REFRESH_INTERVAL_MINUTES
  elsif refresh_interval_minute <= 0
    Logging::KameleoonLogger.warning(lambda {
      'Configuration refresh interval must have positive value. ' \
      "Default refresh interval (#{DEFAULT_REFRESH_INTERVAL_MINUTES} minutes) was applied."
    })
    refresh_interval_minute = DEFAULT_REFRESH_INTERVAL_MINUTES
  end
  @refresh_interval_second = refresh_interval_minute * 60

  if session_duration_minute.nil?
    session_duration_minute = DEFAULT_SESSION_DURATION_MINUTES
  elsif session_duration_minute <= 0
    Logging::KameleoonLogger.warning(lambda {
      'Session duration must have positive value. ' \
      "Default session duration (#{DEFAULT_SESSION_DURATION_MINUTES} minutes) was applied."
    })
    session_duration_minute = DEFAULT_SESSION_DURATION_MINUTES
  end
  @session_duration_second = session_duration_minute * 60

  if default_timeout_millisecond.nil?
    @default_timeout_millisecond = DEFAULT_TIMEOUT_MILLISECONDS
  elsif default_timeout_millisecond <= 0
    Logging::KameleoonLogger.warning(lambda {
      'Default timeout must have positive value. ' \
      "Default timeout (#{DEFAULT_TIMEOUT_MILLISECONDS} ms) was applied."
    })
    @default_timeout_millisecond = DEFAULT_TIMEOUT_MILLISECONDS
  else
    @default_timeout_millisecond = default_timeout_millisecond
  end

  if tracking_interval_millisecond.nil?
    tracking_interval_millisecond = DEFAULT_TRACKING_INTERVAL_MILLISECONDS
  elsif tracking_interval_millisecond < MIN_TRACKING_INTERVAL_MILLISECONDS
    Logging::KameleoonLogger.warning(lambda {
      'Tracking interval must not be shorter than ' \
      "#{MIN_TRACKING_INTERVAL_MILLISECONDS} ms. Minimum possible interval was applied."
    })
    tracking_interval_millisecond = MIN_TRACKING_INTERVAL_MILLISECONDS
  elsif tracking_interval_millisecond > MAX_TRACKING_INTERVAL_MILLISECONDS
    Logging::KameleoonLogger.warning(lambda {
      'Tracking interval must not be longer than ' \
      "#{MAX_TRACKING_INTERVAL_MILLISECONDS} ms. Maximum possible interval was applied."
    })
    tracking_interval_millisecond = MAX_TRACKING_INTERVAL_MILLISECONDS
  end
  @tracking_interval_second = tracking_interval_millisecond / 1000.0

  @environment = environment

  if top_level_domain.nil?
    Logging::KameleoonLogger.warning(
      'Setting top level domain is strictly recommended, otherwise you may have problems when using subdomains.'
    )
  end
  @top_level_domain = Utils::Domain.validate_top_level_domain(top_level_domain)
end

Instance Attribute Details

#client_idObject (readonly)

Returns the value of attribute client_id.



15
16
17
# File 'lib/kameleoon/kameleoon_client_config.rb', line 15

def client_id
  @client_id
end

#client_secretObject (readonly)

Returns the value of attribute client_secret.



15
16
17
# File 'lib/kameleoon/kameleoon_client_config.rb', line 15

def client_secret
  @client_secret
end

#default_timeout_millisecondObject (readonly)

Returns the value of attribute default_timeout_millisecond.



15
16
17
# File 'lib/kameleoon/kameleoon_client_config.rb', line 15

def default_timeout_millisecond
  @default_timeout_millisecond
end

#environmentObject (readonly)

Returns the value of attribute environment.



15
16
17
# File 'lib/kameleoon/kameleoon_client_config.rb', line 15

def environment
  @environment
end

#refresh_interval_secondObject (readonly)

Returns the value of attribute refresh_interval_second.



15
16
17
# File 'lib/kameleoon/kameleoon_client_config.rb', line 15

def refresh_interval_second
  @refresh_interval_second
end

#session_duration_secondObject (readonly)

Returns the value of attribute session_duration_second.



15
16
17
# File 'lib/kameleoon/kameleoon_client_config.rb', line 15

def session_duration_second
  @session_duration_second
end

#top_level_domainObject (readonly)

Returns the value of attribute top_level_domain.



15
16
17
# File 'lib/kameleoon/kameleoon_client_config.rb', line 15

def top_level_domain
  @top_level_domain
end

#tracking_interval_secondObject (readonly)

Returns the value of attribute tracking_interval_second.



15
16
17
# File 'lib/kameleoon/kameleoon_client_config.rb', line 15

def tracking_interval_second
  @tracking_interval_second
end

#verbose_modeObject (readonly)

Returns the value of attribute verbose_mode.



15
16
17
# File 'lib/kameleoon/kameleoon_client_config.rb', line 15

def verbose_mode
  @verbose_mode
end

Class Method Details

.read_from_yaml(path) ⇒ Object



119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
# File 'lib/kameleoon/kameleoon_client_config.rb', line 119

def self.read_from_yaml(path)
  yaml = YAML.load_file(path) if File.exist?(path)
  if yaml.nil?
    Logging::KameleoonLogger.warning(-> { "Configuration file with path '#{path}' does not exist" })
    yaml = {}
  end
  KameleoonClientConfig.new(
    yaml['client_id'],
    yaml['client_secret'],
    refresh_interval_minute: yaml['refresh_interval_minute'],
    session_duration_minute: yaml['session_duration_minute'],
    default_timeout_millisecond: yaml['default_timeout_millisecond'],
    tracking_interval_millisecond: yaml['tracking_interval_millisecond'],
    environment: yaml['environment'],
    top_level_domain: yaml['top_level_domain'],
    verbose_mode: yaml['verbose_mode']
  )
end

Instance Method Details

#to_sObject



19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/kameleoon/kameleoon_client_config.rb', line 19

def to_s
  'KameleoonClientConfig{' \
    "client_id:'#{Utils::Strval.secret(@client_id)}'," \
    "client_secret:'#{Utils::Strval.secret(@client_secret)}'," \
    "refresh_interval_second:#{@refresh_interval_second}," \
    "session_duration_second:#{@session_duration_second}," \
    "environment:'#{@environment}'," \
    "default_timeout_millisecond:#{@default_timeout_millisecond}," \
    "top_level_domain:'#{@top_level_domain}'," \
    "verbose_mode:#{verbose_mode}" \
    '}'
end