rack-jsonp 1.3.0 → 1.3.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -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: