jmeeks-actionwebservice 2.3.2

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.
Files changed (79) hide show
  1. data/CHANGELOG +320 -0
  2. data/MIT-LICENSE +21 -0
  3. data/README +381 -0
  4. data/Rakefile +173 -0
  5. data/TODO +32 -0
  6. data/examples/googlesearch/README +143 -0
  7. data/examples/googlesearch/autoloading/google_search_api.rb +50 -0
  8. data/examples/googlesearch/autoloading/google_search_controller.rb +57 -0
  9. data/examples/googlesearch/delegated/google_search_service.rb +108 -0
  10. data/examples/googlesearch/delegated/search_controller.rb +7 -0
  11. data/examples/googlesearch/direct/google_search_api.rb +50 -0
  12. data/examples/googlesearch/direct/search_controller.rb +58 -0
  13. data/examples/metaWeblog/README +17 -0
  14. data/examples/metaWeblog/apis/blogger_api.rb +60 -0
  15. data/examples/metaWeblog/apis/blogger_service.rb +34 -0
  16. data/examples/metaWeblog/apis/meta_weblog_api.rb +67 -0
  17. data/examples/metaWeblog/apis/meta_weblog_service.rb +48 -0
  18. data/examples/metaWeblog/controllers/xmlrpc_controller.rb +16 -0
  19. data/generators/web_service/USAGE +28 -0
  20. data/generators/web_service/templates/api_definition.rb +5 -0
  21. data/generators/web_service/templates/controller.rb +8 -0
  22. data/generators/web_service/templates/functional_test.rb +19 -0
  23. data/generators/web_service/web_service_generator.rb +29 -0
  24. data/lib/action_web_service.rb +66 -0
  25. data/lib/action_web_service/api.rb +297 -0
  26. data/lib/action_web_service/base.rb +38 -0
  27. data/lib/action_web_service/casting.rb +149 -0
  28. data/lib/action_web_service/client.rb +3 -0
  29. data/lib/action_web_service/client/base.rb +28 -0
  30. data/lib/action_web_service/client/soap_client.rb +113 -0
  31. data/lib/action_web_service/client/xmlrpc_client.rb +58 -0
  32. data/lib/action_web_service/container.rb +3 -0
  33. data/lib/action_web_service/container/action_controller_container.rb +93 -0
  34. data/lib/action_web_service/container/delegated_container.rb +86 -0
  35. data/lib/action_web_service/container/direct_container.rb +69 -0
  36. data/lib/action_web_service/dispatcher.rb +2 -0
  37. data/lib/action_web_service/dispatcher/abstract.rb +207 -0
  38. data/lib/action_web_service/dispatcher/action_controller_dispatcher.rb +379 -0
  39. data/lib/action_web_service/invocation.rb +202 -0
  40. data/lib/action_web_service/protocol.rb +4 -0
  41. data/lib/action_web_service/protocol/abstract.rb +112 -0
  42. data/lib/action_web_service/protocol/discovery.rb +37 -0
  43. data/lib/action_web_service/protocol/soap_protocol.rb +176 -0
  44. data/lib/action_web_service/protocol/soap_protocol/marshaler.rb +242 -0
  45. data/lib/action_web_service/protocol/xmlrpc_protocol.rb +122 -0
  46. data/lib/action_web_service/scaffolding.rb +281 -0
  47. data/lib/action_web_service/struct.rb +64 -0
  48. data/lib/action_web_service/support/class_inheritable_options.rb +26 -0
  49. data/lib/action_web_service/support/signature_types.rb +226 -0
  50. data/lib/action_web_service/templates/scaffolds/layout.html.erb +65 -0
  51. data/lib/action_web_service/templates/scaffolds/methods.html.erb +6 -0
  52. data/lib/action_web_service/templates/scaffolds/parameters.html.erb +29 -0
  53. data/lib/action_web_service/templates/scaffolds/result.html.erb +30 -0
  54. data/lib/action_web_service/test_invoke.rb +110 -0
  55. data/lib/action_web_service/version.rb +9 -0
  56. data/lib/actionwebservice.rb +1 -0
  57. data/setup.rb +1379 -0
  58. data/test/abstract_client.rb +183 -0
  59. data/test/abstract_dispatcher.rb +548 -0
  60. data/test/abstract_unit.rb +39 -0
  61. data/test/api_test.rb +102 -0
  62. data/test/apis/auto_load_api.rb +3 -0
  63. data/test/apis/broken_auto_load_api.rb +2 -0
  64. data/test/base_test.rb +42 -0
  65. data/test/casting_test.rb +94 -0
  66. data/test/client_soap_test.rb +155 -0
  67. data/test/client_xmlrpc_test.rb +153 -0
  68. data/test/container_test.rb +73 -0
  69. data/test/dispatcher_action_controller_soap_test.rb +138 -0
  70. data/test/dispatcher_action_controller_xmlrpc_test.rb +59 -0
  71. data/test/fixtures/db_definitions/mysql.sql +8 -0
  72. data/test/fixtures/users.yml +12 -0
  73. data/test/gencov +3 -0
  74. data/test/invocation_test.rb +185 -0
  75. data/test/run +6 -0
  76. data/test/scaffolded_controller_test.rb +146 -0
  77. data/test/struct_test.rb +52 -0
  78. data/test/test_invoke_test.rb +112 -0
  79. metadata +175 -0
