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
|
# File 'lib/rapuncel/core_ext/object.rb', line 12
def self.from_xml_rpc xml_node
if xml_node.is_a? String
xml_node = Nokogiri::XML.parse(xml_node).root
end
return nil if xml_node.nil?
case xml_node.name
when 'i4', 'int'
Integer.from_xml_rpc xml_node
when 'array'
Array.from_xml_rpc xml_node
when 'struct'
Hash.from_xml_rpc xml_node
when 'double'
Float.from_xml_rpc xml_node
when 'boolean'
Rapuncel::Boolean.from_xml_rpc xml_node
when 'string'
String.from_xml_rpc xml_node
when 'dateTime.iso8601'
Time.from_xml_rpc xml_node
when 'base64'
raise 'Now its time to implement Base64'
else
raise "What is this? I didn't know #{xml_node.name} was part of the XMLRPC specification? Anyway, the value was: #{xml_node.text.strip}"
end
end
|