rack-iframe 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/rack/iframe.rb +15 -1
- data/lib/rack/iframe/version.rb +1 -1
- data/spec/rack-iframe_spec.rb +18 -1
- data/spec/spec_helper.rb +2 -2
- metadata +28 -28
data/lib/rack/iframe.rb
CHANGED
@@ -6,10 +6,12 @@ module Rack
|
|
6
6
|
class Iframe
|
7
7
|
|
8
8
|
DEFAULT_P3P = %(CP="ALL DSP COR CURa ADMa DEVa OUR IND COM NAV").freeze
|
9
|
+
DEFAULT_IFRAME_SESSION_PATH = '/iframe_session'.freeze
|
9
10
|
|
10
11
|
def initialize(app, options = {})
|
11
12
|
@app, @options = app, options
|
12
13
|
@options[:p3p] ||= DEFAULT_P3P
|
14
|
+
@options[:iframe_session_path] ||= DEFAULT_IFRAME_SESSION_PATH
|
13
15
|
end
|
14
16
|
|
15
17
|
def call(env)
|
@@ -17,7 +19,11 @@ module Rack
|
|
17
19
|
set_invalid_etag!(env) if set_p3p_header?(env)
|
18
20
|
|
19
21
|
# 2) Request
|
20
|
-
|
22
|
+
if iframe_session_path?(env)
|
23
|
+
@status, @headers, @body = iframe_session_response
|
24
|
+
else
|
25
|
+
@status, @headers, @body = @app.call(env)
|
26
|
+
end
|
21
27
|
|
22
28
|
# 3) If P3P: Attach P3P header.
|
23
29
|
set_p3p_header! if set_p3p_header?(env)
|
@@ -67,5 +73,13 @@ module Rack
|
|
67
73
|
end
|
68
74
|
end
|
69
75
|
|
76
|
+
def iframe_session_path?(env)
|
77
|
+
env['PATH_INFO'] == @options[:iframe_session_path]
|
78
|
+
end
|
79
|
+
|
80
|
+
def iframe_session_response
|
81
|
+
[200, {}, [""]]
|
82
|
+
end
|
83
|
+
|
70
84
|
end
|
71
85
|
end
|
data/lib/rack/iframe/version.rb
CHANGED
data/spec/rack-iframe_spec.rb
CHANGED
@@ -186,7 +186,24 @@ describe Rack::Iframe do
|
|
186
186
|
end
|
187
187
|
end
|
188
188
|
end
|
189
|
+
|
190
|
+
describe "any browser: Iframe session cookie hack" do
|
191
|
+
before do
|
192
|
+
@user_agents = [:safari]
|
193
|
+
end
|
194
|
+
|
195
|
+
it 'should respond to * /iframe_session with P3P header - modified (200 OK)' do
|
196
|
+
@user_agents.each do |user_agent|
|
197
|
+
request = mock_request(user_agent, {}, '/iframe_session')
|
198
|
+
|
199
|
+
response = Rack::Iframe.new(@app).call(request)
|
200
|
+
status, headers, body = response
|
201
|
+
|
202
|
+
headers['P3P'].must_equal %(CP="ALL DSP COR CURa ADMa DEVa OUR IND COM NAV")
|
203
|
+
status.must_equal 200 # modified
|
204
|
+
end
|
205
|
+
end
|
206
|
+
end
|
189
207
|
end
|
190
208
|
end
|
191
|
-
|
192
209
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -54,11 +54,11 @@ def rack_cache(app, options = {})
|
|
54
54
|
Rack::Cache.new(app, options)
|
55
55
|
end
|
56
56
|
|
57
|
-
def mock_request(user_agent_key, env = {})
|
57
|
+
def mock_request(user_agent_key, env = {}, path = '/')
|
58
58
|
headers = {
|
59
59
|
'HTTP_USER_AGENT' => user_agent_string(user_agent_key)
|
60
60
|
}.merge(env)
|
61
|
-
Rack::MockRequest.env_for(
|
61
|
+
Rack::MockRequest.env_for(path, headers)
|
62
62
|
end
|
63
63
|
|
64
64
|
def random_etag
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rack-iframe
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -11,11 +11,11 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date: 2011-
|
14
|
+
date: 2011-11-01 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: rack
|
18
|
-
requirement: &
|
18
|
+
requirement: &70224205432460 !ruby/object:Gem::Requirement
|
19
19
|
none: false
|
20
20
|
requirements:
|
21
21
|
- - ! '>='
|
@@ -23,10 +23,10 @@ dependencies:
|
|
23
23
|
version: '0'
|
24
24
|
type: :runtime
|
25
25
|
prerelease: false
|
26
|
-
version_requirements: *
|
26
|
+
version_requirements: *70224205432460
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rake
|
29
|
-
requirement: &
|
29
|
+
requirement: &70224205432020 !ruby/object:Gem::Requirement
|
30
30
|
none: false
|
31
31
|
requirements:
|
32
32
|
- - ! '>='
|
@@ -34,10 +34,10 @@ dependencies:
|
|
34
34
|
version: '0'
|
35
35
|
type: :development
|
36
36
|
prerelease: false
|
37
|
-
version_requirements: *
|
37
|
+
version_requirements: *70224205432020
|
38
38
|
- !ruby/object:Gem::Dependency
|
39
39
|
name: bundler
|
40
|
-
requirement: &
|
40
|
+
requirement: &70224205431400 !ruby/object:Gem::Requirement
|
41
41
|
none: false
|
42
42
|
requirements:
|
43
43
|
- - ! '>='
|
@@ -45,10 +45,10 @@ dependencies:
|
|
45
45
|
version: '0'
|
46
46
|
type: :development
|
47
47
|
prerelease: false
|
48
|
-
version_requirements: *
|
48
|
+
version_requirements: *70224205431400
|
49
49
|
- !ruby/object:Gem::Dependency
|
50
50
|
name: minitest
|
51
|
-
requirement: &
|
51
|
+
requirement: &70224205430820 !ruby/object:Gem::Requirement
|
52
52
|
none: false
|
53
53
|
requirements:
|
54
54
|
- - ! '>='
|
@@ -56,10 +56,10 @@ dependencies:
|
|
56
56
|
version: '0'
|
57
57
|
type: :development
|
58
58
|
prerelease: false
|
59
|
-
version_requirements: *
|
59
|
+
version_requirements: *70224205430820
|
60
60
|
- !ruby/object:Gem::Dependency
|
61
61
|
name: guard
|
62
|
-
requirement: &
|
62
|
+
requirement: &70224205430400 !ruby/object:Gem::Requirement
|
63
63
|
none: false
|
64
64
|
requirements:
|
65
65
|
- - ! '>='
|
@@ -67,10 +67,10 @@ dependencies:
|
|
67
67
|
version: '0'
|
68
68
|
type: :development
|
69
69
|
prerelease: false
|
70
|
-
version_requirements: *
|
70
|
+
version_requirements: *70224205430400
|
71
71
|
- !ruby/object:Gem::Dependency
|
72
72
|
name: guard-bundler
|
73
|
-
requirement: &
|
73
|
+
requirement: &70224205429980 !ruby/object:Gem::Requirement
|
74
74
|
none: false
|
75
75
|
requirements:
|
76
76
|
- - ! '>='
|
@@ -78,10 +78,10 @@ dependencies:
|
|
78
78
|
version: '0'
|
79
79
|
type: :development
|
80
80
|
prerelease: false
|
81
|
-
version_requirements: *
|
81
|
+
version_requirements: *70224205429980
|
82
82
|
- !ruby/object:Gem::Dependency
|
83
83
|
name: guard-minitest
|
84
|
-
requirement: &
|
84
|
+
requirement: &70224205429480 !ruby/object:Gem::Requirement
|
85
85
|
none: false
|
86
86
|
requirements:
|
87
87
|
- - ! '>='
|
@@ -89,10 +89,10 @@ dependencies:
|
|
89
89
|
version: '0'
|
90
90
|
type: :development
|
91
91
|
prerelease: false
|
92
|
-
version_requirements: *
|
92
|
+
version_requirements: *70224205429480
|
93
93
|
- !ruby/object:Gem::Dependency
|
94
94
|
name: rack-test
|
95
|
-
requirement: &
|
95
|
+
requirement: &70224205428980 !ruby/object:Gem::Requirement
|
96
96
|
none: false
|
97
97
|
requirements:
|
98
98
|
- - ! '>='
|
@@ -100,10 +100,10 @@ dependencies:
|
|
100
100
|
version: '0'
|
101
101
|
type: :development
|
102
102
|
prerelease: false
|
103
|
-
version_requirements: *
|
103
|
+
version_requirements: *70224205428980
|
104
104
|
- !ruby/object:Gem::Dependency
|
105
105
|
name: rack-cache
|
106
|
-
requirement: &
|
106
|
+
requirement: &70224205428420 !ruby/object:Gem::Requirement
|
107
107
|
none: false
|
108
108
|
requirements:
|
109
109
|
- - ! '>='
|
@@ -111,10 +111,10 @@ dependencies:
|
|
111
111
|
version: '0'
|
112
112
|
type: :development
|
113
113
|
prerelease: false
|
114
|
-
version_requirements: *
|
114
|
+
version_requirements: *70224205428420
|
115
115
|
- !ruby/object:Gem::Dependency
|
116
116
|
name: chronic
|
117
|
-
requirement: &
|
117
|
+
requirement: &70224205427620 !ruby/object:Gem::Requirement
|
118
118
|
none: false
|
119
119
|
requirements:
|
120
120
|
- - ! '>='
|
@@ -122,10 +122,10 @@ dependencies:
|
|
122
122
|
version: '0'
|
123
123
|
type: :development
|
124
124
|
prerelease: false
|
125
|
-
version_requirements: *
|
125
|
+
version_requirements: *70224205427620
|
126
126
|
- !ruby/object:Gem::Dependency
|
127
127
|
name: awesome_print
|
128
|
-
requirement: &
|
128
|
+
requirement: &70224205426500 !ruby/object:Gem::Requirement
|
129
129
|
none: false
|
130
130
|
requirements:
|
131
131
|
- - ! '>='
|
@@ -133,10 +133,10 @@ dependencies:
|
|
133
133
|
version: '0'
|
134
134
|
type: :development
|
135
135
|
prerelease: false
|
136
|
-
version_requirements: *
|
136
|
+
version_requirements: *70224205426500
|
137
137
|
- !ruby/object:Gem::Dependency
|
138
138
|
name: sinatra
|
139
|
-
requirement: &
|
139
|
+
requirement: &70224205425760 !ruby/object:Gem::Requirement
|
140
140
|
none: false
|
141
141
|
requirements:
|
142
142
|
- - ! '>='
|
@@ -144,7 +144,7 @@ dependencies:
|
|
144
144
|
version: '0'
|
145
145
|
type: :development
|
146
146
|
prerelease: false
|
147
|
-
version_requirements: *
|
147
|
+
version_requirements: *70224205425760
|
148
148
|
description: Rack middleware for enabling problematic web browsers (Internet Explorer
|
149
149
|
and Safari) to use same cookies in iframes as in parent windows.
|
150
150
|
email:
|
@@ -182,7 +182,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
182
182
|
version: '0'
|
183
183
|
segments:
|
184
184
|
- 0
|
185
|
-
hash:
|
185
|
+
hash: -3225928049267512743
|
186
186
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
187
187
|
none: false
|
188
188
|
requirements:
|
@@ -191,7 +191,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
191
191
|
version: '0'
|
192
192
|
segments:
|
193
193
|
- 0
|
194
|
-
hash:
|
194
|
+
hash: -3225928049267512743
|
195
195
|
requirements: []
|
196
196
|
rubyforge_project: rack-iframe
|
197
197
|
rubygems_version: 1.8.10
|