keeguon-actionwebservice 3.0.1 → 3.0.17

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 CHANGED
@@ -1,4 +1,4 @@
1
- *Action Web Service -- Serving APIs on rails*
1
+ = Action Web Service -- Serving APIs on rails
2
2
 
3
3
  Action Web Service provides a way to publish interoperable web service APIs with
4
4
  Rails without spending a lot of time delving into protocol details.
data/Rakefile CHANGED
@@ -9,15 +9,15 @@ require 'fileutils'
9
9
  require File.join(File.dirname(__FILE__), 'lib', 'action_web_service', 'version')
10
10
 
11
11
  PKG_BUILD = ENV['PKG_BUILD'] ? '.' + ENV['PKG_BUILD'] : ".#{Time.now.strftime('%Y%m%d%H%M%S')}"
12
- PKG_NAME = 'rubyjedi-actionwebservice'
12
+ PKG_NAME = 'dps-actionwebservice'
13
13
  PKG_VERSION = ActionWebService::VERSION::STRING + PKG_BUILD
14
14
  PKG_FILE_NAME = "#{PKG_NAME}-#{PKG_VERSION}"
15
15
  PKG_DESTINATION = ENV["RAILS_PKG_DESTINATION"] || "../#{PKG_NAME}"
16
16
 
17
17
  RELEASE_NAME = "REL #{PKG_VERSION}"
18
18
 
19
- RUBY_FORGE_PROJECT = "aws"
20
- RUBY_FORGE_USER = "webster132"
19
+ RUBY_FORGE_PROJECT = ""
20
+ RUBY_FORGE_USER = ""
21
21
 
22
22
  desc "Default Task"
23
23
  task :default => [ :test ]
@@ -104,18 +104,18 @@ Rake::GemPackageTask.new(spec) do |p|
104
104
  end
105
105
 
106
106
 
107
- # Publish beta gem
108
- desc "Publish the API documentation"
109
- task :pgem => [:package] do
110
- Rake::SshFilePublisher.new("davidhh@wrath.rubyonrails.org", "public_html/gems/gems", "pkg", "#{PKG_FILE_NAME}.gem").upload
111
- `ssh davidhh@wrath.rubyonrails.org './gemupdate.sh'`
112
- end
113
-
114
- # Publish documentation
115
- desc "Publish the API documentation"
116
- task :pdoc => [:rdoc] do
117
- Rake::SshDirPublisher.new("davidhh@wrath.rubyonrails.org", "public_html/aws", "doc").upload
118
- end
107
+ ## Publish beta gem
108
+ #desc "Publish the API documentation"
109
+ #task :pgem => [:package] do
110
+ # Rake::SshFilePublisher.new("davidhh@wrath.rubyonrails.org", "public_html/gems/gems", "pkg", "#{PKG_FILE_NAME}.gem").upload
111
+ # `ssh davidhh@wrath.rubyonrails.org './gemupdate.sh'`
112
+ #end
113
+ #
114
+ ## Publish documentation
115
+ #desc "Publish the API documentation"
116
+ #task :pdoc => [:rdoc] do
117
+ # Rake::SshDirPublisher.new("davidhh@wrath.rubyonrails.org", "public_html/aws", "doc").upload
118
+ #end
119
119
 
120
120
 
121
121
  def each_source_file(*args)
@@ -172,13 +172,13 @@ task :lines do
172
172
  puts " Lines #{total_lines}, LOC #{total_loc}"
173
173
  end
174
174
 
175
- desc "Publish the release files to RubyForge."
176
- task :release => [ :package ] do
177
- require 'rubyforge'
178
-
179
- packages = %w( gem tgz zip ).collect{ |ext| "pkg/#{PKG_NAME}-#{PKG_VERSION}.#{ext}" }
180
-
181
- rubyforge = RubyForge.new
182
- rubyforge.login
183
- rubyforge.add_release(PKG_NAME, PKG_NAME, "REL #{PKG_VERSION}", *packages)
184
- end
175
+ #desc "Publish the release files to RubyForge."
176
+ #task :release => [ :package ] do
177
+ # require 'rubyforge'
178
+ #
179
+ # packages = %w( gem tgz zip ).collect{ |ext| "pkg/#{PKG_NAME}-#{PKG_VERSION}.#{ext}" }
180
+ #
181
+ # rubyforge = RubyForge.new
182
+ # rubyforge.login
183
+ # rubyforge.add_release(PKG_NAME, PKG_NAME, "REL #{PKG_VERSION}", *packages)
184
+ #end
@@ -82,8 +82,10 @@ module ActionWebService # :nodoc:
82
82
  if expects
