smacks-apricoteatsgorilla 0.5.1 → 0.5.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/VERSION +1 -1
- data/apricoteatsgorilla.gemspec +2 -2
- data/lib/apricoteatsgorilla/apricoteatsgorilla.rb +30 -10
- data/lib/apricoteatsgorilla/xml_node.rb +2 -2
- metadata +2 -2
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.5.
|
1
|
+
0.5.2
|
data/apricoteatsgorilla.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{apricoteatsgorilla}
|
8
|
-
s.version = "0.5.
|
8
|
+
s.version = "0.5.2"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Daniel Harrington"]
|
12
|
-
s.date = %q{2009-08-
|
12
|
+
s.date = %q{2009-08-30}
|
13
13
|
s.description = %q{SOAP communication helper.}
|
14
14
|
s.email = %q{me@d-harrington.com}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -22,7 +22,8 @@ class ApricotEatsGorilla
|
|
22
22
|
# Flag to disable conversion of Hash keys to Symbols.
|
23
23
|
attr_accessor :disable_hash_keys_to_symbols
|
24
24
|
|
25
|
-
# Hash of namespaces and XML nodes to apply these
|
25
|
+
# Hash of namespaces (keys) and XML nodes (values) to apply these
|
26
|
+
# namespaces to.
|
26
27
|
attr_accessor :nodes_to_namespace
|
27
28
|
|
28
29
|
# Shortcut method for translating between XML Strings and Ruby Hashes.
|
@@ -39,7 +40,8 @@ class ApricotEatsGorilla
|
|
39
40
|
end
|
40
41
|
end
|
41
42
|
|
42
|
-
# Yields this class
|
43
|
+
# Yields this class to a given +block+ for wrapping the setup of multiple
|
44
|
+
# flags at once.
|
43
45
|
def setup
|
44
46
|
yield self if block_given?
|
45
47
|
end
|
@@ -50,9 +52,10 @@ class ApricotEatsGorilla
|
|
50
52
|
# +root_node+ parameter for defining a custom root node to start parsing
|
51
53
|
# at using an XPath-Expression (Hpricot search).
|
52
54
|
#
|
53
|
-
# Notice that
|
55
|
+
# Notice that both namespaces and attributes get removed and the root node
|
56
|
+
# itself won't be included in the Hash.
|
54
57
|
#
|
55
|
-
# ====
|
58
|
+
# ==== Examples
|
56
59
|
#
|
57
60
|
# xml = '<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
|
58
61
|
# <soap:Body>
|
@@ -66,13 +69,16 @@ class ApricotEatsGorilla
|
|
66
69
|
# </soap:Body>
|
67
70
|
# </soap:Envelope>'
|
68
71
|
#
|
72
|
+
# ApricotEatsGorilla.xml_to_hash(xml)
|
73
|
+
# # => { :body => { :authenticate_response => { :return => { :apricot => { :eats => "Gorilla" } } } } }
|
74
|
+
#
|
69
75
|
# ApricotEatsGorilla.xml_to_hash(xml, "//return")
|
70
76
|
# # => { :apricot => { :eats => "Gorilla" } }
|
71
77
|
def xml_to_hash(xml, root_node = nil)
|
72
78
|
doc = Hpricot.XML remove_whitespace(xml)
|
73
79
|
root = root_node ? doc.search(root_node) : doc.root
|
74
80
|
|
75
|
-
return nil if root.nil?
|
81
|
+
return nil if root.nil? || (root.respond_to?(:size) && root.size == 0)
|
76
82
|
if !root.respond_to? :each
|
77
83
|
xml_node_to_hash(root)
|
78
84
|
elsif root.size == 1
|
@@ -84,20 +90,26 @@ class ApricotEatsGorilla
|
|
84
90
|
|
85
91
|
# Translates a given Ruby +hash+ into an XML String.
|
86
92
|
#
|
87
|
-
# ====
|
93
|
+
# ==== Examples
|
88
94
|
#
|
89
95
|
# hash = { :apricot => { :eats => "Gorilla" } }
|
90
|
-
#
|
91
96
|
# ApricotEatsGorilla.hash_to_xml(hash)
|
97
|
+
#
|
92
98
|
# # => "<apricot><eats>Gorilla</eats></apricot>"
|
99
|
+
#
|
100
|
+
# hash = { :apricot => { :eats => ["Gorillas", "Snakes"] } }
|
101
|
+
# ApricotEatsGorilla.hash_to_xml(hash)
|
102
|
+
#
|
103
|
+
# # => "<apricot><eats>Gorillas</eats><eats>Snakes</eats></apricot>"
|
93
104
|
def hash_to_xml(hash)
|
94
105
|
nested_data_to_xml(hash.keys.first, hash.values.first)
|
95
106
|
end
|
96
107
|
|
97
|
-
# Builds a SOAP request envelope and includes the content
|
98
|
-
# +block+ into the envelope body. Accepts a Hash of +namespaces+
|
108
|
+
# Builds a SOAP request envelope and includes the content of a given
|
109
|
+
# +block+ into the envelope body. Accepts a Hash of additional +namespaces+
|
110
|
+
# to set.
|
99
111
|
#
|
100
|
-
# ====
|
112
|
+
# ==== Examples
|
101
113
|
#
|
102
114
|
# ApricotEatsGorilla.soap_envelope do
|
103
115
|
# "<apricot><eats>Gorilla</eats></apricot>"
|
@@ -108,6 +120,14 @@ class ApricotEatsGorilla
|
|
108
120
|
# # => <apricot><eats>Gorilla</eats></apricot>
|
109
121
|
# # => </env:Body>
|
110
122
|
# # => </env:Envelope>'
|
123
|
+
#
|
124
|
+
# ApricotEatsGorilla.soap_envelope(:wsdl => "http://example.com") { "pureText" }
|
125
|
+
#
|
126
|
+
# # => '<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsdl="http://example.com">
|
127
|
+
# # => <env:Body>
|
128
|
+
# # => pureText
|
129
|
+
# # => </env:Body>
|
130
|
+
# # => </env:Envelope>'
|
111
131
|
def soap_envelope(namespaces = {})
|
112
132
|
namespaces[:env] = "http://schemas.xmlsoap.org/soap/envelope/"
|
113
133
|
|
@@ -1,13 +1,13 @@
|
|
1
1
|
# == XMLNode
|
2
2
|
#
|
3
3
|
# Representation of an XML node. Inherits from String and includes some
|
4
|
-
# useful methods for namespaces, attributes,
|
4
|
+
# useful XML-specific methods for namespaces, attributes, node content etc.
|
5
5
|
class XMLNode < String
|
6
6
|
|
7
7
|
# Hash of attributes.
|
8
8
|
attr_writer :attributes
|
9
9
|
|
10
|
-
#
|
10
|
+
# Node body content.
|
11
11
|
attr_writer :body
|
12
12
|
|
13
13
|
# Strips the namespace from this node.
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: smacks-apricoteatsgorilla
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Daniel Harrington
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-08-
|
12
|
+
date: 2009-08-30 00:00:00 -07:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|