slimmer 1.1.18 → 1.1.19
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/lib/slimmer.rb +3 -0
- data/lib/slimmer/app.rb +1 -20
- data/lib/slimmer/skin.rb +4 -0
- data/lib/slimmer/version.rb +1 -1
- data/test/skin_test.rb +20 -0
- metadata +28 -24
- data/test/header_filtering_test.rb +0 -20
data/lib/slimmer.rb
CHANGED
@@ -27,4 +27,7 @@ module Slimmer
|
|
27
27
|
autoload :UrlRewriter, 'slimmer/url_rewriter'
|
28
28
|
autoload :HeaderContextInserter, 'slimmer/header_context_inserter'
|
29
29
|
autoload :GoogleAnalyticsConfigurator, 'slimmer/google_analytics_configurator'
|
30
|
+
|
31
|
+
class TemplateNotFoundException < StandardError; end
|
32
|
+
class CouldNotRetrieveTemplate < StandardError; end
|
30
33
|
end
|
data/lib/slimmer/app.rb
CHANGED
@@ -92,27 +92,8 @@ module Slimmer
|
|
92
92
|
rewritten_body = app_body
|
93
93
|
end
|
94
94
|
rewritten_body = [rewritten_body] unless rewritten_body.respond_to?(:each)
|
95
|
-
filtered_headers = filter_headers headers
|
96
95
|
logger.debug "Slimmer: Returning final status, headers and body"
|
97
|
-
[status,
|
98
|
-
end
|
99
|
-
|
100
|
-
def filter_headers(header_hash)
|
101
|
-
valid_keys = %w{vary set-cookie location content-type expires cache-control www-authenticate last-modified etag}
|
102
|
-
logger.debug "Slimmer: removing headers except #{valid_keys} from #{header_hash.keys}"
|
103
|
-
removed_keys = []
|
104
|
-
header_hash.keys.each do |key|
|
105
|
-
unless valid_keys.include?(key.downcase)
|
106
|
-
removed_keys << key
|
107
|
-
header_hash.delete(key)
|
108
|
-
end
|
109
|
-
end
|
110
|
-
if removed_keys.size > 0
|
111
|
-
logger.debug "Slimmer: removed #{removed_keys.size} headers: #{removed_keys.inspect}"
|
112
|
-
else
|
113
|
-
logger.debug "Slimmer: no headers removed"
|
114
|
-
end
|
115
|
-
header_hash
|
96
|
+
[status, headers, rewritten_body]
|
116
97
|
end
|
117
98
|
end
|
118
99
|
end
|
data/lib/slimmer/skin.rb
CHANGED
@@ -61,6 +61,10 @@ module Slimmer
|
|
61
61
|
cache template_name, template
|
62
62
|
logger.debug "Slimmer: Returning evaluated template"
|
63
63
|
template
|
64
|
+
rescue OpenURI::HTTPError
|
65
|
+
raise TemplateNotFoundException
|
66
|
+
rescue Errno::ECONNREFUSED
|
67
|
+
raise CouldNotRetrieveTemplate
|
64
68
|
end
|
65
69
|
|
66
70
|
def template_url template_name
|
data/lib/slimmer/version.rb
CHANGED
data/test/skin_test.rb
CHANGED
@@ -20,4 +20,24 @@ class SkinTest < MiniTest::Unit::TestCase
|
|
20
20
|
template = skin.load_template 'example'
|
21
21
|
assert_equal "<p>this-is-the-prefix</p>", template
|
22
22
|
end
|
23
|
+
|
24
|
+
def test_should_raise_appropriate_exception_when_template_not_found
|
25
|
+
skin = Slimmer::Skin.new "http://example.local/"
|
26
|
+
expected_url = "http://example.local/templates/example.html.erb"
|
27
|
+
stub_request(:get, expected_url).to_return(:status => '404')
|
28
|
+
|
29
|
+
assert_raises(Slimmer::TemplateNotFoundException) do
|
30
|
+
skin.load_template 'example'
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
def test_should_raise_appropriate_exception_when_cant_reach_template_host
|
35
|
+
skin = Slimmer::Skin.new "http://example.local/"
|
36
|
+
expected_url = "http://example.local/templates/example.html.erb"
|
37
|
+
stub_request(:get, expected_url).to_raise(Errno::ECONNREFUSED)
|
38
|
+
|
39
|
+
assert_raises(Slimmer::CouldNotRetrieveTemplate) do
|
40
|
+
skin.load_template 'example'
|
41
|
+
end
|
42
|
+
end
|
23
43
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: slimmer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.19
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,11 +10,11 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2012-01-
|
13
|
+
date: 2012-01-12 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: nokogiri
|
17
|
-
requirement: &
|
17
|
+
requirement: &70164012495200 !ruby/object:Gem::Requirement
|
18
18
|
none: false
|
19
19
|
requirements:
|
20
20
|
- - ~>
|
@@ -22,10 +22,10 @@ dependencies:
|
|
22
22
|
version: 1.5.0
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
|
-
version_requirements: *
|
25
|
+
version_requirements: *70164012495200
|
26
26
|
- !ruby/object:Gem::Dependency
|
27
27
|
name: rack
|
28
|
-
requirement: &
|
28
|
+
requirement: &70164012494660 !ruby/object:Gem::Requirement
|
29
29
|
none: false
|
30
30
|
requirements:
|
31
31
|
- - ~>
|
@@ -33,10 +33,10 @@ dependencies:
|
|
33
33
|
version: 1.3.5
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
|
-
version_requirements: *
|
36
|
+
version_requirements: *70164012494660
|
37
37
|
- !ruby/object:Gem::Dependency
|
38
38
|
name: plek
|
39
|
-
requirement: &
|
39
|
+
requirement: &70164012494160 !ruby/object:Gem::Requirement
|
40
40
|
none: false
|
41
41
|
requirements:
|
42
42
|
- - ! '>='
|
@@ -44,10 +44,10 @@ dependencies:
|
|
44
44
|
version: 0.1.8
|
45
45
|
type: :runtime
|
46
46
|
prerelease: false
|
47
|
-
version_requirements: *
|
47
|
+
version_requirements: *70164012494160
|
48
48
|
- !ruby/object:Gem::Dependency
|
49
49
|
name: json
|
50
|
-
requirement: &
|
50
|
+
requirement: &70164012493740 !ruby/object:Gem::Requirement
|
51
51
|
none: false
|
52
52
|
requirements:
|
53
53
|
- - ! '>='
|
@@ -55,10 +55,10 @@ dependencies:
|
|
55
55
|
version: '0'
|
56
56
|
type: :runtime
|
57
57
|
prerelease: false
|
58
|
-
version_requirements: *
|
58
|
+
version_requirements: *70164012493740
|
59
59
|
- !ruby/object:Gem::Dependency
|
60
60
|
name: null_logger
|
61
|
-
requirement: &
|
61
|
+
requirement: &70164012493260 !ruby/object:Gem::Requirement
|
62
62
|
none: false
|
63
63
|
requirements:
|
64
64
|
- - ! '>='
|
@@ -66,10 +66,10 @@ dependencies:
|
|
66
66
|
version: '0'
|
67
67
|
type: :runtime
|
68
68
|
prerelease: false
|
69
|
-
version_requirements: *
|
69
|
+
version_requirements: *70164012493260
|
70
70
|
- !ruby/object:Gem::Dependency
|
71
71
|
name: rake
|
72
|
-
requirement: &
|
72
|
+
requirement: &70164012492300 !ruby/object:Gem::Requirement
|
73
73
|
none: false
|
74
74
|
requirements:
|
75
75
|
- - ~>
|
@@ -77,10 +77,10 @@ dependencies:
|
|
77
77
|
version: 0.9.2.2
|
78
78
|
type: :development
|
79
79
|
prerelease: false
|
80
|
-
version_requirements: *
|
80
|
+
version_requirements: *70164012492300
|
81
81
|
- !ruby/object:Gem::Dependency
|
82
82
|
name: rack-test
|
83
|
-
requirement: &
|
83
|
+
requirement: &70164012491740 !ruby/object:Gem::Requirement
|
84
84
|
none: false
|
85
85
|
requirements:
|
86
86
|
- - ~>
|
@@ -88,10 +88,10 @@ dependencies:
|
|
88
88
|
version: 0.6.1
|
89
89
|
type: :development
|
90
90
|
prerelease: false
|
91
|
-
version_requirements: *
|
91
|
+
version_requirements: *70164012491740
|
92
92
|
- !ruby/object:Gem::Dependency
|
93
93
|
name: mocha
|
94
|
-
requirement: &
|
94
|
+
requirement: &70164012491020 !ruby/object:Gem::Requirement
|
95
95
|
none: false
|
96
96
|
requirements:
|
97
97
|
- - ~>
|
@@ -99,10 +99,10 @@ dependencies:
|
|
99
99
|
version: 0.9.12
|
100
100
|
type: :development
|
101
101
|
prerelease: false
|
102
|
-
version_requirements: *
|
102
|
+
version_requirements: *70164012491020
|
103
103
|
- !ruby/object:Gem::Dependency
|
104
104
|
name: webmock
|
105
|
-
requirement: &
|
105
|
+
requirement: &70164012488760 !ruby/object:Gem::Requirement
|
106
106
|
none: false
|
107
107
|
requirements:
|
108
108
|
- - ~>
|
@@ -110,10 +110,10 @@ dependencies:
|
|
110
110
|
version: '1.7'
|
111
111
|
type: :development
|
112
112
|
prerelease: false
|
113
|
-
version_requirements: *
|
113
|
+
version_requirements: *70164012488760
|
114
114
|
- !ruby/object:Gem::Dependency
|
115
115
|
name: therubyracer
|
116
|
-
requirement: &
|
116
|
+
requirement: &70164012488340 !ruby/object:Gem::Requirement
|
117
117
|
none: false
|
118
118
|
requirements:
|
119
119
|
- - ! '>='
|
@@ -121,7 +121,7 @@ dependencies:
|
|
121
121
|
version: '0'
|
122
122
|
type: :development
|
123
123
|
prerelease: false
|
124
|
-
version_requirements: *
|
124
|
+
version_requirements: *70164012488340
|
125
125
|
description: Rack middleware for skinning pages using a specific template
|
126
126
|
email:
|
127
127
|
- bengriffiths@gmail.com
|
@@ -157,7 +157,6 @@ files:
|
|
157
157
|
- test/fixtures/500.html.erb
|
158
158
|
- test/fixtures/wrapper.html.erb
|
159
159
|
- test/google_analytics_test.rb
|
160
|
-
- test/header_filtering_test.rb
|
161
160
|
- test/headers_test.rb
|
162
161
|
- test/processors/body_inserter_test.rb
|
163
162
|
- test/processors/header_context_inserter_test.rb
|
@@ -177,12 +176,18 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
177
176
|
- - ! '>='
|
178
177
|
- !ruby/object:Gem::Version
|
179
178
|
version: '0'
|
179
|
+
segments:
|
180
|
+
- 0
|
181
|
+
hash: -1615013662764741884
|
180
182
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
181
183
|
none: false
|
182
184
|
requirements:
|
183
185
|
- - ! '>='
|
184
186
|
- !ruby/object:Gem::Version
|
185
187
|
version: '0'
|
188
|
+
segments:
|
189
|
+
- 0
|
190
|
+
hash: -1615013662764741884
|
186
191
|
requirements: []
|
187
192
|
rubyforge_project: slimmer
|
188
193
|
rubygems_version: 1.8.11
|
@@ -194,7 +199,6 @@ test_files:
|
|
194
199
|
- test/fixtures/500.html.erb
|
195
200
|
- test/fixtures/wrapper.html.erb
|
196
201
|
- test/google_analytics_test.rb
|
197
|
-
- test/header_filtering_test.rb
|
198
202
|
- test/headers_test.rb
|
199
203
|
- test/processors/body_inserter_test.rb
|
200
204
|
- test/processors/header_context_inserter_test.rb
|
@@ -1,20 +0,0 @@
|
|
1
|
-
require "test_helper"
|
2
|
-
|
3
|
-
class HeaderFilteringTest < SlimmerIntegrationTest
|
4
|
-
ALLOWED_HEADERS = ["Vary", "Set-Cookie", "Location", "Content-Type", "Expires", "Cache-Control", "WWW-Authenticate", "Last-Modified", "ETag"]
|
5
|
-
FORBIDDEN_HEADERS = ["Anything-Else"]
|
6
|
-
|
7
|
-
given_response 200, %{Anything}, (ALLOWED_HEADERS + FORBIDDEN_HEADERS).inject({}) {|memo, header| memo[header] = header.downcase; memo}
|
8
|
-
|
9
|
-
def test_allows_whitelisted_headers
|
10
|
-
ALLOWED_HEADERS.each do |header|
|
11
|
-
assert last_response.headers.keys.include?(header)
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
def test_filters_other_headers
|
16
|
-
FORBIDDEN_HEADERS.each do |header|
|
17
|
-
refute last_response.headers.keys.include?(header)
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|