83
83
  expects.each do |type|
84
84
  type = type.element_type if type.is_a?(ArrayType)
85
- if type.type_class.ancestors.include?(ActiveRecord::Base) && !allow_active_record_expects
86
- raise(ActionWebServiceError, "ActiveRecord model classes not allowed in :expects")
85
+ if Object.const_defined?('ActiveRecord')
86
+ if type.type_class.ancestors.include?(ActiveRecord::Base) && !allow_active_record_expects
87
+ raise(ActionWebServiceError, "ActiveRecord model classes not allowed in :expects")
88
+ end
87
89
  end
88
90
  end
89
91
  end
@@ -31,7 +31,11 @@ module ActionWebService # :nodoc:
31
31
 
32
32
  def cast_expects(api_method, params) # :nodoc:
33
33
  return [] if api_method.expects.nil?
34
- api_method.expects.zip(params).map{ |type, param| cast(param, type) }
34
+ if params.is_a?(Array)
35
+ api_method.expects.zip(params).map{ |type, param| cast(param, type) }
36
+ elsif params.is_a?(Hash)
37
+ api_method.expects.map {|type| cast(params[type.name.to_s], type) }
38
+ end
35
39
  end
36
40
 
37
41
  def cast_returns(api_method, return_value) # :nodoc:
@@ -137,27 +137,6 @@ module ActionWebService # :nodoc:
137
137
  end
138
138
  end
139
139
 
140
- def log_error(exception)
141
- return unless logger
142
-
143
- ActiveSupport::Deprecation.silence do
144
- if ActionView::TemplateError === exception
145
- logger.fatal(exception.to_s)
146
- else
147
- logger.fatal(
148
- "\n#{exception.class} (#{exception.message}):\n " +
149
- clean_backtrace(exception).join("\n ") + "\n\n"
150
- )
151
- end
152
- end
153
- end
154
-
155
- def clean_backtrace(exception)
156
- defined?(Rails) && Rails.respond_to?(:backtrace_cleaner) ?
157
- Rails.backtrace_cleaner.clean(exception.backtrace) :
158
- exception.backtrace
159
- end
160
-
161
140
  def indent(body)
162
141
  body.split(/\n/).map{|x| " #{x}"}.join("\n")
163
142
  end
@@ -171,15 +150,14 @@ module ActionWebService # :nodoc:
171
150
  SoapHttpTransport = 'http://schemas.xmlsoap.org/soap/http'
172
151
 
173
152
  def wsdl
174
- case request.method
175
- when :get
153
+ if request.get?
176
154
  begin
177
155
  options = { :type => 'text/xml', :disposition => 'inline' }
178
156
  send_data(to_wsdl, options)
179
157
  rescue Exception => e
180
158
  log_error(e) unless logger.nil?
181
159
  end
182
- when :post
160
+ elsif request.post?
183
161
  render :status => 500, :text => 'POST not supported'
184
162
  end
185
163
  end
@@ -187,8 +165,7 @@ module ActionWebService # :nodoc:
187
165
  private
188
166
  def base_uri
189
167
  host = request.host_with_port
190
- # TODO replace relative_url_root
191
- relative_url_root = '' #::ActionController::Base.relative_url_root
168
+ relative_url_root = Rails.configuration.action_controller[:relative_url_root]
192
169
  scheme = request.ssl? ? 'https' : 'http'
193
170
  '%s://%s%s/%s/' % [scheme, host, relative_url_root, self.class.controller_path]
194
171
  end
@@ -206,8 +183,7 @@ module ActionWebService # :nodoc:
206
183
  case dispatching_mode
207
184
  when :direct
208
185
  api = self.class.web_service_api
