Class: JsonConfigResolver

Inherits:
ConfigResolver show all
Defined in:
lib/javonet-ruby-sdk/sdk/configuration/config_resolvers/json_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(obj, property) ⇒ Object



58
59
60
61
62
63
64
# File 'lib/javonet-ruby-sdk/sdk/configuration/config_resolvers/json_config_resolver.rb', line 58

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

._get_required_string(obj, property) ⇒ Object



50
51
52
53
54
55
56
# File 'lib/javonet-ruby-sdk/sdk/configuration/config_resolvers/json_config_resolver.rb', line 50

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

.add_configs(priority, json_object) ⇒ 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
# File 'lib/javonet-ruby-sdk/sdk/configuration/config_resolvers/json_config_resolver.rb', line 9

def self.add_configs(priority, json_object)
  if json_object.nil?
    raise "json_object cannot be nil"
  end
  if !json_object.is_a?(Hash)
    raise "Root JSON element must be a dict/object."
  end

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

  configs = json_object["configurations"]
  if !configs.is_a?(Hash)
    raise "JSON must contain 'configurations' object."
  end

  configs.each do |config_name, cfg|
    begin
      if !cfg.is_a?(Hash)
        raise "Configuration value must be an object/dict."
      end

      runtime_value = JsonConfigResolver._get_required_string(cfg, "runtime")
      runtime_name = ConfigResolver.try_parse_runtime(runtime_value)

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

      plugins = JsonConfigResolver._get_optional_string(cfg, "plugins")
      modules = JsonConfigResolver._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