wash_out 0.2.3 → 0.2.4

Sign up to get free protection for your applications and to get access to all the features.
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