Class: Reactor::Cm::Bridge

Inherits:
Object
  • Object
show all
Defined in:
lib/reactor/cm/bridge.rb

Class Method Summary collapse

Class Method Details

.deserialize_login_data(serialized_property_list) ⇒ Object



31
32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/reactor/cm/bridge.rb', line 31

def self.(serialized_property_list)
  entry_delimiter = /;\r?\n/
  no_braces = serialized_property_list[1..(serialized_property_list.rindex(entry_delimiter) - 1)]
  property_list_lines = no_braces.split(entry_delimiter)
  property_list_lines.each_with_object(properties = {}) do |line, map|
    key, value = line.strip.scan(/^([^=]*) = (.*)$/).first
    if value[0..0] == '"'
      value = value[1..(value.length - 2)]
      value.gsub!(/\\(.)/, '\1')
    end
    map[key.to_sym] = value
  end
  properties
end

.login_for(sessionId) ⇒ Object

credit goes to Anton



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/reactor/cm/bridge.rb', line 5

def self.(sessionId)
  old_username = Reactor::Configuration.xml_access[:username]
  Reactor::Configuration.xml_access[:username] = "root"
  begin
    response = Reactor::Cm::XmlRequest.prepare do |xml|
      xml.tag!("licenseManager-logins")
    end.execute!
     = nil
    result = response.xpath("//licenseManager-logins/listitem")
    result = [result] unless result.is_a?(Array)
    result.each do ||
      properties = (.text)
      if properties[:sessionId] == sessionId && properties[:interface] == "X"
         = properties[:login]
        break
      end
    end
    
  rescue StandardError => e
    Rails.logger.error "Login to CM failed! #{e.class}: #{e.message}"
    nil
  ensure
    Reactor::Configuration.xml_access[:username] = old_username
  end
end