data/test/run ADDED
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env ruby
2
+ require 'test/unit'
3
+ $:.unshift(File.dirname(__FILE__) + '/../lib')
4
+ args = Dir[File.join(File.dirname(__FILE__), '*_test.rb')] + Dir[File.join(File.dirname(__FILE__), 'ws/*_test.rb')]
5
+ (r = Test::Unit::AutoRunner.new(true)).process_args(args)
6
+ exit r.run
@@ -0,0 +1,146 @@
1
+ require File.dirname(__FILE__) + '/abstract_unit'
2
+
3
+ ActionController::Routing::Routes.draw do |map|
4
+ map.connect '', :controller => 'scaffolded'
5
+ map.connect ':controller/:action/:id'
6
+ end
7
+
8
+ ActionController::Base.view_paths = [ '.' ]
9
+
10
+ class ScaffoldPerson < ActionWebService::Struct
11
+ member :id, :int
12
+ member :name, :string
13
+ member :birth, :date
14
+
15
+ def ==(other)
16
+ self.id == other.id && self.name == other.name
17
+ end
18
+ end
19
+
20
+ class ScaffoldedControllerTestAPI < ActionWebService::API::Base
21
+ api_method :hello, :expects => [{:integer=>:int}, :string], :returns => [:bool]
22
+ api_method :hello_struct_param, :expects => [{:person => ScaffoldPerson}], :returns => [:bool]
23
+ api_method :date_of_birth, :expects => [ScaffoldPerson], :returns => [:string]
24
+ api_method :bye, :returns => [[ScaffoldPerson]]
25
+ api_method :date_diff, :expects => [{:start_date => :date}, {:end_date => :date}], :returns => [:int]
26
+ api_method :time_diff, :expects => [{:start_time => :time}, {:end_time => :time}], :returns => [:int]
27
+ api_method :base64_upcase, :expects => [:base64], :returns => [:base64]
28
+ end
29
+
30
+ class ScaffoldedController < ActionController::Base
31
+ web_service_api ScaffoldedControllerTestAPI
32
+ web_service_scaffold :scaffold_invoke
33
+
34
+ def hello(int, string)
35
+ 0
36
+ end
37
+
38
+ def hello_struct_param(person)
39
+ 0
40
+ end
41
+
42
+ def date_of_birth(person)
43
+ person.birth.to_s
44
+ end
45
+
46
+ def bye
47
+ [ScaffoldPerson.new(:id => 1, :name => "leon"), ScaffoldPerson.new(:id => 2, :name => "paul")]
48
+ end
49
+
50
+ def rescue_action(e)
51
+ raise e
52
+ end
53
+
54
+ def date_diff(start_date, end_date)
55
+ end_date - start_date
56
+ end
57
+
58
+ def time_diff(start_time, end_time)
59
+ end_time - start_time
60
+ end
61
+
62
+ def base64_upcase(data)
63
+ data.upcase
64
+ end
65
+ end
66
+
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
+
74
+ def test_scaffold_invoke
75
+ get :scaffold_invoke
76
+ assert_template 'methods.html.erb'
77
+ end
78
+
79
+ def test_scaffold_invoke_method_params
80
+ get :scaffold_invoke_method_params, :service => 'scaffolded', :method => 'Hello'
81
+ assert_template 'parameters.html.erb'
82
+ end
83
+
84
+ def test_scaffold_invoke_method_params_with_struct
85
+ get :scaffold_invoke_method_params, :service => 'scaffolded', :method => 'HelloStructParam'
86
+ assert_template 'parameters.html.erb'
87
+ assert_tag :tag => 'form'
88
+ assert_tag :tag => 'input', :attributes => {:name => "method_params[0][name]"}
89
+ end
90
+
91
+ def test_scaffold_invoke_submit_hello
92
+ post :scaffold_invoke_submit, :service => 'scaffolded', :method => 'Hello', :method_params => {'0' => '5', '1' => 'hello world'}
93
+ assert_template 'result.html.erb'
94
+ assert_equal false, @controller.instance_eval{ @method_return_value }
95
+ end
96
+
97
+ def test_scaffold_invoke_submit_bye
98
+ post :scaffold_invoke_submit, :service => 'scaffolded', :method => 'Bye'
99
+ assert_template 'result.html.erb'
100
+ persons = [ScaffoldPerson.new(:id => 1, :name => "leon"), ScaffoldPerson.new(:id => 2, :name => "paul")]
101
+ assert_equal persons, @controller.instance_eval{ @method_return_value }
102
+ end
103
+
104
+ def test_scaffold_date_params
105
+ get :scaffold_invoke_method_params, :service => 'scaffolded', :method => 'DateDiff'
106
+ (0..1).each do |param|
107
+ (1..3).each do |date_part|
108
+ assert_tag :tag => 'select', :attributes => {:name => "method_params[#{param}][#{date_part}]"},
109
+ :children => {:greater_than => 1, :only => {:tag => 'option'}}
110
+ end
111
+ end
112
+
113
+ post :scaffold_invoke_submit, :service => 'scaffolded', :method => 'DateDiff',
114
+ :method_params => {'0' => {'1' => '2006', '2' => '2', '3' => '1'}, '1' => {'1' => '2006', '2' => '2', '3' => '2'}}
115
+ assert_equal 1, @controller.instance_eval{ @method_return_value }
116
+ end
117
+
118
+ def test_scaffold_struct_date_params
119
+ post :scaffold_invoke_submit, :service => 'scaffolded', :method => 'DateOfBirth',
120
+ :method_params => {'0' => {'birth' => {'1' => '2006', '2' => '2', '3' => '1'}, 'id' => '1', 'name' => 'person'}}
121
+ assert_equal '2006-02-01', @controller.instance_eval{ @method_return_value }
122
+ end
123
+
124
+ def test_scaffold_time_params
125
+ get :scaffold_invoke_method_params, :service => 'scaffolded', :method => 'TimeDiff'
126
+ (0..1).each do |param|
127
+ (1..6).each do |date_part|
128
+ assert_tag :tag => 'select', :attributes => {:name => "method_params[#{param}][#{date_part}]"},
129
+ :children => {:greater_than => 1, :only => {:tag => 'option'}}
130
+ end
131
+ end
132
+
133
+ post :scaffold_invoke_submit, :service => 'scaffolded', :method => 'TimeDiff',
134
+ :method_params => {'0' => {'1' => '2006', '2' => '2', '3' => '1', '4' => '1', '5' => '1', '6' => '1'},
135
+ '1' => {'1' => '2006', '2' => '2', '3' => '2', '4' => '1', '5' => '1', '6' => '1'}}
136
+ assert_equal 86400, @controller.instance_eval{ @method_return_value }
137
+ end
138
+
139
+ def test_scaffold_base64
140
+ get :scaffold_invoke_method_params, :service => 'scaffolded', :method => 'Base64Upcase'
141
+ assert_tag :tag => 'textarea', :attributes => {:name => 'method_params[0]'}
142
+
143
+ post :scaffold_invoke_submit, :service => 'scaffolded', :method => 'Base64Upcase', :method_params => {'0' => 'scaffold'}
144
+ assert_equal 'SCAFFOLD', @controller.instance_eval{ @method_return_value }
145
+ end
146
+ end
@@ -0,0 +1,52 @@
1
+ require File.dirname(__FILE__) + '/abstract_unit'
2
+
3
+ module StructTest
4
+ class Struct < ActionWebService::Struct
5
+ member :id, Integer
6
+ member :name, String
7
+ member :items, [String]
8
+ member :deleted, :bool
9
+ member :emails, [:string]
10
+ end
11
+ end
12
+
13
+ class TC_Struct < Test::Unit::TestCase
14
+ include StructTest
15
+
16
+ def setup
17
+ @struct = Struct.new(:id => 5,
18
+ :name => 'hello',
19
+ :items => ['one', 'two'],
20
+ :deleted => true,
21
+ :emails => ['test@test.com'])
22
+ end
23
+
24
+ def test_members
25
+ assert_equal(5, Struct.members.size)
26
+ assert_equal(Integer, Struct.members[:id].type_class)
27
+ assert_equal(String, Struct.members[:name].type_class)
28
+ assert_equal(String, Struct.members[:items].element_type.type_class)
29
+ assert_equal(TrueClass, Struct.members[:deleted].type_class)
30
+ assert_equal(String, Struct.members[:emails].element_type.type_class)
31
+ end
32
+
33
+ def test_initializer_and_lookup
34
+ assert_equal(5, @struct.id)
35
+ assert_equal('hello', @struct.name)
36
+ assert_equal(['one', 'two'], @struct.items)
37
+ assert_equal(true, @struct.deleted)
38
+ assert_equal(['test@test.com'], @struct.emails)
39
+ assert_equal(5, @struct['id'])
40
+ assert_equal('hello', @struct['name'])
41
+ assert_equal(['one', 'two'], @struct['items'])
42
+ assert_equal(true, @struct['deleted'])
43
+ assert_equal(['test@test.com'], @struct['emails'])
44
+ end
45
+
46
+ def test_each_pair
47
+ @struct.each_pair do |name, value|
48
+ assert_equal @struct.__send__(name), value
49
+ assert_equal @struct[name], value
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,112 @@
1
+ require File.dirname(__FILE__) + '/abstract_unit'
2
+ require 'action_web_service/test_invoke'
3
+
4
+ class TestInvokeAPI < ActionWebService::API::Base
5
+ api_method :null
6
+ api_method :add, :expects => [:int, :int], :returns => [:int]
7
+ end
8
+
9
+ class TestInvokeService < ActionWebService::Base
10
+ web_service_api TestInvokeAPI
11
+
12
+ attr :invoked
13
+
14
+ def add(a, b)
15
+ @invoked = true
16
+ a + b
17
+ end
18
+
19
+ def null
20
+ end
21
+ end
22
+
23
+ class TestController < ActionController::Base
24
+ def rescue_action(e); raise e; end
25
+ end
26
+
27
+ class TestInvokeDirectController < TestController
28
+ web_service_api TestInvokeAPI
29
+
30
+ attr :invoked
31
+
32
+ def add
33
+ @invoked = true
34
+ @method_params[0] + @method_params[1]
35
+ end
36
+
37
+ def null
38
+ end
39
+ end
40
+
41
+ class TestInvokeDelegatedController < TestController
42
+ web_service_dispatching_mode :delegated
43
+ web_service :service, TestInvokeService.new
44
+ end
45
+
46
+ class TestInvokeLayeredController < TestController
47
+ web_service_dispatching_mode :layered
48
+ web_service(:one) { @service_one ||= TestInvokeService.new }
49
+ web_service(:two) { @service_two ||= TestInvokeService.new }
50
+ end
51
+
52
+ class TestInvokeTest < ActiveSupport::TestCase
53
+ def setup
54
+ @request = ActionController::TestRequest.new
55
+ @response = ActionController::TestResponse.new
56
+ end
57
+
58
+ def test_direct_add
59
+ @controller = TestInvokeDirectController.new
60
+ assert_equal nil, @controller.invoked
61
+ result = invoke :add, 25, 25
62
+ assert_equal 50, result
63
+ assert_equal true, @controller.invoked
64
+ end
65
+
66
+ def test_delegated_add
67
+ @controller = TestInvokeDelegatedController.new
68
+ assert_equal nil, @controller.web_service_object(:service).invoked
69
+ result = invoke_delegated :service, :add, 100, 50
70
+ assert_equal 150, result
71
+ assert_equal true, @controller.web_service_object(:service).invoked
72
+ end
73
+
74
+ def test_layered_add
75
+ [:soap, :xmlrpc].each do |protocol|
76
+ @protocol = protocol
77
+ [:one, :two].each do |service|
78
+ @controller = TestInvokeLayeredController.new
79
+ assert_equal nil, @controller.web_service_object(service).invoked
80
+ result = invoke_layered service, :add, 200, -50
81
+ assert_equal 150, result
82
+ assert_equal true, @controller.web_service_object(service).invoked
83
+ end
84
+ end
85
+ end
86
+
87
+ def test_layered_fail_with_wrong_number_of_arguments
88
+ [:soap, :xmlrpc].each do |protocol|
89
+ @protocol = protocol
90
+ [:one, :two].each do |service|
91
+ @controller = TestInvokeLayeredController.new
92
+ assert_raise(ArgumentError) { invoke_layered service, :add, 1 }
93
+ end
94
+ end
95
+ end
96
+
97
+ def test_delegated_fail_with_wrong_number_of_arguments
98
+ @controller = TestInvokeDelegatedController.new
99
+ assert_raise(ArgumentError) { invoke_delegated :service, :add, 1 }
100
+ end
101
+
102
+ def test_direct_fail_with_wrong_number_of_arguments
103
+ @controller = TestInvokeDirectController.new
104
+ assert_raise(ArgumentError) { invoke :add, 1 }
105
+ end
106
+
107
+ def test_with_no_parameters_declared
108
+ @controller = TestInvokeDirectController.new
109
+ assert_nil invoke(:null)
110
+ end
111
+
112
+ end
metadata ADDED
@@ -0,0 +1,175 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: jmeeks-actionwebservice
3
+ version: !ruby/object:Gem::Version
4
+ hash: 7
5
+ prerelease: false
6
+ segments:
7
+ - 2
8
+ - 3
9
+ - 2
10
+ version: 2.3.2
11
+ platform: ruby
12
+ authors:
13
+ - Jonathan Meeks, Leon Breedt, Kent Sibilev
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2010-06-30 00:00:00 -05:00
19
+ default_executable:
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
22
+ name: actionpack
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - "="
28
+ - !ruby/object:Gem::Version
29
+ hash: 7
30
+ segments:
31
+ - 2
32
+ - 3
33
+ - 2
34
+ version: 2.3.2
35
+ type: :runtime
36
+ version_requirements: *id001
37
+ - !ruby/object:Gem::Dependency
38
+ name: activerecord
39
+ prerelease: false
40
+ requirement: &id002 !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - "="
44
+ - !ruby/object:Gem::Version
45
+ hash: 7
46
+ segments:
47
+ - 2
48
+ - 3
49
+ - 2
50
+ version: 2.3.2
51
+ type: :runtime
52
+ version_requirements: *id002
53
+ description: Adds WSDL/SOAP and XML-RPC web service support to Action Pack
54
+ email: jonathanmeeks@gmail.com, bitserf@gmail.com, ksibilev@yahoo.com
55
+ executables: []
56
+
57
+ extensions: []
58
+
59
+ extra_rdoc_files: []
60
+
61
+ files:
62
+ - Rakefile
63
+ - setup.rb
64
+ - README
65
+ - TODO
66
+ - CHANGELOG
67
+ - MIT-LICENSE
68
+ - examples/googlesearch/autoloading/google_search_api.rb
69
+ - examples/googlesearch/autoloading/google_search_controller.rb
70
+ - examples/googlesearch/delegated/google_search_service.rb
71
+ - examples/googlesearch/delegated/search_controller.rb
72
+ - examples/googlesearch/direct/google_search_api.rb
73
+ - examples/googlesearch/direct/search_controller.rb
74
+ - examples/googlesearch/README
75
+ - examples/metaWeblog/apis/blogger_api.rb
76
+ - examples/metaWeblog/apis/blogger_service.rb
77
+ - examples/metaWeblog/apis/meta_weblog_api.rb
78
+ - examples/metaWeblog/apis/meta_weblog_service.rb
79
+ - examples/metaWeblog/controllers/xmlrpc_controller.rb
80
+ - examples/metaWeblog/README
81
+ - lib/action_web_service/api.rb
82
+ - lib/action_web_service/base.rb
83
+ - lib/action_web_service/casting.rb
84
+ - lib/action_web_service/client/base.rb
85
+ - lib/action_web_service/client/soap_client.rb
86
+ - lib/action_web_service/client/xmlrpc_client.rb
87
+ - lib/action_web_service/client.rb
88
+ - lib/action_web_service/container/action_controller_container.rb
89
+ - lib/action_web_service/container/delegated_container.rb
90
+ - lib/action_web_service/container/direct_container.rb
91
+ - lib/action_web_service/container.rb
92
+ - lib/action_web_service/dispatcher/abstract.rb
93
+ - lib/action_web_service/dispatcher/action_controller_dispatcher.rb
94
+ - lib/action_web_service/dispatcher.rb
95
+ - lib/action_web_service/invocation.rb
96
+ - lib/action_web_service/protocol/abstract.rb
97
+ - lib/action_web_service/protocol/discovery.rb
98
+ - lib/action_web_service/protocol/soap_protocol/marshaler.rb
99
+ - lib/action_web_service/protocol/soap_protocol.rb
100
+ - lib/action_web_service/protocol/xmlrpc_protocol.rb
101
+ - lib/action_web_service/protocol.rb
102
+ - lib/action_web_service/scaffolding.rb
103
+ - lib/action_web_service/struct.rb
104
+ - lib/action_web_service/support/class_inheritable_options.rb
105
+ - lib/action_web_service/support/signature_types.rb
106
+ - lib/action_web_service/templates/scaffolds/layout.html.erb
107
+ - lib/action_web_service/templates/scaffolds/methods.html.erb
108
+ - lib/action_web_service/templates/scaffolds/parameters.html.erb
109
+ - lib/action_web_service/templates/scaffolds/result.html.erb
110
+ - lib/action_web_service/test_invoke.rb
111
+ - lib/action_web_service/version.rb
112
+ - lib/action_web_service.rb
113
+ - lib/actionwebservice.rb
114
+ - test/abstract_client.rb
115
+ - test/abstract_dispatcher.rb
116
+ - test/abstract_unit.rb
117
+ - test/api_test.rb
118
+ - test/apis/auto_load_api.rb
119
+ - test/apis/broken_auto_load_api.rb
120
+ - test/base_test.rb
121
+ - test/casting_test.rb
122
+ - test/client_soap_test.rb
123
+ - test/client_xmlrpc_test.rb
124
+ - test/container_test.rb
125
+ - test/dispatcher_action_controller_soap_test.rb
126
+ - test/dispatcher_action_controller_xmlrpc_test.rb
127
+ - test/fixtures/db_definitions/mysql.sql
128
+ - test/fixtures/users.yml
129
+ - test/gencov
130
+ - test/invocation_test.rb
131
+ - test/run
132
+ - test/scaffolded_controller_test.rb
133
+ - test/struct_test.rb
134
+ - test/test_invoke_test.rb
135
+ - generators/web_service/templates/api_definition.rb
136
+ - generators/web_service/templates/controller.rb
137
+ - generators/web_service/templates/functional_test.rb
138
+ - generators/web_service/USAGE
139
+ - generators/web_service/web_service_generator.rb
140
+ has_rdoc: true
141
+ homepage: http://github.com/jmeeks/actionwebservice
142
+ licenses: []
143
+
144
+ post_install_message:
145
+ rdoc_options: []
146
+
147
+ require_paths:
148
+ - lib
149
+ required_ruby_version: !ruby/object:Gem::Requirement
150
+ none: false
151
+ requirements:
152
+ - - ">="
153
+ - !ruby/object:Gem::Version
154
+ hash: 3
155
+ segments:
156
+ - 0
157
+ version: "0"
158
+ required_rubygems_version: !ruby/object:Gem::Requirement
159
+ none: false
160
+ requirements:
161
+ - - ">="
162
+ - !ruby/object:Gem::Version
163
+ hash: 3
164
+ segments:
165
+ - 0
166
+ version: "0"
167
+ requirements:
168
+ - none
169
+ rubyforge_project: aws
170
+ rubygems_version: 1.3.7
171
+ signing_key:
172
+ specification_version: 3
173
+ summary: Web service support for Action Pack.
174
+ test_files: []
175
+