rocket_pants 1.1.1 → 1.2.0
Sign up to get free protection for your applications and to get access to all the features.
data/lib/rocket_pants.rb
CHANGED
@@ -29,6 +29,7 @@ module RocketPants
|
|
29
29
|
autoload :Caching, 'rocket_pants/controller/caching'
|
30
30
|
autoload :ErrorHandling, 'rocket_pants/controller/error_handling'
|
31
31
|
autoload :Instrumentation, 'rocket_pants/controller/instrumentation'
|
32
|
+
autoload :JSONP, 'rocket_pants/controller/jsonp'
|
32
33
|
autoload :Rescuable, 'rocket_pants/controller/rescuable'
|
33
34
|
autoload :Respondable, 'rocket_pants/controller/respondable'
|
34
35
|
autoload :Versioning, 'rocket_pants/controller/versioning'
|
data/lib/rocket_pants/base.rb
CHANGED
@@ -25,7 +25,8 @@ module RocketPants
|
|
25
25
|
AbstractController::Callbacks,
|
26
26
|
ActionController::Rescue,
|
27
27
|
ErrorHandling,
|
28
|
-
Rescuable
|
28
|
+
Rescuable,
|
29
|
+
JSONP
|
29
30
|
# FormatVerification # TODO: Implement Format Verification
|
30
31
|
].compact
|
31
32
|
|
@@ -49,5 +50,8 @@ module RocketPants
|
|
49
50
|
|
50
51
|
ActiveSupport.run_load_hooks(:rocket_pants, self)
|
51
52
|
|
53
|
+
# Methods for integration purposes.
|
54
|
+
def self.helper_method(*); end
|
55
|
+
|
52
56
|
end
|
53
57
|
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
module RocketPants
|
2
|
+
# This mixin implements easy JSONP support in your application,
|
3
|
+
# making it easy for developers to support it in their response.
|
4
|
+
module JSONP
|
5
|
+
extend ActiveSupport::Concern
|
6
|
+
|
7
|
+
included do
|
8
|
+
class_attribute :_jsonp_parameter
|
9
|
+
self._jsonp_parameter = :callback
|
10
|
+
end
|
11
|
+
|
12
|
+
module ClassMethods
|
13
|
+
|
14
|
+
# Marks the current controller as supporting JSONP-style responses.
|
15
|
+
# @parameter [Hash{Symbol => Object}] options An optional hash of options to configure the callback.
|
16
|
+
# Non-specified options are passed to the filter call.
|
17
|
+
# @option options [Symbol,String] :parameter If set, specifies the param name of the callback. Defaults to :callback.
|
18
|
+
# @option options [true, false] :enable Whether to enable JSONP. true by default.
|
19
|
+
def jsonp(options = {})
|
20
|
+
enable = options.delete(:enable) { true }
|
21
|
+
param = options.delete(:parameter).try(:to_sym)
|
22
|
+
if enable
|
23
|
+
after_filter :wrap_response_in_jsonp, {:if => :jsonp_is_possible?}.reverse_merge(options)
|
24
|
+
self._jsonp_parameter = param if param
|
25
|
+
else
|
26
|
+
skip_after_filter :wrap_response_in_jsonp, options
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
31
|
+
|
32
|
+
private
|
33
|
+
|
34
|
+
def jsonp_is_possible?
|
35
|
+
request.get? && response.content_type == "application/json" && jsonp_parameter.present?
|
36
|
+
end
|
37
|
+
|
38
|
+
def jsonp_parameter
|
39
|
+
params[_jsonp_parameter]
|
40
|
+
end
|
41
|
+
|
42
|
+
def wrap_response_in_jsonp
|
43
|
+
# Finally, set up the callback using the JSONP parameter.
|
44
|
+
response.content_type = 'application/javascript'
|
45
|
+
response.body = "#{jsonp_parameter}(#{response.body});"
|
46
|
+
end
|
47
|
+
|
48
|
+
end
|
49
|
+
end
|
@@ -13,7 +13,7 @@ module RocketPants
|
|
13
13
|
def self.normalise_urls(object)
|
14
14
|
if object.is_a?(Array)
|
15
15
|
object.each { |o| o['url'] = nil }
|
16
|
-
elsif object.is_a?(Hash) || object.is_a?(APISmith::Smash)
|
16
|
+
elsif object.is_a?(Hash) || (defined?(APISmith::Smash) && object.is_a?(APISmith::Smash))
|
17
17
|
object['url'] = nil
|
18
18
|
end
|
19
19
|
object
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rocket_pants
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-05-02 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: actionpack
|
@@ -251,6 +251,7 @@ files:
|
|
251
251
|
- lib/rocket_pants/controller/error_handling.rb
|
252
252
|
- lib/rocket_pants/controller/format_verification.rb
|
253
253
|
- lib/rocket_pants/controller/instrumentation.rb
|
254
|
+
- lib/rocket_pants/controller/jsonp.rb
|
254
255
|
- lib/rocket_pants/controller/rescuable.rb
|
255
256
|
- lib/rocket_pants/controller/respondable.rb
|
256
257
|
- lib/rocket_pants/controller/url_for.rb
|