Module: XMLRPC::Convert

Module | XMLRPC::Convert
In: | xmlrpc/parser.rb

### Methods

base64 boolean dateTime double fault int struct

### Public Class methods

base64(str)

[Source]

    # File xmlrpc/parser.rb, line 118
        def self.base64(str)
          XMLRPC::Base64.decode(str)
        end

boolean(str)

[Source]

    # File xmlrpc/parser.rb, line 75
        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)

[Source]

    # File xmlrpc/parser.rb, line 88
        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.reverse) + 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.reverse) + 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)

[Source]

    # File xmlrpc/parser.rb, line 84
        def self.double(str)
          str.to_f
        end

fault(hash)

[Source]

    # File xmlrpc/parser.rb, line 145
        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)

[Source]

    # File xmlrpc/parser.rb, line 71
        def self.int(str)
          str.to_i
        end

struct(hash)

[Source]

    # File xmlrpc/parser.rb, line 122
        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 =~ /^([\w_][\w_0-9]*)$/
              }
              obj
            rescue
              hash
            end
          end
        end

[Validate]