summaryrefslogtreecommitdiff
path: root/lib/xmlrpc/parser.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/xmlrpc/parser.rb')
-rw-r--r--lib/xmlrpc/parser.rb132
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 (mneumann@ntecs.de)
#
# $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