209
- web_service_name = self.class.to_s.sub(/Controller$/, '').underscore
210
- api = (web_service_name + '_api').classify.constantize unless api
186
+ web_service_name = controller_name.sub(/Controller$/, '').underscore
211
187
  apis[web_service_name] = [api, register_api(api, marshaler)]
212
188
  when :delegated, :layered
213
189
  self.class.web_services.each do |web_service_name, info|
@@ -72,7 +72,7 @@ module ActionWebService # :nodoc:
72
72
  end
73
73
  end
74
74
 
75
- class SimpleActionPackRequest < Rack::Request # :nodoc:
75
+ class SimpleActionPackRequest < ActionDispatch::Request # :nodoc:
76
76
  def initialize(env = {})
77
77
  @env = env
78
78
  @qparams = {}
@@ -3,6 +3,11 @@ require 'action_web_service/protocol/soap_protocol/marshaler'
3
3
  require 'soap/streamHandler'
4
4
  require 'action_web_service/client/soap_client'
5
5
 
6
+ SOAP::SOAPNamespaceTag = 'env'
7
+ SOAP::XSDNamespaceTag = 'xsd'
8
+ SOAP::XSINamespaceTag = 'xsi'
9
+
10
+
6
11
  module ActionWebService # :nodoc:
7
12
  module API # :nodoc:
8
13
  class Base # :nodoc:
@@ -59,7 +64,9 @@ module ActionWebService # :nodoc:
59
64
  end
60
65
  request = envelope.body.request
61
66
  method_name = request.elename.name
62
- params = request.collect{ |k, v| marshaler.soap_to_ruby(request[k]) }
67
+ params = {}
68
+ request.each {|k,v| params[k] = marshaler.soap_to_ruby(v) }
69
+
63
70
  Request.new(self, method_name, params, service_name, nil, nil, protocol_options)
64
71
  end
65
72
 
@@ -102,16 +109,12 @@ module ActionWebService # :nodoc:
102
109
  response = SOAP::RPC::SOAPMethodResponse.new(qname, nil)
103
110
  else
104
111
  if return_value.is_a?(Exception)
105
- if return_value.respond_to?(:to_soap_fault)
106
- response = return_value.to_soap_fault
107
- else
108
- detail = SOAP::Mapping::SOAPException.new(return_value)
109
- response = SOAP::SOAPFault.new(
110
- SOAP::SOAPQName.new('%s:%s' % [SOAP::SOAPNamespaceTag, 'Server']),
111
- SOAP::SOAPString.new(return_value.to_s),
112
- SOAP::SOAPString.new(self.class.name),
113
- marshaler.ruby_to_soap(detail))
114
- end
112
+ detail = SOAP::Mapping::SOAPException.new(return_value)
113
+ response = SOAP::SOAPFault.new(
114
+ SOAP::SOAPQName.new('%s:%s' % [SOAP::SOAPNamespaceTag, 'Server']),
115
+ SOAP::SOAPString.new(return_value.to_s),
116
+ SOAP::SOAPString.new(self.class.name),
117
+ marshaler.ruby_to_soap(detail))
115
118
  else
116
119
  if return_type
117
120
  param_def = [['retval', 'return', marshaler.lookup_type(return_type).mapping]]
@@ -150,7 +153,7 @@ module ActionWebService # :nodoc:
150
153
 
151
154
  private
152
155
  def has_valid_soap_action?(request)
153
- return nil unless request.method == 'POST'
156
+ return nil unless request.post?
154
157
  soap_action = request.env['HTTP_SOAPACTION']
155
158
  return nil unless soap_action
156
159
  soap_action = soap_action.dup
@@ -42,21 +42,21 @@ module ActionWebService
42
42
  add_template_helper(Helpers)
43
43
  module_eval <<-"end_eval", __FILE__, __LINE__ + 1
44
44
  def #{action_name}
45
- if request.method == :get
45
+ if request.get?
46
46
  setup_invocation_assigns
47
47
  render_invocation_scaffold 'methods'
48
48
  end
49
49
  end
50
50
 
51
51
  def #{action_name}_method_params
52
- if request.method == :get
52
+ if request.get?
53
53
  setup_invocation_assigns
