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 +1 -1
- data/app/helpers/wash_out_helper.rb +4 -6
- data/app/views/wash_with_soap/wsdl.builder +6 -7
- data/gemfiles/rails-3.0.11.gemfile.lock +2 -2
- data/gemfiles/rails-3.1.3.gemfile.lock +2 -2
- data/lib/wash_out/dispatcher.rb +9 -3
- data/lib/wash_out/version.rb +1 -1
- data/lib/wash_out.rb +1 -1
- data/spec/wash_out_spec.rb +30 -0
- metadata +12 -18
data/README.md
CHANGED
@@ -13,13 +13,11 @@ module WashOutHelper
|
|
13
13
|
more = []
|
14
14
|
|
15
15
|
if param.struct?
|
16
|
-
|
17
|
-
|
18
|
-
|
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 =>
|
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", :
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
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
|
data/lib/wash_out/dispatcher.rb
CHANGED
@@ -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
|
-
|
23
|
-
|
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
|
-
|
30
|
+
@_params[param.name] = param.load(value)
|
31
|
+
end
|
26
32
|
end
|
27
33
|
end
|
28
34
|
|
data/lib/wash_out/version.rb
CHANGED
data/lib/wash_out.rb
CHANGED
data/spec/wash_out_spec.rb
CHANGED
@@ -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.
|
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:
|
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: &
|
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: *
|
25
|
+
version_requirements: *70257566070660
|
26
26
|
- !ruby/object:Gem::Dependency
|
27
27
|
name: rspec-rails
|
28
|
-
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: *
|
36
|
+
version_requirements: *70257566069340
|
37
37
|
- !ruby/object:Gem::Dependency
|
38
38
|
name: appraisal
|
39
|
-
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: *
|
47
|
+
version_requirements: *70257566068200
|
48
48
|
- !ruby/object:Gem::Dependency
|
49
49
|
name: tzinfo
|
50
|
-
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: *
|
58
|
+
version_requirements: *70257566067180
|
59
59
|
- !ruby/object:Gem::Dependency
|
60
60
|
name: savon
|
61
|
-
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: *
|
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
|