diff options
Diffstat (limited to 'lib/xmlrpc/parser.rb')
-rw-r--r-- | lib/xmlrpc/parser.rb | 132 |
1 files changed, 66 insertions, 66 deletions
diff --git a/lib/xmlrpc/parser.rb b/lib/xmlrpc/parser.rb index 2cf0530c9f..d078de2f4b 100644 --- a/lib/xmlrpc/parser.rb +++ b/lib/xmlrpc/parser.rb @@ -1,6 +1,6 @@ # # Parser for XML-RPC call and response -# +# # Copyright (C) 2001, 2002, 2003 by Michael Neumann ([email protected]) # # $Id$ @@ -60,7 +60,7 @@ module XMLRPC @faultCode = faultCode @faultString = faultString end - + # returns a hash def to_h {"faultCode" => @faultCode, "faultString" => @faultString} @@ -77,7 +77,7 @@ module XMLRPC when "0" then false when "1" then true else - raise "RPC-value of type boolean is wrong" + raise "RPC-value of type boolean is wrong" end end @@ -122,7 +122,7 @@ module XMLRPC def self.struct(hash) # convert to marhalled object klass = hash["___class___"] - if klass.nil? or Config::ENABLE_MARSHALLING == false + if klass.nil? or Config::ENABLE_MARSHALLING == false hash else begin @@ -130,9 +130,9 @@ module XMLRPC klass.split("::").each {|const| mod = mod.const_get(const.strip)} obj = mod.allocate - + hash.delete "___class___" - hash.each {|key, value| + hash.each {|key, value| obj.instance_variable_set("@#{ key }", value) if key =~ /^([\w_][\w_0-9]*)$/ } obj @@ -143,11 +143,11 @@ module XMLRPC end def self.fault(hash) - if hash.kind_of? Hash and hash.size == 2 and - hash.has_key? "faultCode" and hash.has_key? "faultString" and + 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"]) + XMLRPC::FaultException.new(hash["faultCode"], hash["faultString"]) else raise "wrong fault-structure: #{hash.inspect}" end @@ -182,9 +182,9 @@ module XMLRPC # TODO: add nil? unless %w(i4 int boolean string double dateTime.iso8601 base64).include? node.nodeName - if node.nodeName == "value" + if node.nodeName == "value" if not node.childNodes.to_a.detect {|n| _nodeType(n) == :ELEMENT}.nil? - remove << nd if nd.nodeValue.strip == "" + remove << nd if nd.nodeValue.strip == "" end else remove << nd if nd.nodeValue.strip == "" @@ -194,7 +194,7 @@ module XMLRPC remove << nd else removeWhitespacesAndComments(nd) - end + end end remove.each { |i| node.removeChild(i) } @@ -203,13 +203,13 @@ module XMLRPC def nodeMustBe(node, name) cmp = case name - when Array + when Array name.include?(node.nodeName) when String name == node.nodeName else raise "error" - end + end if not cmp then raise "wrong xml-rpc (name)" @@ -233,7 +233,7 @@ module XMLRPC def assert(b) if not b then - raise "assert-fail" + raise "assert-fail" end end @@ -249,21 +249,21 @@ module XMLRPC raise "wrong xml-rpc (size)" end end - + def integer(node) #TODO: check string for float because to_i returnsa # 0 when wrong string - nodeMustBe(node, %w(i4 int)) + nodeMustBe(node, %w(i4 int)) hasOnlyOneChild(node) - + Convert.int(text(node.firstChild)) end def boolean(node) - nodeMustBe(node, "boolean") + nodeMustBe(node, "boolean") hasOnlyOneChild(node) - + Convert.boolean(text(node.firstChild)) end @@ -274,36 +274,36 @@ module XMLRPC end def string(node) - nodeMustBe(node, "string") + nodeMustBe(node, "string") text_zero_one(node) end def double(node) #TODO: check string for float because to_f returnsa # 0.0 when wrong string - nodeMustBe(node, "double") + nodeMustBe(node, "double") hasOnlyOneChild(node) - + Convert.double(text(node.firstChild)) end def dateTime(node) nodeMustBe(node, "dateTime.iso8601") hasOnlyOneChild(node) - + Convert.dateTime( text(node.firstChild) ) end def base64(node) nodeMustBe(node, "base64") #hasOnlyOneChild(node) - + Convert.base64(text_zero_one(node)) end def member(node) nodeMustBe(node, "member") - assert( node.childNodes.to_a.size == 2 ) + assert( node.childNodes.to_a.size == 2 ) [ name(node[0]), value(node[1]) ] end @@ -311,13 +311,13 @@ module XMLRPC def name(node) nodeMustBe(node, "name") #hasOnlyOneChild(node) - text_zero_one(node) + text_zero_one(node) end def array(node) nodeMustBe(node, "array") - hasOnlyOneChild(node, "data") - data(node.firstChild) + hasOnlyOneChild(node, "data") + data(node.firstChild) end def data(node) @@ -325,15 +325,15 @@ module XMLRPC node.childNodes.to_a.collect do |val| value(val) - end + end end def param(node) nodeMustBe(node, "param") hasOnlyOneChild(node, "value") - value(node.firstChild) + value(node.firstChild) end - + def methodResponse(node) nodeMustBe(node, "methodResponse") hasOnlyOneChild(node, %w(params fault)) @@ -341,7 +341,7 @@ module XMLRPC case child.nodeName when "params" - [ true, params(child,false) ] + [ true, params(child,false) ] when "fault" [ false, fault(child) ] else @@ -353,13 +353,13 @@ module XMLRPC def methodName(node) nodeMustBe(node, "methodName") hasOnlyOneChild(node) - text(node.firstChild) + text(node.firstChild) end def params(node, call=true) nodeMustBe(node, "params") - if call + if call node.childNodes.to_a.collect do |n| param(n) end @@ -372,7 +372,7 @@ module XMLRPC def fault(node) nodeMustBe(node, "fault") hasOnlyOneChild(node, "value") - f = value(node.firstChild) + f = value(node.firstChild) Convert.fault(f) end @@ -388,13 +388,13 @@ module XMLRPC end def struct(node) - nodeMustBe(node, "struct") + nodeMustBe(node, "struct") hash = {} node.childNodes.to_a.each do |me| - n, v = member(me) + n, v = member(me) hash[n] = v - end + end Convert.struct(hash) end @@ -403,9 +403,9 @@ module XMLRPC def value(node) nodeMustBe(node, "value") nodes = node.childNodes.to_a.size - if nodes == 0 + if nodes == 0 return "" - elsif nodes > 1 + elsif nodes > 1 raise "wrong xml-rpc (size)" end @@ -423,14 +423,14 @@ module XMLRPC when "dateTime.iso8601" then dateTime(child) when "base64" then base64(child) when "struct" then struct(child) - when "array" then array(child) - when "nil" + when "array" then array(child) + when "nil" if Config::ENABLE_NIL_PARSER v_nil(child) else raise "wrong/unknown XML-RPC type 'nil'" end - else + else raise "wrong/unknown XML-RPC type" end else @@ -441,7 +441,7 @@ module XMLRPC def methodCall(node) nodeMustBe(node, "methodCall") - assert( (1..2).include?( node.childNodes.to_a.size ) ) + assert( (1..2).include?( node.childNodes.to_a.size ) ) name = methodName(node[0]) if node.childNodes.to_a.size == 2 then @@ -461,7 +461,7 @@ module XMLRPC raise "No valid method response!" if parser.method_name != nil if parser.fault != nil # is a fault structure - [false, parser.fault] + [false, parser.fault] else # is a normal return value raise "Missing return value!" if parser.params.size == 0 @@ -508,7 +508,7 @@ module XMLRPC @value = nil when "nil" raise "wrong/unknown XML-RPC type 'nil'" unless Config::ENABLE_NIL_PARSER - @value = :nil + @value = :nil when "array" @val_stack << @values @values = [] @@ -517,7 +517,7 @@ module XMLRPC @name = [] @structs << @struct - @struct = {} + @struct = {} end end @@ -538,7 +538,7 @@ module XMLRPC @value = Convert.base64(@data) when "value" @value = @data if @value.nil? - @values << (@value == :nil ? nil : @value) + @values << (@value == :nil ? nil : @value) when "array" @value = @values @values = @val_stack.pop @@ -548,9 +548,9 @@ module XMLRPC @name = @names.pop @struct = @structs.pop when "name" - @name[0] = @data + @name[0] = @data when "member" - @struct[@name[0]] = @values.pop + @struct[@name[0]] = @values.pop when "param" @params << @values[0] @@ -560,7 +560,7 @@ module XMLRPC @fault = Convert.fault(@values[0]) when "methodName" - @method_name = @data + @method_name = @data end @data = nil @@ -592,7 +592,7 @@ module XMLRPC @parser_class = XMLRPCParser end - class XMLRPCParser + class XMLRPCParser include StreamParserMixin def parse(str) @@ -620,9 +620,9 @@ module XMLRPC def initialize require "xmltreebuilder" - # The new XMLParser library (0.6.2+) uses a slightly different DOM implementation. + # The new XMLParser library (0.6.2+) uses a slightly different DOM implementation. # The following code removes the differences between both versions. - if defined? XML::DOM::Builder + if defined? XML::DOM::Builder return if defined? XML::DOM::Node::DOCUMENT # code below has been already executed klass = XML::DOM::Node klass.const_set("DOCUMENT", klass::DOCUMENT_NODE) @@ -637,8 +637,8 @@ module XMLRPC def _nodeType(node) tp = node.nodeType if tp == XML::SimpleTree::Node::TEXT then :TEXT - elsif tp == XML::SimpleTree::Node::COMMENT then :COMMENT - elsif tp == XML::SimpleTree::Node::ELEMENT then :ELEMENT + elsif tp == XML::SimpleTree::Node::COMMENT then :COMMENT + elsif tp == XML::SimpleTree::Node::ELEMENT then :ELEMENT else :ELSE end end @@ -647,14 +647,14 @@ module XMLRPC def methodResponse_document(node) assert( node.nodeType == XML::SimpleTree::Node::DOCUMENT ) hasOnlyOneChild(node, "methodResponse") - + methodResponse(node.firstChild) end def methodCall_document(node) assert( node.nodeType == XML::SimpleTree::Node::DOCUMENT ) hasOnlyOneChild(node, "methodCall") - + methodCall(node.firstChild) end @@ -688,7 +688,7 @@ module XMLRPC end def createCleanedTree(str) - doc = ::NQXML::TreeParser.new(str).document.rootNode + doc = ::NQXML::TreeParser.new(str).document.rootNode removeWhitespacesAndComments(doc) doc end @@ -701,7 +701,7 @@ module XMLRPC @parser_class = StreamListener end - class StreamListener + class StreamListener include StreamParserMixin alias :tag_start :startElement @@ -716,7 +716,7 @@ module XMLRPC def parse(str) parser = REXML::Document.parse_stream(str, self) end - end + end end # --------------------------------------------------------------------------- @@ -751,7 +751,7 @@ module XMLRPC startElement(name) endElement(name) end - + def on_chardata(str) character(str) end @@ -784,7 +784,7 @@ module XMLRPC # valid_name? # valid_chardata? # valid_char? - # parse_error + # parse_error end end @@ -792,8 +792,8 @@ module XMLRPC XMLParser = XMLTreeParser NQXMLParser = NQXMLTreeParser - Classes = [XMLStreamParser, XMLTreeParser, - NQXMLStreamParser, NQXMLTreeParser, + Classes = [XMLStreamParser, XMLTreeParser, + NQXMLStreamParser, NQXMLTreeParser, REXMLStreamParser, XMLScanStreamParser] # yields an instance of each installed parser |