54
54
  render_invocation_scaffold 'parameters'
55
55
  end
56
56
  end
57
57
 
58
58
  def #{action_name}_submit
59
- if request.method == :post
59
+ if request.post?
60
60
  setup_invocation_assigns
61
61
  protocol_name = params['protocol'] ? params['protocol'].to_sym : :soap
62
62
  case protocol_name
@@ -108,16 +108,16 @@ module ActionWebService
108
108
  customized_template = "\#{self.class.controller_path}/#{action_name}/\#{action}"
109
109
  default_template = scaffold_path(action)
110
110
  begin
111
- content = @template.render(:file => customized_template)
111
+ content = view_context.render(:file => customized_template)
112
112
  rescue ActionView::MissingTemplate
113
- content = @template.render(:file => default_template)
113
+ content = view_context.render(:file => default_template)
114
114
  end
115
- @template.instance_variable_set("@content_for_layout", content)
116
- if self.active_layout.nil?
115
+ @content_for_layout = content
116
+ #if self.action_has_layout?
117
+ # render :file => self.send(:_layout), :use_full_path => true
118
+ #else
117
119
  render :file => scaffold_path("layout")
118
- else
119
- render :file => self.active_layout, :use_full_path => true
120
- end
120
+ #end
121
121
  end
122
122
 
123
123
  def scaffold_path(template_name)
@@ -125,8 +125,8 @@ module ActionWebService
125
125
  end
126
126
 
127
127
  def reset_invocation_response
128
- erase_render_results
129
- response.instance_variable_set :@header, Rack::Utils::HeaderHash.new(::ActionController::Response::DEFAULT_HEADERS.merge("cookie" => []))
128
+ self.instance_variable_set(:@_response_body, nil)
129
+ response.instance_variable_set :@header, Rack::Utils::HeaderHash.new("cookie" => [], 'Content-Type' => 'text/html')
130
130
  end
131
131
 
132
132
  def public_method_name(service_name, method_name)
@@ -179,12 +179,12 @@ module ActionWebService
179
179
  true)
180
180
  if member_type.custom?
181
181
  parameters << content_tag('li', label)
182
- parameters << content_tag('ul', nested_content)
182
+ parameters << content_tag('ul', nested_content.html_safe)
183
183
  else
184
- parameters << content_tag('li', label + ' ' + nested_content)
184
+ parameters << content_tag('li', (label + ' ' + nested_content).html_safe)
185
185
  end
186
186
  end
187
- content_tag('ul', parameters)
187
+ content_tag('ul', parameters.html_safe)
188
188
  else
189
189
  # If the data source was structured previously we already have the index set
190
190
  field_name_base = "#{field_name_base}[#{idx}]" unless was_structured
@@ -228,7 +228,7 @@ module ActionWebService
228
228
  methods = service.api_methods_full.sort {|a, b| a[1] <=> b[1]}.map do |desc, name|
229
229
  content_tag("li", link_to(name, :action => action, :service => service.name, :method => name))
230
230
  end
231
- content_tag("ul", methods.join("\n"))
231
+ content_tag("ul", methods.join("\n").html_safe)
232
232
  end
233
233
  end
234
234
 
@@ -1,6 +1,6 @@
1
- <% @scaffold_container.services.each do |service| %>
1
+ <%= @scaffold_container.services.each do |service| %>
2
2
 
3
3
  <h4>API Methods for <%= service %></h4>
4
- <%= service_method_list(service) %>
4
+ <%= service_method_list(service).html_safe %>
5
5
 
6
6
  <% end %>
@@ -1,6 +1,6 @@
1
1
  <h4>Method Invocation Details for <em><%= @scaffold_service %>#<%= @scaffold_method.public_name %></em></h4>
2
2
 
3
- <% form_tag(:action => @scaffold_action_name + '_submit') do -%>
3
+ <%= form_tag(:action => @scaffold_action_name + '_submit') do -%>
4
4
  <%= hidden_field_tag "service", @scaffold_service.name %>
5
5
  <%= hidden_field_tag "method", @scaffold_method.public_name %>
6
6
 
@@ -26,5 +26,5 @@ Invocation took <tt><%= '%f' % @method_elapsed %></tt> seconds
26
26
  </p>
