savon 0.8.6 → 0.9.0

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.
@@ -1,3 +1,45 @@
1
+ ## 0.9.0 (2011-04-05)
2
+
3
+ * Feature: issues [#158](https://github.com/rubiii/savon/issues/158),
4
+ [#169](https://github.com/rubiii/savon/issues/169) and [#172](https://github.com/rubiii/savon/issues/172)
5
+ configurable "Hash key Symbol to lowerCamelCase" conversion by using the latest version of
6
+ [Gyoku](http://rubygems.org/gems/gyoku).
7
+
8
+ Gyoku.convert_symbols_to(:camelcase)
9
+ Gyoku.xml(:first_name => "Mac") # => "<FirstName></Firstname>"
10
+
11
+ You can even define your own conversion formular.
12
+
13
+ Gyoku.convert_symbols_to { |key| key.upcase }
14
+ Gyoku.xml(:first_name => "Mac") # => "<FIRST_NAME></FIRST_NAME>"
15
+
16
+ This should also work for the SOAP input tag and SOAPAction header. So if you had to use a String for
17
+ the SOAP action to call because your services uses CamelCase instead of lowerCamelCase, you can now
18
+ change the default and use Symbols instead.
19
+
20
+ Gyoku.convert_symbols_to(:camelcase)
21
+
22
+ # pre Gyoku 0.4.0
23
+ client.request(:get_user) # => "<getUser/>"
24
+ client.request("GetUser") # => "<GetUser/>"
25
+
26
+ # post Gyoku 0.4.0
27
+ client.request(:get_user) # => "<GetUser/>"
28
+
29
+ * Improvement: issues [#170](https://github.com/rubiii/savon/issues/170) and
30
+ [#173](https://github.com/rubiii/savon/issues/173) Savon no longer rescues exceptions raised by
31
+ `Crack::XML.parse`. If Crack complains about your WSDL document, you should take control and
32
+ solve the problem instead of getting no response.
33
+
34
+ * Improvement: issue [#172](https://github.com/rubiii/savon/issues/172) support for global env_namespace.
35
+
36
+ Savon.configure do |config|
37
+ config.env_namespace = :soapenv # changes the default :env namespace
38
+ end
39
+
40
+ * Fix: [issue #163](https://github.com/rubiii/savon/issues/163) "Savon 0.8.6 not playing nicely
41
+ with Httpi 0.9.0". Updating HTTPI to v0.9.1 should solve this problem.
42
+
1
43
  ## 0.8.6 (2011-02-15)
2
44
 
3
45
  * Fix for issues [issue #147](https://github.com/rubiii/savon/issues/147) and [#151](https://github.com/rubiii/savon/issues/151)
data/README.md CHANGED
@@ -3,7 +3,7 @@ Savon
3
3
 
4
4
  Heavy metal Ruby SOAP client
5
5
 
6
- [Guide](http://rubiii.github.com/savon) | [Rubydoc](http://rubydoc.info/gems/savon) | [Google Group](http://groups.google.com/group/savon-soap) | [Wishlist](http://savon.uservoice.com) | [Bugs](http://github.com/rubiii/savon/issues)
6
+ [Official documentation](http://savonrb.com) | [RDoc](http://rubydoc.info/gems/savon) | [Google Group](http://groups.google.com/group/savon-soap)
7
7
 
8
8
  Installation
9
9
  ------------
@@ -34,4 +34,4 @@ Basic workflow
34
34
  Excited to learn more?
35
35
  ----------------------
36
36
 
37
- Then you might want to go ahead and read the [Savon Guide](http://rubiii.github.com/savon).
37
+ Then you might want to [go ahead and read the official documentation](http://savonrb.com).
@@ -118,14 +118,14 @@ module Savon
118
118
  # Expects an +input+ and sets the +SOAPAction+ HTTP headers.
119
119
  def set_soap_action(input)
120
120
  soap_action = wsdl.soap_action input.to_sym
121
- soap_action ||= input.kind_of?(String) ? input : input.to_s.lower_camelcase
121
+ soap_action ||= Gyoku::XMLKey.create(input).to_sym
122
122
  http.headers["SOAPAction"] = %{"#{soap_action}"}
123
123
  end
124
124
 
125
125
  # Expects a +namespace+, +input+ and +attributes+ and sets the SOAP input.
126
126
  def set_soap_input(namespace, input, attributes)
127
127
  new_input = wsdl.soap_input input.to_sym
128
- new_input ||= input.kind_of?(String) ? input.to_sym : input.to_s.lower_camelcase.to_sym
128
+ new_input ||= Gyoku::XMLKey.create(input).to_sym
129
129
  soap.input = [namespace, new_input, attributes].compact
130
130
  end
131
131
 
@@ -61,6 +61,22 @@ module Savon
61
61
  # Sets whether to strip namespaces in a SOAP response Hash.
62
62
  attr_writer :strip_namespaces
63
63
 
64
+ # Returns the current action_converter
65
+ attr_reader :converter
66
+
67
+ # Sets both action_converter and input_converter, converter should be a proc.
68
+ def converter=(converter)
69
+ @converter = converter
70
+ end
71
+
72
+ # Returns the global env_namespace.
73
+ attr_reader :env_namespace
74
+
75
+ # Sets the global env_namespace.
76
+ def env_namespace=(namespace)
77
+ @env_namespace = namespace
78
+ end
79
+
64
80
  # Reset to default configuration.
65
81
  def reset_config!
66
82
  self.log = true
@@ -28,7 +28,7 @@ module Savon
28
28
 
29
29
  # Converts a given SOAP response +xml+ to a Hash.
30
30
  def self.parse(xml)
31
- Crack::XML.parse(xml) rescue {}
31
+ Crack::XML.parse(xml)
32
32
  end
33
33
 
34
34
  # Expects a SOAP response XML or Hash, traverses it for a given +path+ of Hash keys
@@ -80,9 +80,9 @@ module Savon
80
80
  # Sets the SOAP envelope namespace.
81
81
  attr_writer :env_namespace
82
82
 
83
- # Returns the SOAP envelope namespace. Defaults to :env.
83
+ # Returns the SOAP envelope namespace. Uses the global namespace if set Defaults to :env.
84
84
  def env_namespace
85
- @env_namespace ||= :env
85
+ @env_namespace ||= Savon.env_namespace.nil? ? :env : Savon.env_namespace
86
86
  end
87
87
 
88
88
  # Sets the +namespaces+ Hash.
@@ -181,3 +181,4 @@ module Savon
181
181
  end
182
182
  end
183
183
  end
184
+
@@ -1,5 +1,5 @@
1
1
  module Savon
2
2
 
3
- Version = "0.8.6"
3
+ Version = "0.9.0"
4
4
 
5
5
  end
@@ -8,7 +8,7 @@ Gem::Specification.new do |s|
8
8
  s.version = Savon::Version
9
9
  s.authors = "Daniel Harrington"
10
10
  s.email = "me@rubiii.com"
11
- s.homepage = "http://github.com/rubiii/#{s.name}"
11
+ s.homepage = "http://savonrb.com"
12
12
  s.summary = "Heavy metal Ruby SOAP client"
13
13
  s.description = "Savon is the heavy metal Ruby SOAP client."
14
14
 
@@ -17,7 +17,7 @@ Gem::Specification.new do |s|
17
17
  s.add_dependency "builder", ">= 2.1.2"
18
18
  s.add_dependency "crack", "~> 0.1.8"
19
19
  s.add_dependency "httpi", ">= 0.7.8"
20
- s.add_dependency "gyoku", ">= 0.3.0"
20
+ s.add_dependency "gyoku", ">= 0.4.0"
21
21
 
22
22
  s.add_development_dependency "rspec", "~> 2.4.0"
23
23
  s.add_development_dependency "autotest"
@@ -127,6 +127,11 @@ describe Savon::SOAP::XML do
127
127
  xml.env_namespace = :soapenv
128
128
  xml.env_namespace.should == :soapenv
129
129
  end
130
+
131
+ it "should use the global env_namespace if set as the SOAP envelope namespace" do
132
+ Savon.stubs(:env_namespace).returns(:soapenv)
133
+ xml.env_namespace.should == :soapenv
134
+ end
130
135
  end
131
136
 
132
137
  describe "#namespaces" do
@@ -223,7 +228,7 @@ describe Savon::SOAP::XML do
223
228
  :token => "secret",
224
229
  :attributes! => { :token => { :xmlns => "http://example.com" } }
225
230
  }
226
-
231
+
227
232
  xml.to_xml.should include('<env:Header><token xmlns="http://example.com">secret</token></env:Header>')
228
233
  end
229
234
  end
@@ -333,3 +338,4 @@ describe Savon::SOAP::XML do
333
338
  end
334
339
 
335
340
  end
341
+
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: savon
3
3
  version: !ruby/object:Gem::Version
4
- hash: 51
4
+ hash: 59
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
- - 8
9
- - 6
10
- version: 0.8.6
8
+ - 9
9
+ - 0
10
+ version: 0.9.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Daniel Harrington
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-02-15 00:00:00 +01:00
18
+ date: 2011-04-05 00:00:00 +02:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -74,12 +74,12 @@ dependencies:
74
74
  requirements:
75
75
  - - ">="
76
76
  - !ruby/object:Gem::Version
77
- hash: 19
77
+ hash: 15
78
78
  segments:
79
79
  - 0
80
- - 3
80
+ - 4
81
81
  - 0
82
- version: 0.3.0
82
+ version: 0.4.0
83
83
  type: :runtime
84
84
  version_requirements: *id004
85
85
  - !ruby/object:Gem::Dependency
@@ -214,7 +214,7 @@ files:
214
214
  - spec/support/endpoint.rb
215
215
  - spec/support/fixture.rb
216
216
  has_rdoc: true
217
- homepage: http://github.com/rubiii/savon
217
+ homepage: http://savonrb.com
218
218
  licenses: []
219
219
 
220
220
  post_install_message: