wash_out 0.9.0 → 0.11.0.beta.1
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.
- checksums.yaml +4 -4
- data/.gitignore +3 -1
- data/.travis.yml +31 -3
- data/Appraisals +17 -8
- data/Gemfile +2 -2
- data/README.md +68 -8
- data/Rakefile +6 -7
- data/app/helpers/wash_out_helper.rb +59 -24
- data/app/views/{wash_with_soap → wash_out}/document/error.builder +1 -1
- data/app/views/{wash_with_soap → wash_out}/document/response.builder +1 -3
- data/app/views/{wash_with_soap → wash_out}/document/wsdl.builder +16 -16
- data/app/views/{wash_with_soap → wash_out}/rpc/error.builder +1 -1
- data/app/views/{wash_with_soap → wash_out}/rpc/response.builder +1 -3
- data/app/views/{wash_with_soap → wash_out}/rpc/wsdl.builder +17 -17
- data/gemfiles/rails_3.2.13.gemfile +21 -0
- data/gemfiles/rails_4.0.0.gemfile +20 -0
- data/gemfiles/rails_4.1.0.gemfile +20 -0
- data/gemfiles/rails_4.2.0.gemfile +20 -0
- data/gemfiles/rails_5.0.0.beta2.gemfile +19 -0
- data/lib/wash_out/dispatcher.rb +94 -48
- data/lib/wash_out/model.rb +1 -1
- data/lib/wash_out/param.rb +14 -1
- data/lib/wash_out/router.rb +46 -18
- data/lib/wash_out/soap.rb +5 -3
- data/lib/wash_out/soap_config.rb +2 -0
- data/lib/wash_out/version.rb +1 -1
- data/lib/wash_out/wsse.rb +27 -6
- data/lib/wash_out.rb +18 -5
- data/spec/dummy/config/environments/test.rb +1 -0
- data/spec/fixtures/nested_refs_to_arrays.xml +19 -0
- data/spec/fixtures/ref_to_one_array.xml +11 -0
- data/spec/fixtures/refs_to_arrays.xml +16 -0
- data/spec/lib/wash_out/dispatcher_spec.rb +135 -13
- data/spec/lib/wash_out/middleware_spec.rb +8 -8
- data/spec/lib/wash_out/param_spec.rb +43 -11
- data/spec/lib/wash_out/router_spec.rb +50 -0
- data/spec/lib/wash_out/type_spec.rb +9 -9
- data/spec/lib/wash_out_spec.rb +196 -88
- data/spec/spec_helper.rb +24 -4
- metadata +26 -17
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9d49adf22c0c16c3f0e8e3e2dcf694b7d6851920
|
4
|
+
data.tar.gz: c42b0da56ed90cd44e4d014aff450f3bef83325f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9f2dd4239ee3fa9e449bd0903c977b5f2457382ee363cb3d1404d102f5fd0b531fe8f0e32dcee5cc6a5ff14996d60b37bb565ad702b913ac2ed344fbde90ea83
|
7
|
+
data.tar.gz: c9045dd957a04e6751b9ed5ffc2a28fdc6c1d4a1c4eff7a57d8564699423a442a4975fe8c6c4cac7a451a19cd3eeda112ba8357cd0e19228d838e4d8ffcabdb4
|
data/.gitignore
CHANGED
data/.travis.yml
CHANGED
@@ -1,6 +1,34 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
script: bundle exec rspec
|
2
|
+
gemfile:
|
3
|
+
- gemfiles/rails_3.2.13.gemfile
|
4
|
+
- gemfiles/rails_4.0.0.gemfile
|
5
|
+
- gemfiles/rails_4.1.0.gemfile
|
6
|
+
- gemfiles/rails_4.2.0.gemfile
|
7
|
+
- gemfiles/rails_5.0.0.beta2.gemfile
|
3
8
|
rvm:
|
4
9
|
- 1.9.3
|
5
|
-
- jruby-19mode
|
6
10
|
- 2.0.0
|
11
|
+
- 2.1.8
|
12
|
+
- 2.2.4
|
13
|
+
- 2.3.0
|
14
|
+
- jruby
|
15
|
+
matrix:
|
16
|
+
exclude:
|
17
|
+
- rvm: 2.2.4
|
18
|
+
gemfile: gemfiles/rails_3.2.13.gemfile
|
19
|
+
- rvm: 2.3.0
|
20
|
+
gemfile: gemfiles/rails_3.2.13.gemfile
|
21
|
+
- rvm: 1.9.3
|
22
|
+
gemfile: gemfiles/rails_4.2.0.gemfile
|
23
|
+
- rvm: jruby
|
24
|
+
gemfile: gemfiles/rails_4.2.0.gemfile
|
25
|
+
- rvm: 1.9.3
|
26
|
+
gemfile: gemfiles/rails_5.0.0.beta2.gemfile
|
27
|
+
- rvm: 2.0.0
|
28
|
+
gemfile: gemfiles/rails_5.0.0.beta2.gemfile
|
29
|
+
- rvm: 2.1.8
|
30
|
+
gemfile: gemfiles/rails_5.0.0.beta2.gemfile
|
31
|
+
- rvm: jruby
|
32
|
+
gemfile: gemfiles/rails_5.0.0.beta2.gemfile
|
33
|
+
before_install:
|
34
|
+
- gem update bundler
|
data/Appraisals
CHANGED
@@ -1,15 +1,24 @@
|
|
1
|
-
appraise "rails-3.2.
|
2
|
-
gem "rails", "3.2.
|
1
|
+
appraise "rails-3.2.13" do
|
2
|
+
gem "rails", "3.2.13"
|
3
|
+
gem "test-unit"
|
4
|
+
gem "listen", "< 3.1.0"
|
3
5
|
end
|
4
6
|
|
5
|
-
appraise "rails-
|
6
|
-
gem "rails", "
|
7
|
+
appraise "rails-4.0.0" do
|
8
|
+
gem "rails", "4.0.0"
|
9
|
+
gem "listen", "< 3.1.0"
|
7
10
|
end
|
8
11
|
|
9
|
-
appraise "rails-
|
10
|
-
gem "rails", "
|
12
|
+
appraise "rails-4.1.0" do
|
13
|
+
gem "rails", "4.1.0"
|
14
|
+
gem "listen", "< 3.1.0"
|
11
15
|
end
|
12
16
|
|
13
|
-
appraise "rails-4.
|
14
|
-
gem "rails", "4.
|
17
|
+
appraise "rails-4.2.0" do
|
18
|
+
gem "rails", "4.2.0"
|
19
|
+
gem "listen", "< 3.1.0"
|
20
|
+
end
|
21
|
+
|
22
|
+
appraise "rails-5.0.0.beta2" do
|
23
|
+
gem "rails", "5.0.0.beta2"
|
15
24
|
end
|
data/Gemfile
CHANGED
@@ -4,7 +4,7 @@ gemspec
|
|
4
4
|
|
5
5
|
gem 'wasabi'
|
6
6
|
gem 'savon', '>= 2.0.0'
|
7
|
-
gem 'httpi'
|
7
|
+
gem 'httpi'
|
8
8
|
|
9
9
|
gem 'rspec-rails'
|
10
10
|
gem 'guard'
|
@@ -14,4 +14,4 @@ gem 'appraisal'
|
|
14
14
|
gem 'tzinfo'
|
15
15
|
gem 'pry'
|
16
16
|
gem 'simplecov'
|
17
|
-
gem 'simplecov-summary'
|
17
|
+
gem 'simplecov-summary'
|
data/README.md
CHANGED
@@ -10,11 +10,7 @@ But if you have a chance, please [http://stopsoap.com/](http://stopsoap.com/).
|
|
10
10
|
|
11
11
|
## Compatibility
|
12
12
|
|
13
|
-
Rails
|
14
|
-
|
15
|
-
Ruby 1.8 is not officially supported since 0.5.3. We will accept further compatibilty pull-requests but no upcoming versions will be tested against it.
|
16
|
-
|
17
|
-
Rubinius support temporarily dropped since 0.6.2 due to Rails 4 incompatibility.
|
13
|
+
Rails 3.2.13 and higher (if you are using SOAP and still on Ruby 1.9 - that's just too much evil, sorry)
|
18
14
|
|
19
15
|
## Installation
|
20
16
|
|
@@ -75,9 +71,47 @@ class RumbasController < ApplicationController
|
|
75
71
|
:args => { :data => [:integer] },
|
76
72
|
:return => [:boolean]
|
77
73
|
def integers_to_boolean
|
78
|
-
render :soap => params[:data].map{|
|
74
|
+
render :soap => params[:data].map{|i| i > 0}
|
79
75
|
end
|
80
76
|
|
77
|
+
# Params from XML attributes;
|
78
|
+
# e.g. for a request to the 'AddCircle' action:
|
79
|
+
# <soapenv:Envelope>
|
80
|
+
# <soapenv:Body>
|
81
|
+
# <AddCircle>
|
82
|
+
# <Circle radius="5.0">
|
83
|
+
# <Center x="10" y="12" />
|
84
|
+
# </Circle>
|
85
|
+
# </AddCircle>
|
86
|
+
# </soapenv:Body>
|
87
|
+
# </soapenv:Envelope>
|
88
|
+
soap_action "AddCircle",
|
89
|
+
:args => { :circle => { :center => { :@x => :integer,
|
90
|
+
:@y => :integer },
|
91
|
+
:@radius => :double } },
|
92
|
+
:return => nil, # [] for wash_out below 0.3.0
|
93
|
+
:to => :add_circle
|
94
|
+
def add_circle
|
95
|
+
circle = params[:circle]
|
96
|
+
Circle.new(circle[:center][:x], circle[:center][:y], circle[:radius])
|
97
|
+
|
98
|
+
render :soap => nil
|
99
|
+
end
|
100
|
+
|
101
|
+
# With a customised input tag name, in case params are wrapped;
|
102
|
+
# e.g. for a request to the 'IntegersToBoolean' action:
|
103
|
+
# <soapenv:Envelope>
|
104
|
+
# <soapenv:Body>
|
105
|
+
# <MyRequest> <!-- not <IntegersToBoolean> -->
|
106
|
+
# <Data>...</Data>
|
107
|
+
# </MyRequest>
|
108
|
+
# </soapenv:Body>
|
109
|
+
# </soapenv:Envelope>
|
110
|
+
soap_action "integers_to_boolean",
|
111
|
+
:args => { :my_request => { :data => [:integer] } },
|
112
|
+
:as => 'MyRequest',
|
113
|
+
:return => [:boolean]
|
114
|
+
|
81
115
|
# You can use all Rails features like filtering, too. A SOAP controller
|
82
116
|
# is just like a normal controller with a special routing.
|
83
117
|
before_filter :dump_parameters
|
@@ -94,7 +128,7 @@ WashOutSample::Application.routes.draw do
|
|
94
128
|
end
|
95
129
|
```
|
96
130
|
|
97
|
-
In such a setup, the generated WSDL may be queried at path `/
|
131
|
+
In such a setup, the generated WSDL may be queried at path `/rumbas/wsdl`. So, with a
|
98
132
|
gem like Savon, a request can be done using this path:
|
99
133
|
|
100
134
|
```ruby
|
@@ -122,7 +156,7 @@ inside separate classes for the complex ones. Here's the way to do that:
|
|
122
156
|
class Fluffy < WashOut::Type
|
123
157
|
map :universe => {
|
124
158
|
:name => :string,
|
125
|
-
:age => :
|
159
|
+
:age => :integer
|
126
160
|
}
|
127
161
|
end
|
128
162
|
|
@@ -137,6 +171,32 @@ To use defined type inside your inline declaration, pass the class instead of ty
|
|
137
171
|
Note that WashOut extends the `ActiveRecord` so every model you use is already a WashOut::Type and can be used
|
138
172
|
inside your interface declarations.
|
139
173
|
|
174
|
+
## WSSE Authentication
|
175
|
+
|
176
|
+
WashOut provides two mechanism for WSSE Authentication.
|
177
|
+
|
178
|
+
### Static Authentication
|
179
|
+
|
180
|
+
You can configure the service to validate against a username and password with the following configuration:
|
181
|
+
|
182
|
+
```ruby
|
183
|
+
soap_service namespace: "wash_out", wsse_username: "username", wsse_password: "password"
|
184
|
+
```
|
185
|
+
|
186
|
+
With this mechanism, all the actions in the controller will be authenticated against the specified username and password. If you need to authenticate different users, you can use the dynamic mechanism described below.
|
187
|
+
|
188
|
+
### Dynamic Authentication
|
189
|
+
|
190
|
+
Dynamic authentication allows you to process the username and password any way you want, with the most common case being authenticating against a database. The configuration option for this mechanism is called `wsse_auth_callback`:
|
191
|
+
|
192
|
+
```ruby
|
193
|
+
soap_service namespace: "wash_out", wsse_auth_callback: ->(username, password) {
|
194
|
+
return !User.find_by(username: username).authenticate(password).blank?
|
195
|
+
}
|
196
|
+
```
|
197
|
+
|
198
|
+
Keep in mind that the password may already be hashed by the SOAP client, so you would have to check against that condition too as per [spec](http://www.oasis-open.org/committees/download.php/16782/wss-v1.1-spec-os-UsernameTokenProfile.pdf)
|
199
|
+
|
140
200
|
## Configuration
|
141
201
|
|
142
202
|
Use `config.wash_out...` inside your environment configuration to setup WashOut globally.
|
data/Rakefile
CHANGED
@@ -5,10 +5,9 @@ require 'rspec/core/rake_task'
|
|
5
5
|
|
6
6
|
RSpec::Core::RakeTask.new(:spec)
|
7
7
|
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
end
|
8
|
+
task :console do
|
9
|
+
require "action_controller/railtie"
|
10
|
+
require "rails/test_unit/railtie"
|
11
|
+
Bundler.require
|
12
|
+
binding.pry
|
13
|
+
end
|
@@ -3,37 +3,57 @@ module WashOutHelper
|
|
3
3
|
def wsdl_data_options(param)
|
4
4
|
case controller.soap_config.wsdl_style
|
5
5
|
when 'rpc'
|
6
|
-
|
6
|
+
if param.map.present? || param.value
|
7
|
+
{ :"xsi:type" => param.namespaced_type }
|
8
|
+
else
|
9
|
+
{ :"xsi:nil" => true }
|
10
|
+
end
|
7
11
|
when 'document'
|
8
12
|
{ }
|
9
13
|
end
|
10
14
|
end
|
11
15
|
|
16
|
+
def wsdl_data_attrs(param)
|
17
|
+
param.map.reduce({}) do |memo, p|
|
18
|
+
if p.respond_to?(:attribute?) && p.attribute?
|
19
|
+
memo.merge p.attr_name => p.value
|
20
|
+
else
|
21
|
+
memo
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
12
26
|
def wsdl_data(xml, params)
|
13
27
|
params.each do |param|
|
28
|
+
next if param.attribute?
|
29
|
+
|
14
30
|
tag_name = param.name
|
15
31
|
param_options = wsdl_data_options(param)
|
32
|
+
param_options.merge! wsdl_data_attrs(param)
|
16
33
|
|
17
|
-
if
|
18
|
-
if
|
19
|
-
|
34
|
+
if param.struct?
|
35
|
+
if param.multiplied
|
36
|
+
param.map.each do |p|
|
37
|
+
attrs = wsdl_data_attrs p
|
38
|
+
if p.is_a?(Array) || p.map.size > attrs.size
|
39
|
+
blk = proc { wsdl_data(xml, p.map) }
|
40
|
+
end
|
41
|
+
attrs.reject! { |_, v| v.nil? }
|
42
|
+
xml.tag! tag_name, param_options.merge(attrs), &blk
|
43
|
+
end
|
20
44
|
else
|
21
|
-
|
22
|
-
|
23
|
-
xml.tag! tag_name, v, param_options
|
45
|
+
xml.tag! tag_name, param_options do
|
46
|
+
wsdl_data(xml, param.map)
|
24
47
|
end
|
25
48
|
end
|
26
49
|
else
|
27
|
-
if
|
28
|
-
|
29
|
-
|
50
|
+
if param.multiplied
|
51
|
+
param.value = [] unless param.value.is_a?(Array)
|
52
|
+
param.value.each do |v|
|
53
|
+
xml.tag! tag_name, v, param_options
|
30
54
|
end
|
31
55
|
else
|
32
|
-
param.
|
33
|
-
xml.tag! tag_name, param_options do
|
34
|
-
wsdl_data(xml, p.map)
|
35
|
-
end
|
36
|
-
end
|
56
|
+
xml.tag! tag_name, param.value, param_options
|
37
57
|
end
|
38
58
|
end
|
39
59
|
end
|
@@ -45,12 +65,27 @@ module WashOutHelper
|
|
45
65
|
if param.struct?
|
46
66
|
if !defined.include?(param.basic_type)
|
47
67
|
xml.tag! "xsd:complexType", :name => param.basic_type do
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
68
|
+
attrs, elems = [], []
|
69
|
+
param.map.each do |value|
|
70
|
+
more << value if value.struct?
|
71
|
+
if value.attribute?
|
72
|
+
attrs << value
|
73
|
+
else
|
74
|
+
elems << value
|
52
75
|
end
|
53
76
|
end
|
77
|
+
|
78
|
+
if elems.any?
|
79
|
+
xml.tag! "xsd:sequence" do
|
80
|
+
elems.each do |value|
|
81
|
+
xml.tag! "xsd:element", wsdl_occurence(value, false, :name => value.name, :type => value.namespaced_type)
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
attrs.each do |value|
|
87
|
+
xml.tag! "xsd:attribute", wsdl_occurence(value, false, :name => value.attr_name, :type => value.namespaced_type)
|
88
|
+
end
|
54
89
|
end
|
55
90
|
|
56
91
|
defined << param.basic_type
|
@@ -65,11 +100,11 @@ module WashOutHelper
|
|
65
100
|
end
|
66
101
|
|
67
102
|
def wsdl_occurence(param, inject, extend_with = {})
|
68
|
-
data =
|
69
|
-
|
70
|
-
"#{'xsi:' if inject}
|
71
|
-
|
72
|
-
|
103
|
+
data = {"#{'xsi:' if inject}nillable" => 'true'}
|
104
|
+
if param.multiplied
|
105
|
+
data["#{'xsi:' if inject}minOccurs"] = 0
|
106
|
+
data["#{'xsi:' if inject}maxOccurs"] = 'unbounded'
|
107
|
+
end
|
73
108
|
extend_with.merge(data)
|
74
109
|
end
|
75
110
|
end
|
@@ -3,9 +3,7 @@ xml.tag! "soap:Envelope", "xmlns:soap" => 'http://schemas.xmlsoap.org/soap/envel
|
|
3
3
|
"xmlns:xsd" => 'http://www.w3.org/2001/XMLSchema',
|
4
4
|
"xmlns:tns" => @namespace do
|
5
5
|
xml.tag! "soap:Body" do
|
6
|
-
|
7
|
-
|
8
|
-
xml.tag! @action_spec[:response_tag] do
|
6
|
+
xml.tag! "tns:#{@action_spec[:response_tag]}" do
|
9
7
|
wsdl_data xml, result
|
10
8
|
end
|
11
9
|
end
|
@@ -19,11 +19,24 @@ xml.definitions 'xmlns' => 'http://schemas.xmlsoap.org/wsdl/',
|
|
19
19
|
end
|
20
20
|
end
|
21
21
|
|
22
|
+
@map.each do |operation, formats|
|
23
|
+
xml.message :name => "#{operation}" do
|
24
|
+
formats[:in].each do |p|
|
25
|
+
xml.part wsdl_occurence(p, false, :name => p.name, :type => p.namespaced_type)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
xml.message :name => formats[:response_tag] do
|
29
|
+
formats[:out].each do |p|
|
30
|
+
xml.part wsdl_occurence(p, false, :name => p.name, :type => p.namespaced_type)
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
22
35
|
xml.portType :name => "#{@name}_port" do
|
23
|
-
@map.
|
36
|
+
@map.each do |operation, formats|
|
24
37
|
xml.operation :name => operation do
|
25
38
|
xml.input :message => "tns:#{operation}"
|
26
|
-
xml.output :message => "tns:#{
|
39
|
+
xml.output :message => "tns:#{formats[:response_tag]}"
|
27
40
|
end
|
28
41
|
end
|
29
42
|
end
|
@@ -49,20 +62,7 @@ xml.definitions 'xmlns' => 'http://schemas.xmlsoap.org/wsdl/',
|
|
49
62
|
|
50
63
|
xml.service :name => "service" do
|
51
64
|
xml.port :name => "#{@name}_port", :binding => "tns:#{@name}_binding" do
|
52
|
-
xml.tag! "soap:address", :location =>
|
53
|
-
end
|
54
|
-
end
|
55
|
-
|
56
|
-
@map.each do |operation, formats|
|
57
|
-
xml.message :name => "#{operation}" do
|
58
|
-
formats[:in].each do |p|
|
59
|
-
xml.part wsdl_occurence(p, false, :name => p.name, :type => p.namespaced_type)
|
60
|
-
end
|
61
|
-
end
|
62
|
-
xml.message :name => "#{operation}#{controller.soap_config.camelize_wsdl ? 'Response' : '_response'}" do
|
63
|
-
formats[:out].each do |p|
|
64
|
-
xml.part wsdl_occurence(p, false, :name => p.name, :type => p.namespaced_type)
|
65
|
-
end
|
65
|
+
xml.tag! "soap:address", :location => WashOut::Router.url(request, @name)
|
66
66
|
end
|
67
67
|
end
|
68
68
|
end
|
@@ -3,7 +3,7 @@ xml.tag! "soap:Envelope", "xmlns:soap" => 'http://schemas.xmlsoap.org/soap/envel
|
|
3
3
|
"xmlns:xsi" => 'http://www.w3.org/2001/XMLSchema-instance' do
|
4
4
|
xml.tag! "soap:Body" do
|
5
5
|
xml.tag! "soap:Fault", :encodingStyle => 'http://schemas.xmlsoap.org/soap/encoding/' do
|
6
|
-
xml.faultcode
|
6
|
+
xml.faultcode error_code, 'xsi:type' => 'xsd:QName'
|
7
7
|
xml.faultstring error_message, 'xsi:type' => 'xsd:string'
|
8
8
|
end
|
9
9
|
end
|
@@ -4,9 +4,7 @@ xml.tag! "soap:Envelope", "xmlns:soap" => 'http://schemas.xmlsoap.org/soap/envel
|
|
4
4
|
"xmlns:xsi" => 'http://www.w3.org/2001/XMLSchema-instance',
|
5
5
|
"xmlns:tns" => @namespace do
|
6
6
|
xml.tag! "soap:Body" do
|
7
|
-
|
8
|
-
|
9
|
-
xml.tag! @action_spec[:response_tag] do
|
7
|
+
xml.tag! "tns:#{@action_spec[:response_tag]}" do
|
10
8
|
wsdl_data xml, result
|
11
9
|
end
|
12
10
|
end
|
@@ -19,11 +19,24 @@ xml.definitions 'xmlns' => 'http://schemas.xmlsoap.org/wsdl/',
|
|
19
19
|
end
|
20
20
|
end
|
21
21
|
|
22
|
+
@map.each do |operation, formats|
|
23
|
+
xml.message :name => "#{operation}" do
|
24
|
+
formats[:in].each do |p|
|
25
|
+
xml.part wsdl_occurence(p, true, :name => p.name, :type => p.namespaced_type)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
xml.message :name => formats[:response_tag] do
|
29
|
+
formats[:out].each do |p|
|
30
|
+
xml.part wsdl_occurence(p, true, :name => p.name, :type => p.namespaced_type)
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
22
35
|
xml.portType :name => "#{@name}_port" do
|
23
|
-
@map.
|
36
|
+
@map.each do |operation, formats|
|
24
37
|
xml.operation :name => operation do
|
25
38
|
xml.input :message => "tns:#{operation}"
|
26
|
-
xml.output :message => "tns:#{
|
39
|
+
xml.output :message => "tns:#{formats[:response_tag]}"
|
27
40
|
end
|
28
41
|
end
|
29
42
|
end
|
@@ -49,20 +62,7 @@ xml.definitions 'xmlns' => 'http://schemas.xmlsoap.org/wsdl/',
|
|
49
62
|
|
50
63
|
xml.service :name => "service" do
|
51
64
|
xml.port :name => "#{@name}_port", :binding => "tns:#{@name}_binding" do
|
52
|
-
xml.tag! "soap:address", :location =>
|
53
|
-
end
|
54
|
-
end
|
55
|
-
|
56
|
-
@map.each do |operation, formats|
|
57
|
-
xml.message :name => "#{operation}" do
|
58
|
-
formats[:in].each do |p|
|
59
|
-
xml.part wsdl_occurence(p, true, :name => p.name, :type => p.namespaced_type)
|
60
|
-
end
|
61
|
-
end
|
62
|
-
xml.message :name => "#{operation}#{controller.soap_config.camelize_wsdl ? 'Response' : '_response'}" do
|
63
|
-
formats[:out].each do |p|
|
64
|
-
xml.part wsdl_occurence(p, true, :name => p.name, :type => p.namespaced_type)
|
65
|
-
end
|
65
|
+
xml.tag! "soap:address", :location => WashOut::Router.url(request, @name)
|
66
66
|
end
|
67
67
|
end
|
68
|
-
end
|
68
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# This file was generated by Appraisal
|
2
|
+
|
3
|
+
source "http://rubygems.org"
|
4
|
+
|
5
|
+
gem "wasabi"
|
6
|
+
gem "savon", ">= 2.0.0"
|
7
|
+
gem "httpi"
|
8
|
+
gem "rspec-rails"
|
9
|
+
gem "guard"
|
10
|
+
gem "guard-rspec"
|
11
|
+
gem "rb-fsevent"
|
12
|
+
gem "appraisal"
|
13
|
+
gem "tzinfo"
|
14
|
+
gem "pry"
|
15
|
+
gem "simplecov"
|
16
|
+
gem "simplecov-summary"
|
17
|
+
gem "rails", "3.2.13"
|
18
|
+
gem "test-unit"
|
19
|
+
gem "listen", "< 3.1.0"
|
20
|
+
|
21
|
+
gemspec :path => "../"
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# This file was generated by Appraisal
|
2
|
+
|
3
|
+
source "http://rubygems.org"
|
4
|
+
|
5
|
+
gem "wasabi"
|
6
|
+
gem "savon", ">= 2.0.0"
|
7
|
+
gem "httpi"
|
8
|
+
gem "rspec-rails"
|
9
|
+
gem "guard"
|
10
|
+
gem "guard-rspec"
|
11
|
+
gem "rb-fsevent"
|
12
|
+
gem "appraisal"
|
13
|
+
gem "tzinfo"
|
14
|
+
gem "pry"
|
15
|
+
gem "simplecov"
|
16
|
+
gem "simplecov-summary"
|
17
|
+
gem "rails", "4.0.0"
|
18
|
+
gem "listen", "< 3.1.0"
|
19
|
+
|
20
|
+
gemspec :path => "../"
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# This file was generated by Appraisal
|
2
|
+
|
3
|
+
source "http://rubygems.org"
|
4
|
+
|
5
|
+
gem "wasabi"
|
6
|
+
gem "savon", ">= 2.0.0"
|
7
|
+
gem "httpi"
|
8
|
+
gem "rspec-rails"
|
9
|
+
gem "guard"
|
10
|
+
gem "guard-rspec"
|
11
|
+
gem "rb-fsevent"
|
12
|
+
gem "appraisal"
|
13
|
+
gem "tzinfo"
|
14
|
+
gem "pry"
|
15
|
+
gem "simplecov"
|
16
|
+
gem "simplecov-summary"
|
17
|
+
gem "rails", "4.1.0"
|
18
|
+
gem "listen", "< 3.1.0"
|
19
|
+
|
20
|
+
gemspec :path => "../"
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# This file was generated by Appraisal
|
2
|
+
|
3
|
+
source "http://rubygems.org"
|
4
|
+
|
5
|
+
gem "wasabi"
|
6
|
+
gem "savon", ">= 2.0.0"
|
7
|
+
gem "httpi"
|
8
|
+
gem "rspec-rails"
|
9
|
+
gem "guard"
|
10
|
+
gem "guard-rspec"
|
11
|
+
gem "rb-fsevent"
|
12
|
+
gem "appraisal"
|
13
|
+
gem "tzinfo"
|
14
|
+
gem "pry"
|
15
|
+
gem "simplecov"
|
16
|
+
gem "simplecov-summary"
|
17
|
+
gem "rails", "4.2.0"
|
18
|
+
gem "listen", "< 3.1.0"
|
19
|
+
|
20
|
+
gemspec :path => "../"
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# This file was generated by Appraisal
|
2
|
+
|
3
|
+
source "http://rubygems.org"
|
4
|
+
|
5
|
+
gem "wasabi"
|
6
|
+
gem "savon", ">= 2.0.0"
|
7
|
+
gem "httpi"
|
8
|
+
gem "rspec-rails"
|
9
|
+
gem "guard"
|
10
|
+
gem "guard-rspec"
|
11
|
+
gem "rb-fsevent"
|
12
|
+
gem "appraisal"
|
13
|
+
gem "tzinfo"
|
14
|
+
gem "pry"
|
15
|
+
gem "simplecov"
|
16
|
+
gem "simplecov-summary"
|
17
|
+
gem "rails", "5.0.0.beta2"
|
18
|
+
|
19
|
+
gemspec :path => "../"
|