Class: YamlConfigResolver

Inherits:
ConfigResolver show all
Defined in:
lib/javonet-ruby-sdk/sdk/configuration/config_resolvers/yaml_config_resolver.rb

Class Method Summary collapse

Methods inherited from ConfigResolver

build_connection_data, parse_tcp, try_parse_runtime

Class Method Details

._get_optional_string(mapping, key) ⇒ Object



69
70
71
72
73
74
75
# File 'lib/javonet-ruby-sdk/sdk/configuration/config_resolvers/yaml_config_resolver.rb', line 69

def self._get_optional_string(mapping, key)
  value = mapping[key]
  if value.is_a?(String)
    return value
  end
  ""
end

._get_required_string(mapping, key) ⇒ Object



61
62
63
64
65
66
67
# File 'lib/javonet-ruby-sdk/sdk/configuration/config_resolvers/yaml_config_resolver.rb', line 61

def self._get_required_string(mapping, key)
  value = mapping[key]
  if !value.is_a?(String) || value.strip.empty?
    raise "Missing or invalid '#{key}' property."
  end
  value.strip
end

.add_configs(priority, yaml_string) ⇒ Object



9
10
11
12
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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# File 'lib/javonet-ruby-sdk/sdk/configuration/config_resolvers/yaml_config_resolver.rb', line 9

def self.add_configs(priority, yaml_string)
  if yaml_string.nil? || yaml_string.strip.empty?
    raise "YAML string cannot be null or empty."
  end

  begin
    data = YAML.safe_load(yaml_string)
  rescue => ex
    raise "Failed to parse YAML: #{ex}"
  end

  if !data.is_a?(Hash)
    raise "Root YAML node must be a mapping."
  end

  license_key = data["licenseKey"]
  if license_key.is_a?(String)
    ActivationHelper.temporary_license_key = license_key.strip
  end

  configs = data["configurations"]
  if !configs.is_a?(Hash)
    raise "YAML must contain 'configurations' mapping."
  end

  configs.each do |config_name, cfg|
    if !config_name.is_a?(String) || config_name.strip.empty?
      puts "Skipping entry with empty config name."
      next
    end
    if !cfg.is_a?(Hash)
      puts "Skipping '#{config_name}': value is not a mapping."
      next
    end
    begin
      runtime_value = YamlConfigResolver._get_required_string(cfg, "runtime")
      runtime_name = ConfigResolver.try_parse_runtime(runtime_value)

      host = YamlConfigResolver._get_optional_string(cfg, "host")
      connection_data = ConfigResolver.build_connection_data(host)

      plugins = YamlConfigResolver._get_optional_string(cfg, "plugins")
      modules = YamlConfigResolver._get_optional_string(cfg, "modules")

      config = Config.new(runtime_name, connection_data, plugins, modules)
      ConfigsDictionary.add_config(config_name, priority, config)
    rescue => ex
      puts "Failed to add config '#{config_name}': #{ex}"
    end
  end
end