dougbarth-actionwebservice 2.1.1 → 2.3.3
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/Rakefile +3 -22
- data/lib/action_web_service.rb +3 -3
- data/lib/action_web_service/casting.rb +7 -2
- data/lib/action_web_service/dispatcher/action_controller_dispatcher.rb +1 -1
- data/lib/action_web_service/protocol/abstract.rb +4 -4
- data/lib/action_web_service/scaffolding.rb +6 -8
- data/lib/action_web_service/version.rb +2 -2
- data/test/abstract_dispatcher.rb +3 -2
- data/test/abstract_unit.rb +8 -2
- data/test/api_test.rb +1 -1
- data/test/base_test.rb +1 -1
- data/test/casting_test.rb +8 -0
- data/test/client_soap_test.rb +3 -1
- data/test/client_xmlrpc_test.rb +3 -1
- data/test/dispatcher_action_controller_soap_test.rb +2 -1
- data/test/scaffolded_controller_test.rb +6 -6
- data/test/test_invoke_test.rb +1 -1
- metadata +11 -8
data/Rakefile
CHANGED
@@ -38,25 +38,6 @@ task :build_database do
|
|
38
38
|
%x( mysql -uroot actionwebservice_unittest < #{File.join(SCHEMA_PATH, 'mysql.sql')} )
|
39
39
|
end
|
40
40
|
|
41
|
-
desc 'Print file list for gemspec file.'
|
42
|
-
task :list_files do
|
43
|
-
s_files = [ "Rakefile", "setup.rb", "README", "TODO", "CHANGELOG", "MIT-LICENSE" ]
|
44
|
-
s_files = s_files + Dir.glob( "examples/**/*" ).delete_if { |item| item.match( /\.(svn|git)/ ) }
|
45
|
-
s_files = s_files + Dir.glob( "lib/**/*" ).delete_if { |item| item.match( /\.(svn|git)/ ) }
|
46
|
-
s_files = s_files + Dir.glob( "test/**/*" ).delete_if { |item| item.match( /\.(svn|git)/ ) }
|
47
|
-
s_files = s_files + Dir.glob( "generators/**/*" ).delete_if { |item| item.match( /\.(svn|git)/ ) }
|
48
|
-
puts "#{s_files.inspect}"
|
49
|
-
end
|
50
|
-
|
51
|
-
desc 'Checks gemspec for methods disallowed by GitHub\'s $SAFE=3 build environment.'
|
52
|
-
task :check_for_github do
|
53
|
-
require 'rubygems/specification'
|
54
|
-
data = File.read('actionwebservice.gemspec')
|
55
|
-
spec = nil
|
56
|
-
Thread.new { spec = eval("$SAFE = 3\n#{data}") }.join
|
57
|
-
puts "Success! Gem should build at GitHub." if spec.class == Gem::Specification
|
58
|
-
end
|
59
|
-
|
60
41
|
|
61
42
|
# Generate the RDoc documentation
|
62
43
|
Rake::RDocTask.new { |rdoc|
|
@@ -91,8 +72,8 @@ spec = Gem::Specification.new do |s|
|
|
91
72
|
s.rubyforge_project = "aws"
|
92
73
|
s.homepage = "http://www.rubyonrails.org"
|
93
74
|
|
94
|
-
s.add_dependency('actionpack', '= 2.
|
95
|
-
s.add_dependency('activerecord', '= 2.
|
75
|
+
s.add_dependency('actionpack', '= 2.3.3' + PKG_BUILD)
|
76
|
+
s.add_dependency('activerecord', '= 2.3.3' + PKG_BUILD)
|
96
77
|
|
97
78
|
s.has_rdoc = true
|
98
79
|
s.requirements << 'none'
|
@@ -189,4 +170,4 @@ task :release => [ :package ] do
|
|
189
170
|
rubyforge = RubyForge.new
|
190
171
|
rubyforge.login
|
191
172
|
rubyforge.add_release(PKG_NAME, PKG_NAME, "REL #{PKG_VERSION}", *packages)
|
192
|
-
end
|
173
|
+
end
|
data/lib/action_web_service.rb
CHANGED
@@ -27,9 +27,9 @@ begin
|
|
27
27
|
require 'active_record'
|
28
28
|
rescue LoadError
|
29
29
|
require 'rubygems'
|
30
|
-
gem 'activesupport', '>= 2.
|
31
|
-
gem 'actionpack', '>= 2.
|
32
|
-
gem 'activerecord', '>= 2.
|
30
|
+
gem 'activesupport', '>= 2.3.0'
|
31
|
+
gem 'actionpack', '>= 2.3.0'
|
32
|
+
gem 'activerecord', '>= 2.3.0'
|
33
33
|
end
|
34
34
|
|
35
35
|
$:.unshift(File.dirname(__FILE__) + "/action_web_service/vendor/")
|
@@ -117,8 +117,13 @@ module ActionWebService # :nodoc:
|
|
117
117
|
|
118
118
|
def cast_to_structured_type(value, signature_type) # :nodoc:
|
119
119
|
obj = nil
|
120
|
-
|
121
|
-
|
120
|
+
# if the canonical classes are the same or if the given value is of
|
121
|
+
# a type that is derived from the signature_type do not attempt to
|
122
|
+
# "cast" the value into the signature_type as it's already good to go
|
123
|
+
obj = (
|
124
|
+
canonical_type(value.class) == canonical_type(signature_type.type) or
|
125
|
+
derived_from?(signature_type.type, value.class)
|
126
|
+
) ? value : signature_type.type_class.new
|
122
127
|
if value.respond_to?(:each_pair)
|
123
128
|
klass = signature_type.type_class
|
124
129
|
value.each_pair do |name, val|
|
@@ -165,7 +165,7 @@ module ActionWebService # :nodoc:
|
|
165
165
|
private
|
166
166
|
def base_uri
|
167
167
|
host = request.host_with_port
|
168
|
-
relative_url_root =
|
168
|
+
relative_url_root = ::ActionController::Base.relative_url_root
|
169
169
|
scheme = request.ssl? ? 'https' : 'http'
|
170
170
|
'%s://%s%s/%s/' % [scheme, host, relative_url_root, self.class.controller_path]
|
171
171
|
end
|
@@ -12,7 +12,7 @@ module ActionWebService # :nodoc:
|
|
12
12
|
|
13
13
|
def encode_action_pack_request(service_name, public_method_name, raw_body, options={})
|
14
14
|
klass = options[:request_class] || SimpleActionPackRequest
|
15
|
-
request = klass.new
|
15
|
+
request = klass.new({})
|
16
16
|
request.request_parameters['action'] = service_name.to_s
|
17
17
|
request.env['RAW_POST_DATA'] = raw_body
|
18
18
|
request.env['REQUEST_METHOD'] = 'POST'
|
@@ -71,9 +71,9 @@ module ActionWebService # :nodoc:
|
|
71
71
|
end
|
72
72
|
end
|
73
73
|
|
74
|
-
class SimpleActionPackRequest < ActionController::
|
75
|
-
def initialize
|
76
|
-
@env =
|
74
|
+
class SimpleActionPackRequest < ActionController::Request # :nodoc:
|
75
|
+
def initialize(env = {})
|
76
|
+
@env = env
|
77
77
|
@qparams = {}
|
78
78
|
@rparams = {}
|
79
79
|
@cookies = {}
|
@@ -69,7 +69,7 @@ module ActionWebService
|
|
69
69
|
post_params = params['method_params'] ? params['method_params'].dup : nil
|
70
70
|
params = []
|
71
71
|
@scaffold_method.expects.each_with_index do |spec, i|
|
72
|
-
params << post_params[i.to_s]
|
72
|
+
params << post_params[i.to_s]
|
73
73
|
end if @scaffold_method.expects
|
74
74
|
params = @scaffold_method.cast_expects(params)
|
75
75
|
method_name = public_method_name(@scaffold_service.name, @scaffold_method.public_name)
|
@@ -87,7 +87,6 @@ module ActionWebService
|
|
87
87
|
@method_return_value = @scaffold_method.cast_returns(obj)
|
88
88
|
end
|
89
89
|
@method_elapsed = bm.real
|
90
|
-
add_instance_variables_to_assigns
|
91
90
|
reset_invocation_response
|
92
91
|
render_invocation_scaffold 'result'
|
93
92
|
end
|
@@ -102,16 +101,15 @@ module ActionWebService
|
|
102
101
|
@scaffold_service = @scaffold_container.services.find{ |x| x.name == params['service'] }
|
103
102
|
@scaffold_method = @scaffold_service.api_methods[params['method']]
|
104
103
|
end
|
105
|
-
add_instance_variables_to_assigns
|
106
104
|
end
|
107
105
|
|
108
106
|
def render_invocation_scaffold(action)
|
109
107
|
customized_template = "\#{self.class.controller_path}/#{action_name}/\#{action}"
|
110
108
|
default_template = scaffold_path(action)
|
111
|
-
|
112
|
-
content = @template.
|
113
|
-
|
114
|
-
content = @template.
|
109
|
+
begin
|
110
|
+
content = @template.render(:file => customized_template)
|
111
|
+
rescue ActionView::MissingTemplate
|
112
|
+
content = @template.render(:file => default_template)
|
115
113
|
end
|
116
114
|
@template.instance_variable_set("@content_for_layout", content)
|
117
115
|
if self.active_layout.nil?
|
@@ -127,7 +125,7 @@ module ActionWebService
|
|
127
125
|
|
128
126
|
def reset_invocation_response
|
129
127
|
erase_render_results
|
130
|
-
response.
|
128
|
+
response.instance_variable_set :@header, Rack::Utils::HeaderHash.new(::ActionController::Response::DEFAULT_HEADERS.merge("cookie" => []))
|
131
129
|
end
|
132
130
|
|
133
131
|
def public_method_name(service_name, method_name)
|
data/test/abstract_dispatcher.rb
CHANGED
@@ -358,7 +358,7 @@ module DispatcherCommonTests
|
|
358
358
|
response = ActionController::TestResponse.new
|
359
359
|
controller.process(request, response)
|
360
360
|
# puts response.body
|
361
|
-
assert(response.
|
361
|
+
assert(response.status =~ /^500/)
|
362
362
|
end
|
363
363
|
send_garbage_request.call
|
364
364
|
controller.class.web_service_exception_reporting = false
|
@@ -538,7 +538,8 @@ module DispatcherCommonTests
|
|
538
538
|
|
539
539
|
def http_method_allowed?(method)
|
540
540
|
method = method.to_s.upcase
|
541
|
-
test_request = ActionController::TestRequest.new
|
541
|
+
test_request = ActionController::TestRequest.new
|
542
|
+
test_request.action = 'api'
|
542
543
|
test_response = ActionController::TestResponse.new
|
543
544
|
test_request.env['REQUEST_METHOD'] = method
|
544
545
|
result = @direct_controller.process(test_request, test_response)
|
data/test/abstract_unit.rb
CHANGED
@@ -4,7 +4,9 @@ require 'rubygems'
|
|
4
4
|
require 'test/unit'
|
5
5
|
require 'action_web_service'
|
6
6
|
require 'action_controller'
|
7
|
-
require 'action_controller/
|
7
|
+
require 'action_controller/test_case'
|
8
|
+
require 'action_view'
|
9
|
+
require 'action_view/test_case'
|
8
10
|
|
9
11
|
# Show backtraces for deprecated behavior for quicker cleanup.
|
10
12
|
ActiveSupport::Deprecation.debug = true
|
@@ -14,6 +16,7 @@ ActiveRecord::Base.logger = ActionController::Base.logger = Logger.new("debug.lo
|
|
14
16
|
|
15
17
|
begin
|
16
18
|
require 'activerecord'
|
19
|
+
require "active_record/test_case"
|
17
20
|
require "active_record/fixtures" unless Object.const_defined?(:Fixtures)
|
18
21
|
rescue LoadError => e
|
19
22
|
fail "\nFailed to load activerecord: #{e}"
|
@@ -30,4 +33,7 @@ ActiveRecord::Base.configurations = {
|
|
30
33
|
|
31
34
|
ActiveRecord::Base.establish_connection 'mysql'
|
32
35
|
|
33
|
-
|
36
|
+
class ActiveSupport::TestCase
|
37
|
+
include ActiveRecord::TestFixtures
|
38
|
+
self.fixture_path = "#{File.dirname(__FILE__)}/fixtures/"
|
39
|
+
end
|
data/test/api_test.rb
CHANGED
data/test/base_test.rb
CHANGED
@@ -34,7 +34,7 @@ module BaseTest
|
|
34
34
|
end
|
35
35
|
end
|
36
36
|
|
37
|
-
class TC_Base <
|
37
|
+
class TC_Base < ActiveSupport::TestCase
|
38
38
|
def test_options
|
39
39
|
assert(BaseTest::PristineService.web_service_api.inflect_names == false)
|
40
40
|
assert(BaseTest::Service.web_service_api.inflect_names == true)
|
data/test/casting_test.rb
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
require File.dirname(__FILE__) + '/abstract_unit'
|
2
2
|
|
3
3
|
module CastingTest
|
4
|
+
class A < ActionWebService::Struct; end
|
5
|
+
class B < A; end
|
4
6
|
class API < ActionWebService::API::Base
|
5
7
|
api_method :int, :expects => [:int]
|
6
8
|
api_method :str, :expects => [:string]
|
@@ -14,6 +16,8 @@ module CastingTest
|
|
14
16
|
api_method :int_array, :expects => [[:int]]
|
15
17
|
api_method :str_array, :expects => [[:string]]
|
16
18
|
api_method :bool_array, :expects => [[:bool]]
|
19
|
+
|
20
|
+
api_method :a, :expects => [A]
|
17
21
|
end
|
18
22
|
end
|
19
23
|
|
@@ -78,6 +82,10 @@ class TC_Casting < Test::Unit::TestCase
|
|
78
82
|
cast_expects(:int_array, ['1', '2.021', '4'])
|
79
83
|
end
|
80
84
|
end
|
85
|
+
|
86
|
+
def test_structured_type_casting_with_polymorphism
|
87
|
+
assert cast_expects(:a, B.new)[0].is_a?(B)
|
88
|
+
end
|
81
89
|
|
82
90
|
private
|
83
91
|
def cast_expects(method_name, *args)
|
data/test/client_soap_test.rb
CHANGED
@@ -19,6 +19,8 @@ module ClientSoapTest
|
|
19
19
|
rescue Exception => e
|
20
20
|
$stderr.puts e.message
|
21
21
|
$stderr.puts e.backtrace.join("\n")
|
22
|
+
ensure
|
23
|
+
ActiveRecord::Base.clear_active_connections!
|
22
24
|
end
|
23
25
|
end
|
24
26
|
|
@@ -46,7 +48,7 @@ module ClientSoapTest
|
|
46
48
|
end
|
47
49
|
end
|
48
50
|
|
49
|
-
class TC_ClientSoap <
|
51
|
+
class TC_ClientSoap < ActiveSupport::TestCase
|
50
52
|
include ClientTest
|
51
53
|
include ClientSoapTest
|
52
54
|
|
data/test/client_xmlrpc_test.rb
CHANGED
@@ -18,6 +18,8 @@ module ClientXmlRpcTest
|
|
18
18
|
rescue Exception => e
|
19
19
|
$stderr.puts e.message
|
20
20
|
$stderr.puts e.backtrace.join("\n")
|
21
|
+
ensure
|
22
|
+
ActiveRecord::Base.clear_active_connections!
|
21
23
|
end
|
22
24
|
end
|
23
25
|
|
@@ -40,7 +42,7 @@ module ClientXmlRpcTest
|
|
40
42
|
end
|
41
43
|
end
|
42
44
|
|
43
|
-
class TC_ClientXmlRpc <
|
45
|
+
class TC_ClientXmlRpc < ActiveSupport::TestCase
|
44
46
|
include ClientTest
|
45
47
|
include ClientXmlRpcTest
|
46
48
|
|
@@ -129,7 +129,8 @@ class TC_DispatcherActionControllerSoap < Test::Unit::TestCase
|
|
129
129
|
end
|
130
130
|
|
131
131
|
def ensure_valid_wsdl_action(controller)
|
132
|
-
test_request = ActionController::TestRequest.new
|
132
|
+
test_request = ActionController::TestRequest.new
|
133
|
+
test_request.action = 'wsdl'
|
133
134
|
test_response = ActionController::TestResponse.new
|
134
135
|
wsdl = controller.process(test_request, test_response).body
|
135
136
|
ensure_valid_wsdl(controller, wsdl, DispatcherTest::WsdlNamespace)
|
@@ -64,12 +64,12 @@ class ScaffoldedController < ActionController::Base
|
|
64
64
|
end
|
65
65
|
end
|
66
66
|
|
67
|
-
class ScaffoldedControllerTest <
|
68
|
-
def setup
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
end
|
67
|
+
class ScaffoldedControllerTest < ActionController::TestCase
|
68
|
+
# def setup
|
69
|
+
# @controller = ScaffoldedController.new
|
70
|
+
# @request = ActionController::TestRequest.new
|
71
|
+
# @response = ActionController::TestResponse.new
|
72
|
+
# end
|
73
73
|
|
74
74
|
def test_scaffold_invoke
|
75
75
|
get :scaffold_invoke
|
data/test/test_invoke_test.rb
CHANGED
@@ -49,7 +49,7 @@ class TestInvokeLayeredController < TestController
|
|
49
49
|
web_service(:two) { @service_two ||= TestInvokeService.new }
|
50
50
|
end
|
51
51
|
|
52
|
-
class TestInvokeTest <
|
52
|
+
class TestInvokeTest < ActiveSupport::TestCase
|
53
53
|
def setup
|
54
54
|
@request = ActionController::TestRequest.new
|
55
55
|
@response = ActionController::TestResponse.new
|
metadata
CHANGED
@@ -1,34 +1,36 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dougbarth-actionwebservice
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.3.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Leon Breedt, Kent Sibilev
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date:
|
12
|
+
date: 2009-05-16 00:00:00 -07:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: actionpack
|
17
|
+
type: :runtime
|
17
18
|
version_requirement:
|
18
19
|
version_requirements: !ruby/object:Gem::Requirement
|
19
20
|
requirements:
|
20
|
-
- - "
|
21
|
+
- - "="
|
21
22
|
- !ruby/object:Gem::Version
|
22
|
-
version: 2.
|
23
|
+
version: 2.3.3
|
23
24
|
version:
|
24
25
|
- !ruby/object:Gem::Dependency
|
25
26
|
name: activerecord
|
27
|
+
type: :runtime
|
26
28
|
version_requirement:
|
27
29
|
version_requirements: !ruby/object:Gem::Requirement
|
28
30
|
requirements:
|
29
|
-
- - "
|
31
|
+
- - "="
|
30
32
|
- !ruby/object:Gem::Version
|
31
|
-
version: 2.
|
33
|
+
version: 2.3.3
|
32
34
|
version:
|
33
35
|
description: Adds WSDL/SOAP and XML-RPC web service support to Action Pack
|
34
36
|
email: bitserf@gmail.com, ksibilev@yahoo.com
|
@@ -140,6 +142,7 @@ files:
|
|
140
142
|
- generators/web_service/web_service_generator.rb
|
141
143
|
has_rdoc: true
|
142
144
|
homepage: http://www.rubyonrails.org
|
145
|
+
licenses:
|
143
146
|
post_install_message:
|
144
147
|
rdoc_options: []
|
145
148
|
|
@@ -160,7 +163,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
160
163
|
requirements:
|
161
164
|
- none
|
162
165
|
rubyforge_project: aws
|
163
|
-
rubygems_version: 1.
|
166
|
+
rubygems_version: 1.3.5
|
164
167
|
signing_key:
|
165
168
|
specification_version: 2
|
166
169
|
summary: Web service support for Action Pack.
|