wash_out 0.2.3 → 0.2.4

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/README.md CHANGED
@@ -59,7 +59,7 @@ class ApiController < ApplicationController
59
59
  # is just like a normal controller with a special routing.
60
60
  before_filter :dump_parameters
61
61
  def dump_parameters
62
- Rails.logger.log(params.inspect)
62
+ Rails.logger.debug params.inspect
63
63
  end
64
64
  end
65
65
  ```
@@ -13,13 +13,11 @@ module WashOutHelper
13
13
  more = []
14
14
 
15
15
  if param.struct?
16
- return if param.value.blank?
17
-
18
- xml.complexType :name => param.name do
19
- xml.sequence do
20
- param.map.each do |key, value|
16
+ xml.tag! "xsd:complexType", :name => param.name do
17
+ xml.tag! "xsd:sequence" do
18
+ param.map.each do |value|
21
19
  more << value if value.struct?
22
- xml.element wsdl_occurence(value, :name => key, :type => value.namespaced_type)
20
+ xml.tag! "xsd:element", wsdl_occurence(value, :name => value.name, :type => value.namespaced_type)
23
21
  end
24
22
  end
25
23
  end
@@ -2,16 +2,15 @@ xml.instruct!
2
2
  xml.definitions 'xmlns:xsd' => 'http://www.w3.org/2001/XMLSchema',
3
3
  'xmlns:soap' => 'http://schemas.xmlsoap.org/wsdl/soap/',
4
4
  'xmlns:soapenc' => 'http://schemas.xmlsoap.org/soap/encoding/',
5
- 'xmlns:wsdl' => 'http://schemas.xmlsoap.org/wsdl/',
6
5
  'xmlns:typens' => @namespace,
7
6
  'targetNamespace' => @namespace,
8
7
  'xmlns' => 'http://schemas.xmlsoap.org/wsdl/' do
9
8
  xml.types do
10
- xml.tag! "xsd:schema", :xmlns => 'http://www.w3.org/2001/XMLSchema', :targetNamespace => @namespace
11
-
12
- @map.each do |operation, formats|
13
- formats[:in].each do |p|
14
- wsdl_type xml, p
9
+ xml.tag! "xsd:schema", :targetNamespace => @namespace do
10
+ @map.each do |operation, formats|
11
+ formats[:in].each do |p|
12
+ wsdl_type xml, p
13
+ end
15
14
  end
16
15
  end
17
16
  end
@@ -62,4 +61,4 @@ xml.definitions 'xmlns:xsd' => 'http://www.w3.org/2001/XMLSchema',
62
61
  xml.tag! "soap:address", :location => url_for(:action => '_action', :only_path => false)
63
62
  end
64
63
  end
65
- end
64
+ end
@@ -1,7 +1,7 @@
1
1
  PATH
2
- remote: /home/whitequark/wash_out
2
+ remote: /Users/lovchy/Sites/wash_out
3
3
  specs:
4
- wash_out (0.2.1)
4
+ wash_out (0.2.3)
5
5
  nori
6
6
 
7
7
  GEM
@@ -1,7 +1,7 @@
1
1
  PATH
2
- remote: /home/whitequark/wash_out
2
+ remote: /Users/lovchy/Sites/wash_out
3
3
  specs:
4
- wash_out (0.2.1)
4
+ wash_out (0.2.3)
5
5
  nori
6
6
 
7
7
  GEM
@@ -14,15 +14,21 @@ module WashOut
14
14
  soap_action = request.env['wash_out.soap_action']
15
15
  action_spec = self.class.soap_actions[soap_action]
16
16
 
17
+ strip = Nori.strip_namespaces?
18
+
19
+ Nori.strip_namespaces = true
17
20
  params = Nori.parse(request.body)
18
21
  xml_data = params[:envelope][:body][soap_action.underscore.to_sym]
22
+ Nori.strip_namespaces = strip
19
23
 
20
24
  @_params = HashWithIndifferentAccess.new
21
25
  (xml_data || {}).map do |opt, value|
22
- param = action_spec[:in].find { |param| param.name.underscore.to_sym == opt }
23
- raise SOAPError, "unknown parameter #{opt}" unless param
26
+ unless opt[0] == '@'
27
+ param = action_spec[:in].find { |param| param.name.underscore.to_sym == opt }
28
+ raise SOAPError, "unknown parameter #{opt}" unless param
24
29
 
25
- @_params[param.name] = param.load(value)
30
+ @_params[param.name] = param.load(value)
31
+ end
26
32
  end
27
33
  end
28
34
 
@@ -1,3 +1,3 @@
1
1
  module WashOut
2
- VERSION = "0.2.3"
2
+ VERSION = "0.2.4"
3
3
  end
data/lib/wash_out.rb CHANGED
@@ -17,4 +17,4 @@ end
17
17
  Mime::Type.register "application/soap+xml", :soap
18
18
  ActionController::Renderers.add :soap do |what, options|
19
19
  _render_soap(what, options)
20
- end
20
+ end
@@ -15,6 +15,36 @@ describe WashOut do
15
15
  }.should_not raise_exception
16
16
  end
17
17
 
18
+ it "should generate WSDL" do
19
+ mock_controller do
20
+ soap_action "answer", :args => [], :return => :int
21
+ def answer
22
+ render :soap => "42"
23
+ end
24
+
25
+ soap_action "getArea", :args => { :circle => { :center => { :x => :integer,
26
+ :y => :integer },
27
+ :radius => :double } },
28
+ :return => { :area => :double,
29
+ :distance_from_o => :double },
30
+ :to => :get_area
31
+ def get_area
32
+ circle = params[:circle]
33
+ render :soap => { :area => Math::PI * circle[:radius] ** 2,
34
+ :distance_from_o => Math.sqrt(circle[:center][:x] ** 2 + circle[:center][:y] ** 2) }
35
+ end
36
+ end
37
+
38
+ client = savon_instance
39
+ xml = Nori.parse client.wsdl.xml
40
+
41
+ # Savon underscores method names so we
42
+ # get back just what we have at controller
43
+ client.wsdl.soap_actions.should == [:answer, :get_area]
44
+
45
+ xml[:definitions][:binding][:operation].map{|e| e[:'@name']}.should == ['answer', 'getArea']
46
+ end
47
+
18
48
  it "should allow definition of a simple action" do
19
49
  lambda {
20
50
  mock_controller do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wash_out
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.3
4
+ version: 0.2.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,11 +10,11 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2011-12-20 00:00:00.000000000 Z
13
+ date: 2012-01-06 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: nori
17
- requirement: &73419490 !ruby/object:Gem::Requirement
17
+ requirement: &70257566070660 !ruby/object:Gem::Requirement
18
18
  none: false
19
19
  requirements:
20
20
  - - ! '>='
@@ -22,10 +22,10 @@ dependencies:
22
22
  version: '0'
23
23
  type: :runtime
24
24
  prerelease: false
25
- version_requirements: *73419490
25
+ version_requirements: *70257566070660
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: rspec-rails
28
- requirement: &73418980 !ruby/object:Gem::Requirement
28
+ requirement: &70257566069340 !ruby/object:Gem::Requirement
29
29
  none: false
30
30
  requirements:
31
31
  - - ! '>='
@@ -33,10 +33,10 @@ dependencies:
33
33
  version: '0'
34
34
  type: :development
35
35
  prerelease: false
36
- version_requirements: *73418980
36
+ version_requirements: *70257566069340
37
37
  - !ruby/object:Gem::Dependency
38
38
  name: appraisal
39
- requirement: &73418630 !ruby/object:Gem::Requirement
39
+ requirement: &70257566068200 !ruby/object:Gem::Requirement
40
40
  none: false
41
41
  requirements:
42
42
  - - ! '>='
@@ -44,10 +44,10 @@ dependencies:
44
44
  version: '0'
45
45
  type: :development
46
46
  prerelease: false
47
- version_requirements: *73418630
47
+ version_requirements: *70257566068200
48
48
  - !ruby/object:Gem::Dependency
49
49
  name: tzinfo
50
- requirement: &73417730 !ruby/object:Gem::Requirement
50
+ requirement: &70257566067180 !ruby/object:Gem::Requirement
51
51
  none: false
52
52
  requirements:
53
53
  - - ! '>='
@@ -55,10 +55,10 @@ dependencies:
55
55
  version: '0'
56
56
  type: :development
57
57
  prerelease: false
58
- version_requirements: *73417730
58
+ version_requirements: *70257566067180
59
59
  - !ruby/object:Gem::Dependency
60
60
  name: savon
61
- requirement: &73415050 !ruby/object:Gem::Requirement
61
+ requirement: &70257566085000 !ruby/object:Gem::Requirement
62
62
  none: false
63
63
  requirements:
64
64
  - - ! '>='
@@ -66,7 +66,7 @@ dependencies:
66
66
  version: '0'
67
67
  type: :development
68
68
  prerelease: false
69
- version_requirements: *73415050
69
+ version_requirements: *70257566085000
70
70
  description: Dead simple Rails 3 SOAP server library
71
71
  email: boris@roundlake.ru
72
72
  executables: []
@@ -134,18 +134,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
134
134
  - - ! '>='
135
135
  - !ruby/object:Gem::Version
136
136
  version: '0'
137
- segments:
138
- - 0
139
- hash: -441958353
140
137
  required_rubygems_version: !ruby/object:Gem::Requirement
141
138
  none: false
142
139
  requirements:
143
140
  - - ! '>='
144
141
  - !ruby/object:Gem::Version
145
142
  version: '0'
146
- segments:
147
- - 0
148
- hash: -441958353
149
143
  requirements: []
150
144
  rubyforge_project:
151
145
  rubygems_version: 1.8.10