Class: ConnectionStringConfigResolver

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

Class Method Summary collapse

Methods inherited from ConfigResolver

build_connection_data, parse_tcp, try_parse_runtime

Class Method Details

._parse_key_values(line) ⇒ Object



71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
# File 'lib/javonet-ruby-sdk/sdk/configuration/config_resolvers/connection_string_config_resolver.rb', line 71

def self._parse_key_values(line)
  result = {}
  segments = line.split(";").map(&:strip).reject(&:empty?)
  segments.each do |segment|
    eq = segment.index("=")
    if !eq || eq <= 0 || eq == segment.length - 1
      puts "Ignoring malformed token '#{segment}' in line: #{line}"
      next
    end
    key = segment[0...eq].strip.downcase
    value = segment[eq + 1..-1].strip
    if !key.empty?
      result[key] = value
    end
  end
  result
end

._set_license_key(line) ⇒ Object



51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
# File 'lib/javonet-ruby-sdk/sdk/configuration/config_resolvers/connection_string_config_resolver.rb', line 51

def self._set_license_key(line)
  eq = line.index("=")
  if eq && eq > 0 && eq < line.length - 1
    value_portion = line[eq + 1..-1].strip
    semicolon = value_portion.index(";")
    if semicolon && semicolon >= 0
      value_portion = value_portion[0...semicolon].strip
    end
    hash_idx = value_portion.index("#")
    if hash_idx && hash_idx >= 0
      value_portion = value_portion[0...hash_idx].strip
    end
    slashes = value_portion.index("//")
    if slashes && slashes >= 0
      value_portion = value_portion[0...slashes].strip
    end
    ActivationHelper.temporary_license_key = value_portion
  end
end

.add_configs(priority, connection_string_source) ⇒ Object



8
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
# File 'lib/javonet-ruby-sdk/sdk/configuration/config_resolvers/connection_string_config_resolver.rb', line 8

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

  normalized = connection_string_source.gsub("\r\n", "\n").gsub("\r", "\n")
  lines = normalized.split("\n").map(&:strip).reject(&:empty?)

  lines.each do |line|
    if line.start_with?("#") || line.start_with?("//")
      next
    end
    if line.downcase.start_with?("licensekey")
      ConnectionStringConfigResolver._set_license_key(line)
      next
    end
    begin
      key_values = ConnectionStringConfigResolver._parse_key_values(line)
      config_name = key_values["name"]
      runtime_value = key_values["runtime"]

      if config_name.nil? || config_name.strip.empty?
        raise "Missing or empty config name."
      end
      if runtime_value.nil? || runtime_value.strip.empty?
        raise "Missing or empty runtime."
      end

      runtime_name = ConfigResolver.try_parse_runtime(runtime_value)
      host_value = key_values["host"]
      connection_data = ConfigResolver.build_connection_data(host_value)
      plugins = key_values["plugins"] || ""
      modules = key_values["modules"] || ""

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