Class: ConfigSourceResolver

Inherits:
Object
  • Object
show all
Defined in:
lib/hypertube-ruby-sdk/sdk/configuration/config_source_resolver.rb

Class Method Summary collapse

Class Method Details

._get_config_source_as_string(config_source) ⇒ Object



25
26
27
28
29
30
31
32
# File 'lib/hypertube-ruby-sdk/sdk/configuration/config_source_resolver.rb', line 25

def self._get_config_source_as_string(config_source)
  raise 'Config source cannot be null or whitespace.' if config_source.nil? || config_source.strip.empty?

  env_value = ENV[config_source]
  config_source = env_value if env_value && !env_value.strip.empty?
  config_source = File.read(config_source, encoding: 'utf-8') if File.file?(config_source)
  config_source.strip
end

._parse_configs_and_add_to_collection(priority, config_string) ⇒ Object



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
# File 'lib/hypertube-ruby-sdk/sdk/configuration/config_source_resolver.rb', line 34

def self._parse_configs_and_add_to_collection(priority, config_string)
  # Try JSON
  begin
    json_object = JSON.parse(config_string)
    JsonConfigResolver.add_configs(priority, json_object)
    return
  rescue StandardError => e
    puts "Failed to parse config source as JSON: #{e}" unless e.is_a?(JSON::ParserError)
  end

  # Try YAML
  begin
    YamlConfigResolver.add_configs(priority, config_string)
    return
  rescue StandardError => e
    puts "Failed to parse config source as YAML: #{e}" unless e.is_a?(ArgumentError)
  end

  # Try connection string
  begin
    ConnectionStringConfigResolver.add_configs(priority, config_string)
    return
  rescue StandardError => e
    # Silently continue
  end

  raise "Config source is not valid JSON, YAML, or connection string format:\n#{config_string}"
end

.add_configs(priority, config_source) ⇒ Object



10
11
12
13
14
# File 'lib/hypertube-ruby-sdk/sdk/configuration/config_source_resolver.rb', line 10

def self.add_configs(priority, config_source)
  puts "Adding config from source: #{config_source} with priority '#{ConfigPriority.to_s(priority)}'"
  config_string = ConfigSourceResolver._get_config_source_as_string(config_source)
  ConfigSourceResolver._parse_configs_and_add_to_collection(priority, config_string)
end

.clear_configsObject



21
22
23
# File 'lib/hypertube-ruby-sdk/sdk/configuration/config_source_resolver.rb', line 21

def self.clear_configs
  ConfigsDictionary.clear_configs
end

.get_config(config_name) ⇒ Object



16
17
18
19
# File 'lib/hypertube-ruby-sdk/sdk/configuration/config_source_resolver.rb', line 16

def self.get_config(config_name)
  puts "Retrieving config #{config_name}"
  ConfigsDictionary.get_config(config_name)
end