grover 0.12.3 → 0.13.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.
- checksums.yaml +4 -4
- data/lib/grover/middleware.rb +18 -3
- data/lib/grover/options_builder.rb +1 -1
- data/lib/grover/version.rb +1 -1
- metadata +6 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7084b165657179f7954b473653ff58cb634e0444177c95978168f1a481c2a423
|
4
|
+
data.tar.gz: aa4497878b0d4eb55b0cd5703011db42c9d8f79fd65da906ce770956f59f032e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 95f0001bdba9e31e8025f0e4c693d7d2b60c20c3e51c11b91e8ed9934dfad160f0733db6ed40344b42a4c20a59d5990a346195d08539c7098311f5de095d7b7a
|
7
|
+
data.tar.gz: 14a75499dd49dfa219b3dd914f2cb82601a0151a06c325805f3419a2836a228707cf1e63e9bfbecb0253be850b25134d1b8e2fbb6fe12a769b007c3c77f2f13a
|
data/lib/grover/middleware.rb
CHANGED
@@ -9,7 +9,7 @@ class Grover
|
|
9
9
|
# Much of this code was sourced from the PDFKit project
|
10
10
|
# @see https://github.com/pdfkit/pdfkit
|
11
11
|
#
|
12
|
-
class Middleware
|
12
|
+
class Middleware # rubocop:disable Metrics/ClassLength
|
13
13
|
def initialize(app)
|
14
14
|
@app = app
|
15
15
|
@pdf_request = false
|
@@ -30,6 +30,8 @@ class Grover
|
|
30
30
|
response = update_response response, headers if grover_request? && html_content?(headers)
|
31
31
|
|
32
32
|
[status, headers, response]
|
33
|
+
ensure
|
34
|
+
restore_env_from_grover_request(env) if grover_request?
|
33
35
|
end
|
34
36
|
|
35
37
|
private
|
@@ -94,7 +96,7 @@ class Grover
|
|
94
96
|
end
|
95
97
|
end
|
96
98
|
|
97
|
-
def create_grover_for_response(response)
|
99
|
+
def create_grover_for_response(response) # rubocop:disable Metrics/AbcSize
|
98
100
|
body = response.respond_to?(:body) ? response.body : response.join
|
99
101
|
body = body.join if body.is_a?(Array)
|
100
102
|
body = HTMLPreprocessor.process body, root_url, protocol
|
@@ -135,11 +137,24 @@ class Grover
|
|
135
137
|
end
|
136
138
|
|
137
139
|
def configure_env_for_grover_request(env)
|
138
|
-
env
|
140
|
+
# Save the env params we're overriding so we can restore them after the response is fetched
|
141
|
+
@pre_request_env_params = env.slice('PATH_INFO', 'REQUEST_URI', 'HTTP_ACCEPT')
|
142
|
+
|
143
|
+
# Override path/URI so any downstream middleware/app doesn't try actioning the request as PDF
|
144
|
+
env['PATH_INFO'] = path_without_extension
|
145
|
+
env['REQUEST_URI'] = @request.url
|
139
146
|
env['HTTP_ACCEPT'] = concat(env['HTTP_ACCEPT'], Rack::Mime.mime_type('.html'))
|
140
147
|
env['Rack-Middleware-Grover'] = 'true'
|
141
148
|
end
|
142
149
|
|
150
|
+
def restore_env_from_grover_request(env)
|
151
|
+
return unless @pre_request_env_params.is_a? Hash
|
152
|
+
|
153
|
+
# Restore the path/URI so any upstream middleware doesn't get confused
|
154
|
+
env.merge! @pre_request_env_params
|
155
|
+
env['REQUEST_URI'] = @request.url unless @pre_request_env_params.key? 'REQUEST_URI'
|
156
|
+
end
|
157
|
+
|
143
158
|
def concat(accepts, type)
|
144
159
|
(accepts || '').split(',').unshift(type).compact.join(',')
|
145
160
|
end
|
@@ -8,7 +8,7 @@ class Grover
|
|
8
8
|
# Build options from Grover.configuration, meta_options, and passed-in options
|
9
9
|
#
|
10
10
|
class OptionsBuilder < Hash
|
11
|
-
def initialize(options, url)
|
11
|
+
def initialize(options, url) # rubocop:disable Lint/MissingSuper
|
12
12
|
@url = url
|
13
13
|
combined = grover_configuration
|
14
14
|
Utils.deep_merge! combined, Utils.deep_stringify_keys(options)
|
data/lib/grover/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: grover
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.13.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andrew Bromwich
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-08-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: combine_pdf
|
@@ -188,7 +188,10 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
188
188
|
requirements:
|
189
189
|
- - ">="
|
190
190
|
- !ruby/object:Gem::Version
|
191
|
-
version:
|
191
|
+
version: 2.5.0
|
192
|
+
- - "<"
|
193
|
+
- !ruby/object:Gem::Version
|
194
|
+
version: 2.8.0
|
192
195
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
193
196
|
requirements:
|
194
197
|
- - ">="
|