Helper class used to convert types.
# File tmp/rubies/ruby-2.3.8/lib/xmlrpc/parser.rb, line 136
def self.base64(str)
XMLRPC::Base64.decode(str)
end
Decodes the given str
using XMLRPC::Base64.decode
# File tmp/rubies/ruby-2.3.8/lib/xmlrpc/parser.rb, line 84
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
Converts a String to true
or false
Raises an exception if str
is not 0
or 1
# File tmp/rubies/ruby-2.3.8/lib/xmlrpc/parser.rb, line 105
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
Converts a the given str
to a dateTime.iso8601
formatted date.
Raises an exception if the String isn’t in dateTime.iso8601
format.
See also, XMLRPC::DateTime
# File tmp/rubies/ruby-2.3.8/lib/xmlrpc/parser.rb, line 96
def self.double(str)
str.to_f
end
Converts a String to a Float
See also String.to_f
# File tmp/rubies/ruby-2.3.8/lib/xmlrpc/parser.rb, line 175
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
Converts the given hash
to an XMLRPC::FaultException
object by passing the faultCode
and faultString
attributes of the Hash
to XMLRPC::FaultException.new
Raises an Exception
if the given hash
doesn’t meet the requirements. Those requirements being:
-
2 keys
-
'faultCode'
key is anInteger
-
'faultString'
key is a String
# File tmp/rubies/ruby-2.3.8/lib/xmlrpc/parser.rb, line 77
def self.int(str)
str.to_i
end
Converts a String to an Integer
See also String.to_i
# File tmp/rubies/ruby-2.3.8/lib/xmlrpc/parser.rb, line 143
def self.struct(hash)
# convert to marshalled 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
Converts the given hash
to a marshalled object.
Returns the given hash
if an exception occurs.