Module: XMLRPC::Convert
- Defined in:
- lib/xmlrpc/parser.rb
Class Method Summary collapse
- .base64(str) ⇒ Object
- .boolean(str) ⇒ Object
- .dateTime(str) ⇒ Object
- .double(str) ⇒ Object
- .fault(hash) ⇒ Object
- .int(str) ⇒ Object
- .struct(hash) ⇒ Object
Class Method Details
.base64(str) ⇒ Object
117 118 119 |
# File 'lib/xmlrpc/parser.rb', line 117 def self.base64(str) XMLRPC::Base64.decode(str) end |
.boolean(str) ⇒ Object
74 75 76 77 78 79 80 81 |
# File 'lib/xmlrpc/parser.rb', line 74 def self.boolean(str) case str when "0" then false when "1" then true else raise "RPC-value of type boolean is wrong" end end |
.dateTime(str) ⇒ Object
87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 |
# File 'lib/xmlrpc/parser.rb', line 87 def self.dateTime(str) case str when /^(-?\d\d\d\d)-?(\d\d)-?(\d\d)T(\d\d):(\d\d):(\d\d)(?:Z|([+-])(\d\d):?(\d\d))?$/ a = [$1, $2, $3, $4, $5, $6].collect{|i| i.to_i} if $7 ofs = $8.to_i*3600 + $9.to_i*60 ofs = -ofs if $7=='+' utc = Time.utc(*a) + ofs a = [ utc.year, utc.month, utc.day, utc.hour, utc.min, utc.sec ] end XMLRPC::DateTime.new(*a) when /^(-?\d\d)-?(\d\d)-?(\d\d)T(\d\d):(\d\d):(\d\d)(Z|([+-]\d\d):(\d\d))?$/ a = [$1, $2, $3, $4, $5, $6].collect{|i| i.to_i} if a[0] < 70 a[0] += 2000 else a[0] += 1900 end if $7 ofs = $8.to_i*3600 + $9.to_i*60 ofs = -ofs if $7=='+' utc = Time.utc(*a) + ofs a = [ utc.year, utc.month, utc.day, utc.hour, utc.min, utc.sec ] end XMLRPC::DateTime.new(*a) else raise "wrong dateTime.iso8601 format " + str end end |
.double(str) ⇒ Object
83 84 85 |
# File 'lib/xmlrpc/parser.rb', line 83 def self.double(str) str.to_f end |
.fault(hash) ⇒ Object
144 145 146 147 148 149 150 151 152 153 |
# File 'lib/xmlrpc/parser.rb', line 144 def self.fault(hash) if hash.kind_of? Hash and hash.size == 2 and hash.has_key? "faultCode" and hash.has_key? "faultString" and hash["faultCode"].kind_of? Integer and hash["faultString"].kind_of? String XMLRPC::FaultException.new(hash["faultCode"], hash["faultString"]) else raise "wrong fault-structure: #{hash.inspect}" end end |
.int(str) ⇒ Object
70 71 72 |
# File 'lib/xmlrpc/parser.rb', line 70 def self.int(str) str.to_i end |
.struct(hash) ⇒ Object
121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 |
# File 'lib/xmlrpc/parser.rb', line 121 def self.struct(hash) # convert to marhalled object klass = hash["___class___"] if klass.nil? or Config::ENABLE_MARSHALLING == false hash else begin mod = Module klass.split("::").each {|const| mod = mod.const_get(const.strip)} obj = mod.allocate hash.delete "___class___" hash.each {|key, value| obj.instance_variable_set("@#{ key }", value) if key =~ /^([a-zA-Z_]\w*)$/ } obj rescue hash end end end |