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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7376874743ddb5f08d3fc68c02f84a72eb6cbe98c63306b2ce2a5f57d37867c9
4
- data.tar.gz: 546007fe354d88c117f70469c8cf80ba88fd22415ebb350aa79512c64592be3f
3
+ metadata.gz: 7084b165657179f7954b473653ff58cb634e0444177c95978168f1a481c2a423
4
+ data.tar.gz: aa4497878b0d4eb55b0cd5703011db42c9d8f79fd65da906ce770956f59f032e
5
5
  SHA512:
6
- metadata.gz: 010bb2d49e78af9cfe56cc0480d803f217dd1f644d99d36640fad060e8a70a2be7b4d422057a761a5d0710347649dd44d3da9efde553b4ff23bff62838973af0
7
- data.tar.gz: 5879e39b9d00a6b1c5904a4e71cdf00fc695caa29de7b85ca4dbcbf7ec857d87822c2be42ded362efd3ef2466f8c5db338182e8115cbe6b4b822a6114d5e50d8
6
+ metadata.gz: 95f0001bdba9e31e8025f0e4c693d7d2b60c20c3e51c11b91e8ed9934dfad160f0733db6ed40344b42a4c20a59d5990a346195d08539c7098311f5de095d7b7a
7
+ data.tar.gz: 14a75499dd49dfa219b3dd914f2cb82601a0151a06c325805f3419a2836a228707cf1e63e9bfbecb0253be850b25134d1b8e2fbb6fe12a769b007c3c77f2f13a
@@ -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['PATH_INFO'] = env['REQUEST_URI'] = path_without_extension
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)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class Grover
4
- VERSION = '0.12.3'
4
+ VERSION = '0.13.1'
5
5
  end
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.12.3
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-06-30 00:00:00.000000000 Z
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: '0'
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
  - - ">="