Class: Hypertube::Sdk::Configuration::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



28
29
30
31
32
33
34
35
# File 'lib/hypertube-ruby-sdk/sdk/configuration/config_source_resolver.rb', line 28

def self._get_config_source_as_string(config_source)
  raise 'Hypertube::Sdk::Configuration::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



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

def self._parse_configs_and_add_to_collection(priority, config_string)
  # Try JSON
  begin
    json_object = JSON.parse(config_string)
    Hypertube::Sdk::Configuration::ConfigResolvers::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
    Hypertube::Sdk::Configuration::ConfigResolvers::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
    Hypertube::Sdk::Configuration::ConfigResolvers::ConnectionStringConfigResolver.add_configs(priority, config_string)
    return
  rescue StandardError => e
    # Silently continue
  end

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

.add_configs(priority, config_source) ⇒ Object



13
14
15
16
17
# File 'lib/hypertube-ruby-sdk/sdk/configuration/config_source_resolver.rb', line 13

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

.clear_configsObject



24
25
26
# File 'lib/hypertube-ruby-sdk/sdk/configuration/config_source_resolver.rb', line 24

def self.clear_configs
  Hypertube::Sdk::Configuration::ConfigsDictionary.clear_configs
end

.get_config(config_name) ⇒ Object



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

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