rack-jsonp 1.3.0 → 1.3.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.
- data/README.rdoc +1 -1
- data/lib/rack/jsonp.rb +5 -1
- data/spec/rack_jsonp_spec.rb +16 -12
- metadata +61 -76
data/README.rdoc
CHANGED
@@ -10,7 +10,7 @@ the JSONP middleware, I created this gem.
|
|
10
10
|
|
11
11
|
* Patches by Sebastián Gamboa (sagmor), Garrett Bjerkhoel (dewski), Jason
|
12
12
|
Morrison (jasonm), Brian Dunn (briandunn), Jon Allured (jonallured), Oleg
|
13
|
-
Ivanov (morhekil).
|
13
|
+
Ivanov (morhekil), Jonas Grimfelt (grimen).
|
14
14
|
|
15
15
|
== Copyright
|
16
16
|
|
data/lib/rack/jsonp.rb
CHANGED
@@ -11,6 +11,7 @@ module Rack
|
|
11
11
|
@app = app
|
12
12
|
@carriage_return = options[:carriage_return] || false
|
13
13
|
@callback_param = options[:callback_param] || 'callback'
|
14
|
+
@timestamp_param = options[:timestamp_param] || '_'
|
14
15
|
end
|
15
16
|
|
16
17
|
# Proxies the request to the application, stripping out the JSON-P
|
@@ -25,9 +26,12 @@ module Rack
|
|
25
26
|
# callback parameter
|
26
27
|
request = Rack::Request.new(env)
|
27
28
|
callback = request.params.delete(@callback_param)
|
29
|
+
timestamp = request.params.delete(@timestamp_param)
|
28
30
|
env['QUERY_STRING'] = env['QUERY_STRING'].split("&").delete_if{|param|
|
29
|
-
param =~ /^(
|
31
|
+
param =~ /^(#{@timestamp_param}|#{@callback_param})=/
|
30
32
|
}.join("&")
|
33
|
+
env['rack.jsonp.callback'] = callback
|
34
|
+
env['rack.jsonp.timestamp'] = timestamp
|
31
35
|
|
32
36
|
status, headers, response = @app.call(env)
|
33
37
|
|
data/spec/rack_jsonp_spec.rb
CHANGED
@@ -75,27 +75,31 @@ describe Rack::JSONP do
|
|
75
75
|
end
|
76
76
|
|
77
77
|
it "removes the underscore parameter" do
|
78
|
-
test_body = '{"bar":"foo"}'
|
79
|
-
app_querystring = nil
|
80
78
|
app = lambda do |env|
|
81
|
-
|
82
|
-
[200, {'Content-Type' => 'application/json'}, [test_body]]
|
79
|
+
[200, {'Content-Type' => 'application/json'}, [env['QUERY_STRING']]]
|
83
80
|
end
|
84
81
|
request = Rack::MockRequest.env_for("/", :params => "a=b&_=timestamp")
|
85
|
-
Rack::JSONP.new(app).call(request)
|
86
|
-
|
82
|
+
status, headers, body = Rack::JSONP.new(app).call(request)
|
83
|
+
body.should == ["a=b"]
|
87
84
|
end
|
88
85
|
|
89
86
|
it "does not remove parameters that start with an underscore" do
|
90
|
-
test_body = '{"bar":"foo"}'
|
91
|
-
app_querystring = nil
|
92
87
|
app = lambda do |env|
|
93
|
-
|
94
|
-
[200, {'Content-Type' => 'application/json'}, [test_body]]
|
88
|
+
[200, {'Content-Type' => 'application/json'}, [env['QUERY_STRING']]]
|
95
89
|
end
|
96
90
|
request = Rack::MockRequest.env_for("/", :params => "a=b&_=timestamp&_c=saveme")
|
97
|
-
Rack::JSONP.new(app).call(request)
|
98
|
-
|
91
|
+
status, headers, body = Rack::JSONP.new(app).call(request)
|
92
|
+
body.should == ["a=b&_c=saveme"]
|
93
|
+
end
|
94
|
+
|
95
|
+
it "should store the callback and timestamp params in the environment" do
|
96
|
+
app = lambda do |env|
|
97
|
+
result = [env['rack.jsonp.timestamp'], env['rack.jsonp.callback']].join(";")
|
98
|
+
[200, {'Content-Type' => 'application/json'}, [result]]
|
99
|
+
end
|
100
|
+
request = Rack::MockRequest.env_for("/", :params => "a=b&tparam=timestamp&cparam=callback")
|
101
|
+
status, headers, body = Rack::JSONP.new(app, :timestamp_param => "tparam", :callback_param => "cparam").call(request)
|
102
|
+
body.should == ["callback(timestamp;callback)"]
|
99
103
|
end
|
100
104
|
|
101
105
|
describe "content length" do
|
metadata
CHANGED
@@ -1,120 +1,105 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: rack-jsonp
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.3.1
|
5
5
|
prerelease:
|
6
|
-
segments:
|
7
|
-
- 1
|
8
|
-
- 3
|
9
|
-
- 0
|
10
|
-
version: 1.3.0
|
11
6
|
platform: ruby
|
12
|
-
authors:
|
7
|
+
authors:
|
13
8
|
- Cyril Rohr
|
14
9
|
autorequire:
|
15
10
|
bindir: bin
|
16
11
|
cert_chain: []
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
dependencies:
|
21
|
-
- !ruby/object:Gem::Dependency
|
12
|
+
date: 2012-07-07 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
22
15
|
name: rack
|
23
|
-
|
24
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
25
17
|
none: false
|
26
|
-
requirements:
|
27
|
-
- -
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
|
30
|
-
segments:
|
31
|
-
- 0
|
32
|
-
version: "0"
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
33
22
|
type: :runtime
|
34
|
-
version_requirements: *id001
|
35
|
-
- !ruby/object:Gem::Dependency
|
36
|
-
name: rake
|
37
23
|
prerelease: false
|
38
|
-
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '0'
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: rake
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
39
33
|
none: false
|
40
|
-
requirements:
|
34
|
+
requirements:
|
41
35
|
- - ~>
|
42
|
-
- !ruby/object:Gem::Version
|
43
|
-
|
44
|
-
segments:
|
45
|
-
- 0
|
46
|
-
- 8
|
47
|
-
version: "0.8"
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0.8'
|
48
38
|
type: :development
|
49
|
-
version_requirements: *id002
|
50
|
-
- !ruby/object:Gem::Dependency
|
51
|
-
name: rspec
|
52
39
|
prerelease: false
|
53
|
-
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
54
41
|
none: false
|
55
|
-
requirements:
|
42
|
+
requirements:
|
56
43
|
- - ~>
|
57
|
-
- !ruby/object:Gem::Version
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0.8'
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: rspec
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ~>
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '1.3'
|
63
54
|
type: :development
|
64
|
-
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ~>
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '1.3'
|
65
62
|
description: A Rack middleware for providing JSON-P support.
|
66
|
-
email:
|
63
|
+
email:
|
67
64
|
- cyril.rohr@gmail.com
|
68
65
|
executables: []
|
69
|
-
|
70
66
|
extensions: []
|
71
|
-
|
72
|
-
extra_rdoc_files:
|
67
|
+
extra_rdoc_files:
|
73
68
|
- LICENSE
|
74
69
|
- README.rdoc
|
75
|
-
files:
|
70
|
+
files:
|
76
71
|
- lib/rack/jsonp.rb
|
77
72
|
- spec/rack_jsonp_spec.rb
|
78
73
|
- spec/spec_helper.rb
|
79
74
|
- Rakefile
|
80
75
|
- LICENSE
|
81
76
|
- README.rdoc
|
82
|
-
has_rdoc: true
|
83
77
|
homepage: http://github.com/crohr/rack-jsonp
|
84
78
|
licenses: []
|
85
|
-
|
86
79
|
post_install_message:
|
87
|
-
rdoc_options:
|
80
|
+
rdoc_options:
|
88
81
|
- --charset=UTF-8
|
89
|
-
require_paths:
|
82
|
+
require_paths:
|
90
83
|
- lib
|
91
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
84
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
92
85
|
none: false
|
93
|
-
requirements:
|
94
|
-
- -
|
95
|
-
- !ruby/object:Gem::Version
|
96
|
-
|
97
|
-
|
98
|
-
- 1
|
99
|
-
- 8
|
100
|
-
version: "1.8"
|
101
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ! '>='
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '1.8'
|
90
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
102
91
|
none: false
|
103
|
-
requirements:
|
104
|
-
- -
|
105
|
-
- !ruby/object:Gem::Version
|
106
|
-
|
107
|
-
segments:
|
108
|
-
- 1
|
109
|
-
- 3
|
110
|
-
version: "1.3"
|
92
|
+
requirements:
|
93
|
+
- - ! '>='
|
94
|
+
- !ruby/object:Gem::Version
|
95
|
+
version: '1.3'
|
111
96
|
requirements: []
|
112
|
-
|
113
97
|
rubyforge_project:
|
114
|
-
rubygems_version: 1.
|
98
|
+
rubygems_version: 1.8.21
|
115
99
|
signing_key:
|
116
100
|
specification_version: 3
|
117
101
|
summary: A Rack middleware for providing JSON-P support.
|
118
|
-
test_files:
|
102
|
+
test_files:
|
119
103
|
- spec/spec_helper.rb
|
120
104
|
- spec/rack_jsonp_spec.rb
|
105
|
+
has_rdoc:
|