Class: Reactor::Cm::Bridge
- Inherits:
-
Object
- Object
- Reactor::Cm::Bridge
- Defined in:
- lib/reactor/cm/bridge.rb
Class Method Summary collapse
- .deserialize_login_data(serialized_property_list) ⇒ Object
-
.login_for(sessionId) ⇒ Object
credit goes to Anton.
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.deserialize_login_data(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.login_for(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! login = nil result = response.xpath("//licenseManager-logins/listitem") result = [result] unless result.is_a?(Array) result.each do |login_data_element| properties = deserialize_login_data(login_data_element.text) if properties[:sessionId] == sessionId && properties[:interface] == "X" login = properties[:login] break end end login 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 |