27
27
 
28
28
  <p>
29
- <%= link_to "Back", :action => @scaffold_action_name + '_method_params', :method => @scaffold_method.public_name, :service => @scaffold_service.name %>
29
+ <%= link_to "Back", "#{@scaffold_action_name}_method_params?method=#{@scaffold_method.public_name}&service=#{@scaffold_service.name}" %>
30
30
  </p>
@@ -1,9 +1,9 @@
1
1
  # encoding: UTF-8
2
2
  module ActionWebService
3
3
  module VERSION #:nodoc:
4
- MAJOR = 2
5
- MINOR = 3
6
- TINY = 5
4
+ MAJOR = 3
5
+ MINOR = 1
6
+ TINY = 0
7
7
 
8
8
  STRING = [MAJOR, MINOR, TINY].join('.')
9
9
  end
@@ -22,15 +22,19 @@
22
22
  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23
23
  #++
24
24
 
25
+
25
26
  begin
26
- require 'active_support'
27
- require 'action_controller'
28
- require 'active_record'
27
+ require 'activesupport'
28
+ require 'actioncontroller'
29
+ require 'activerecord'
30
+ require 'actionpack'
31
+ require 'active_support/core_ext/class/inheritable_attributes'
32
+ require 'action_dispatch/routing'
29
33
  rescue LoadError
30
34
  require 'rubygems'
31
- gem 'activesupport'
32
- gem 'actionpack'
33
- gem 'activerecord'
35
+ gem 'activesupport', '>=3.0.5'
36
+ gem 'actionpack' , '>=3.0.5'
37
+ gem 'activerecord' , '>=3.0.5'
34
38
  end
35
39
 
36
40
  $:.unshift(File.dirname(__FILE__) + "/action_web_service/vendor/")
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: keeguon-actionwebservice
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.1
4
+ version: 3.0.17
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire: actionwebservice
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-11-12 00:00:00.000000000 Z
12
+ date: 2012-11-20 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activesupport
@@ -18,7 +18,7 @@ dependencies:
18
18
  requirements:
19
19
  - - ~>
20
20
  - !ruby/object:Gem::Version
21
- version: 3.0.0
21
+ version: 3.0.17
22
22
  type: :runtime
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
@@ -26,7 +26,7 @@ dependencies:
26
26
  requirements:
27
27
  - - ~>
28
28
  - !ruby/object:Gem::Version
29
- version: 3.0.0
29
+ version: 3.0.17
30
30
  - !ruby/object:Gem::Dependency
31
31
  name: actionpack
32
32
  requirement: !ruby/object:Gem::Requirement
@@ -34,7 +34,7 @@ dependencies:
34
34
  requirements:
35
35
  - - ~>
36
36
  - !ruby/object:Gem::Version
37
- version: 3.0.0
37
+ version: 3.0.17
38
38
  type: :runtime
39
39
  prerelease: false
40
40
  version_requirements: !ruby/object:Gem::Requirement
@@ -42,7 +42,7 @@ dependencies:
42
42
  requirements:
43
43
  - - ~>
44
44
  - !ruby/object:Gem::Version
45
- version: 3.0.0
45
+ version: 3.0.17
46
46
  - !ruby/object:Gem::Dependency
47
47
  name: activerecord
48
48
  requirement: !ruby/object:Gem::Requirement
@@ -50,7 +50,7 @@ dependencies:
50
50
  requirements:
51
51
  - - ~>
52
52
  - !ruby/object:Gem::Version
53
- version: 3.0.0
53
+ version: 3.0.17
54
54
  type: :runtime
55
55
  prerelease: false
56
56
  version_requirements: !ruby/object:Gem::Requirement
@@ -58,7 +58,7 @@ dependencies:
58
58
  requirements:
59
59
  - - ~>
60
60
  - !ruby/object:Gem::Version
61
- version: 3.0.0
61
+ version: 3.0.17
62
62
  description: Adds WSDL/SOAP and XML-RPC web service support to Action Pack
63
63
  email: rubyjedi@gmail.com, bitserf@gmail.com, ksibilev@yahoo.com
64
64
  executables: []