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.
@@ -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
 
@@ -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 =~ /^(_|#{@callback_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
 
@@ -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
- app_querystring = env['QUERY_STRING']
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
- app_querystring.should == "a=b"
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
- app_querystring = env['QUERY_STRING']
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
- app_querystring.should == "a=b&_c=saveme"
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
- hash: 27
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
- date: 2011-10-19 00:00:00 +02:00
19
- default_executable:
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
- prerelease: false
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
- hash: 3
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
- requirement: &id002 !ruby/object:Gem::Requirement
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
- hash: 27
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
- requirement: &id003 !ruby/object:Gem::Requirement
40
+ version_requirements: !ruby/object:Gem::Requirement
54
41
  none: false
55
- requirements:
42
+ requirements:
56
43
  - - ~>
57
- - !ruby/object:Gem::Version
58
- hash: 9
59
- segments:
60
- - 1
61
- - 3
62
- version: "1.3"
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
- version_requirements: *id003
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
- hash: 31
97
- segments:
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
- hash: 9
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.6.2
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: