breezy_pdf_lite 0.0.3 → 0.1.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/.github/workflows/ruby.yml +44 -0
- data/.travis.yml +5 -1
- data/Gemfile.lock +22 -15
- data/breezy_pdf_lite.gemspec +4 -3
- data/lib/breezy_pdf_lite.rb +8 -1
- data/lib/breezy_pdf_lite/client.rb +6 -1
- data/lib/breezy_pdf_lite/intercept.rb +1 -1
- data/lib/breezy_pdf_lite/intercept/base.rb +3 -35
- data/lib/breezy_pdf_lite/intercept/html.rb +17 -32
- data/lib/breezy_pdf_lite/interceptor.rb +32 -15
- data/lib/breezy_pdf_lite/middleware.rb +19 -1
- data/lib/breezy_pdf_lite/render_request.rb +7 -6
- data/lib/breezy_pdf_lite/response.rb +40 -0
- data/lib/breezy_pdf_lite/version.rb +1 -1
- metadata +26 -10
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 8fbaacf2d5f7019593c6e8bc787f9b4b86e00094c8488a530043404ec10879e3
|
|
4
|
+
data.tar.gz: 9d3705028fb7094808165c1019413eea73cc82b091515a8868e7fb0962e87290
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 83b673d531dfe0c3f610a64917f6f9ac4ca78e0566b24e89d02a59106ce06722b641ebf6f3c483e4455d8d35a31772ac3cbb8ef6b64559504833b49c5d77762a
|
|
7
|
+
data.tar.gz: 27afdc98b8847fcee7b880ce81494507da83e7c43eebe4d950a6925f44c57ed7cdb43eedb0917025d14c3bdda10c0c950480b65999f2959c72c14fd31f1b5078
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# This workflow uses actions that are not certified by GitHub.
|
|
2
|
+
# They are provided by a third-party and are governed by
|
|
3
|
+
# separate terms of service, privacy policy, and support
|
|
4
|
+
# documentation.
|
|
5
|
+
# This workflow will download a prebuilt Ruby version, install dependencies and run tests with Rake
|
|
6
|
+
# For more information see: https://github.com/marketplace/actions/setup-ruby-jruby-and-truffleruby
|
|
7
|
+
|
|
8
|
+
name: Ruby
|
|
9
|
+
|
|
10
|
+
on:
|
|
11
|
+
push:
|
|
12
|
+
branches: [ master ]
|
|
13
|
+
pull_request:
|
|
14
|
+
branches: [ master ]
|
|
15
|
+
|
|
16
|
+
jobs:
|
|
17
|
+
test:
|
|
18
|
+
|
|
19
|
+
runs-on: ubuntu-latest
|
|
20
|
+
|
|
21
|
+
steps:
|
|
22
|
+
- uses: actions/checkout@v2
|
|
23
|
+
- name: Set up Ruby
|
|
24
|
+
# To automatically get bug fixes and new Ruby versions for ruby/setup-ruby,
|
|
25
|
+
# change this to (see https://github.com/ruby/setup-ruby#versioning):
|
|
26
|
+
# uses: ruby/setup-ruby@v1
|
|
27
|
+
uses: ruby/setup-ruby@ec106b438a1ff6ff109590de34ddc62c540232e0
|
|
28
|
+
with:
|
|
29
|
+
ruby-version: 2.6
|
|
30
|
+
- name: Install dependencies
|
|
31
|
+
run: bundle install
|
|
32
|
+
- name: Run tests
|
|
33
|
+
run: bundle exec rake
|
|
34
|
+
|
|
35
|
+
lint:
|
|
36
|
+
|
|
37
|
+
runs-on: ubuntu-latest
|
|
38
|
+
|
|
39
|
+
steps:
|
|
40
|
+
- name: Rubocop checks
|
|
41
|
+
uses: gimenete/rubocop-action@1.0
|
|
42
|
+
env:
|
|
43
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
44
|
+
|
data/.travis.yml
CHANGED
data/Gemfile.lock
CHANGED
|
@@ -1,29 +1,35 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
breezy_pdf_lite (0.
|
|
4
|
+
breezy_pdf_lite (0.1.1)
|
|
5
5
|
|
|
6
6
|
GEM
|
|
7
7
|
remote: https://rubygems.org/
|
|
8
8
|
specs:
|
|
9
|
-
ast (2.4.
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
9
|
+
ast (2.4.1)
|
|
10
|
+
minitest (5.14.1)
|
|
11
|
+
mocha (1.11.2)
|
|
12
|
+
parallel (1.19.2)
|
|
13
|
+
parser (2.7.1.4)
|
|
14
|
+
ast (~> 2.4.1)
|
|
15
|
+
rack (2.2.3)
|
|
16
16
|
rainbow (3.0.0)
|
|
17
17
|
rake (13.0.1)
|
|
18
|
-
|
|
19
|
-
|
|
18
|
+
regexp_parser (1.7.1)
|
|
19
|
+
rexml (3.2.4)
|
|
20
|
+
rubocop (0.89.1)
|
|
20
21
|
parallel (~> 1.10)
|
|
21
|
-
parser (>= 2.7.
|
|
22
|
+
parser (>= 2.7.1.1)
|
|
22
23
|
rainbow (>= 2.2.2, < 4.0)
|
|
24
|
+
regexp_parser (>= 1.7)
|
|
25
|
+
rexml
|
|
26
|
+
rubocop-ast (>= 0.3.0, < 1.0)
|
|
23
27
|
ruby-progressbar (~> 1.7)
|
|
24
|
-
unicode-display_width (>= 1.4.0, <
|
|
28
|
+
unicode-display_width (>= 1.4.0, < 2.0)
|
|
29
|
+
rubocop-ast (0.3.0)
|
|
30
|
+
parser (>= 2.7.1.4)
|
|
25
31
|
ruby-progressbar (1.10.1)
|
|
26
|
-
unicode-display_width (1.
|
|
32
|
+
unicode-display_width (1.7.0)
|
|
27
33
|
|
|
28
34
|
PLATFORMS
|
|
29
35
|
ruby
|
|
@@ -32,9 +38,10 @@ DEPENDENCIES
|
|
|
32
38
|
breezy_pdf_lite!
|
|
33
39
|
bundler (~> 2.0)
|
|
34
40
|
minitest (~> 5.0)
|
|
35
|
-
|
|
41
|
+
mocha (= 1.11.2)
|
|
42
|
+
rack (~> 2.0)
|
|
36
43
|
rake (~> 13.0)
|
|
37
|
-
rubocop (= 0.
|
|
44
|
+
rubocop (= 0.89.1)
|
|
38
45
|
|
|
39
46
|
BUNDLED WITH
|
|
40
47
|
2.1.2
|
data/breezy_pdf_lite.gemspec
CHANGED
|
@@ -11,7 +11,7 @@ Gem::Specification.new do |spec|
|
|
|
11
11
|
spec.email = ["daniel@prowestech.com"]
|
|
12
12
|
|
|
13
13
|
spec.summary = "Ruby/rack middleware for BreezyPDF Lite. HTML to PDF."
|
|
14
|
-
spec.license = "
|
|
14
|
+
spec.license = "GPL-3.0"
|
|
15
15
|
|
|
16
16
|
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
|
17
17
|
f.match(%r{^(test|spec|features)/})
|
|
@@ -20,9 +20,10 @@ Gem::Specification.new do |spec|
|
|
|
20
20
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
|
21
21
|
spec.require_paths = ["lib"]
|
|
22
22
|
|
|
23
|
+
spec.add_development_dependency "rack", "~> 2.0"
|
|
23
24
|
spec.add_development_dependency "bundler", "~> 2.0"
|
|
24
25
|
spec.add_development_dependency "minitest", "~> 5.0"
|
|
25
|
-
spec.add_development_dependency "
|
|
26
|
+
spec.add_development_dependency "mocha", "1.11.2"
|
|
26
27
|
spec.add_development_dependency "rake", "~> 13.0"
|
|
27
|
-
spec.add_development_dependency "rubocop", "0.
|
|
28
|
+
spec.add_development_dependency "rubocop", "0.89.1"
|
|
28
29
|
end
|
data/lib/breezy_pdf_lite.rb
CHANGED
|
@@ -17,7 +17,8 @@ module BreezyPDFLite
|
|
|
17
17
|
autoload :Middleware, "breezy_pdf_lite/middleware"
|
|
18
18
|
autoload :RenderRequest, "breezy_pdf_lite/render_request"
|
|
19
19
|
|
|
20
|
-
|
|
20
|
+
Error = Class.new(StandardError)
|
|
21
|
+
RenderError = Class.new(Error)
|
|
21
22
|
|
|
22
23
|
mattr_accessor :secret_api_key
|
|
23
24
|
@@secret_api_key = nil
|
|
@@ -28,6 +29,12 @@ module BreezyPDFLite
|
|
|
28
29
|
mattr_accessor :middleware_path_matchers
|
|
29
30
|
@@middleware_path_matchers = [/\.pdf/]
|
|
30
31
|
|
|
32
|
+
mattr_accessor :open_timeout
|
|
33
|
+
@@open_timeout = 30
|
|
34
|
+
|
|
35
|
+
mattr_accessor :read_timeout
|
|
36
|
+
@@read_timeout = 30
|
|
37
|
+
|
|
31
38
|
def self.setup
|
|
32
39
|
yield self
|
|
33
40
|
end
|
|
@@ -5,7 +5,12 @@ module BreezyPDFLite
|
|
|
5
5
|
class Client
|
|
6
6
|
def post(path, body)
|
|
7
7
|
uri = URI.parse(BreezyPDFLite.base_url + path)
|
|
8
|
-
|
|
8
|
+
|
|
9
|
+
http = Net::HTTP.new(uri.host, uri.port)
|
|
10
|
+
http.use_ssl = uri.scheme == "https"
|
|
11
|
+
http.open_timeout = BreezyPDFLite.open_timeout
|
|
12
|
+
http.read_timeout = BreezyPDFLite.read_timeout
|
|
13
|
+
|
|
9
14
|
request = Net::HTTP::Post.new(uri.request_uri, headers)
|
|
10
15
|
|
|
11
16
|
request.body = body
|
|
@@ -3,42 +3,10 @@
|
|
|
3
3
|
module BreezyPDFLite::Intercept
|
|
4
4
|
# :nodoc
|
|
5
5
|
class Base
|
|
6
|
-
attr_reader :
|
|
6
|
+
attr_reader :body
|
|
7
7
|
|
|
8
|
-
def initialize(
|
|
9
|
-
@
|
|
10
|
-
@env = env
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
private
|
|
14
|
-
|
|
15
|
-
def rendered_url
|
|
16
|
-
"#{base_url}#{path}#{query_string}"
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
def requested_url
|
|
20
|
-
"#{env['rack.url_scheme']}://#{env['SERVER_NAME']}#{port}" \
|
|
21
|
-
"#{env['PATH_INFO']}#{query_string}"
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
def base_url
|
|
25
|
-
"#{env['rack.url_scheme']}://#{env['SERVER_NAME']}#{port}"
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
def port
|
|
29
|
-
":#{env['SERVER_PORT']}" unless [80, 443].include?(env["SERVER_PORT"].to_i)
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
def path
|
|
33
|
-
BreezyPDFLite.middleware_path_matchers.reduce(env["PATH_INFO"]) do |path, matcher|
|
|
34
|
-
path.gsub(matcher, "")
|
|
35
|
-
end
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
def query_string
|
|
39
|
-
return "" if env["QUERY_STRING"].nil?
|
|
40
|
-
|
|
41
|
-
env["QUERY_STRING"] == "" ? "" : "?#{env['QUERY_STRING']}"
|
|
8
|
+
def initialize(body)
|
|
9
|
+
@body = body
|
|
42
10
|
end
|
|
43
11
|
end
|
|
44
12
|
end
|
|
@@ -1,49 +1,34 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
+
require "rack/request"
|
|
4
|
+
require "rack/file"
|
|
5
|
+
|
|
3
6
|
module BreezyPDFLite::Intercept
|
|
4
|
-
#
|
|
7
|
+
# Takes the App's response body, and submits it to the breezypdf lite endpoint
|
|
8
|
+
# resulting in a file. File is then served with Rack::File
|
|
5
9
|
class HTML < Base
|
|
6
10
|
def call
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
render_request = BreezyPDFLite::RenderRequest.new(body).submit
|
|
11
|
+
request = Rack::Request.new({})
|
|
12
|
+
path = render_request_file.path
|
|
10
13
|
|
|
11
|
-
|
|
12
|
-
201,
|
|
13
|
-
{
|
|
14
|
-
"Content-Type" => "application/pdf",
|
|
15
|
-
"Content-Length" => render_request.header["Content-Length"],
|
|
16
|
-
"Content-Disposition" => render_request.header["Content-Disposition"]
|
|
17
|
-
},
|
|
18
|
-
[render_request.body]
|
|
19
|
-
]
|
|
20
|
-
rescue BreezyPDFLite::Intercept::UnRenderable
|
|
21
|
-
response
|
|
14
|
+
Rack::File.new(path, response_headers).serving(request, path)
|
|
22
15
|
end
|
|
23
16
|
|
|
24
17
|
private
|
|
25
18
|
|
|
26
|
-
def
|
|
27
|
-
@
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
def headers
|
|
31
|
-
@headers ||= response[1]
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
def body
|
|
35
|
-
@body ||= response[2].respond_to?(:body) ? response[2].body : response[2].join
|
|
19
|
+
def render_request
|
|
20
|
+
@render_request ||= BreezyPDFLite::RenderRequest.new(body)
|
|
36
21
|
end
|
|
37
22
|
|
|
38
|
-
def
|
|
39
|
-
@
|
|
23
|
+
def render_request_file
|
|
24
|
+
@render_request_file ||= render_request.to_file
|
|
40
25
|
end
|
|
41
26
|
|
|
42
|
-
def
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
27
|
+
def response_headers
|
|
28
|
+
@response_headers ||= {
|
|
29
|
+
"Content-Type" => "application/pdf",
|
|
30
|
+
"Content-Disposition" => render_request.response.header["Content-Disposition"]
|
|
31
|
+
}
|
|
47
32
|
end
|
|
48
33
|
end
|
|
49
34
|
end
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
module BreezyPDFLite
|
|
4
|
-
# Intercept a Rack request
|
|
4
|
+
# Intercept a Rack request, determining if the app's response should
|
|
5
|
+
# be intercepted or simply returned
|
|
5
6
|
class Interceptor
|
|
6
7
|
attr_reader :app, :env
|
|
7
8
|
|
|
@@ -10,34 +11,50 @@ module BreezyPDFLite
|
|
|
10
11
|
@env = env
|
|
11
12
|
end
|
|
12
13
|
|
|
13
|
-
def
|
|
14
|
-
if
|
|
15
|
-
|
|
14
|
+
def call
|
|
15
|
+
if (200..299).cover?(app_response_status) # Did the app respond well?
|
|
16
|
+
Intercept::HTML.new(app_response_body).call # Try to return a PDF
|
|
16
17
|
else
|
|
17
|
-
app
|
|
18
|
+
app_response # Bad app response, just send respond with that
|
|
18
19
|
end
|
|
19
20
|
end
|
|
20
21
|
|
|
21
22
|
private
|
|
22
23
|
|
|
23
|
-
def
|
|
24
|
-
|
|
24
|
+
def app_response
|
|
25
|
+
@app_response ||= app.call(doctored_env)
|
|
25
26
|
end
|
|
26
27
|
|
|
27
|
-
def
|
|
28
|
-
|
|
28
|
+
def app_response_status
|
|
29
|
+
@app_response_status ||= app_response[0].to_i
|
|
29
30
|
end
|
|
30
31
|
|
|
31
|
-
def
|
|
32
|
-
|
|
32
|
+
def app_response_headers
|
|
33
|
+
@app_response_headers ||= app_response[1]
|
|
33
34
|
end
|
|
34
35
|
|
|
35
|
-
def
|
|
36
|
-
|
|
36
|
+
def app_response_body
|
|
37
|
+
if app_response[2].respond_to?(:join)
|
|
38
|
+
app_response[2].join
|
|
39
|
+
elsif app_response[2].respond_to?(:each)
|
|
40
|
+
content = []
|
|
41
|
+
app_response[2].each { |part| content << part }
|
|
42
|
+
|
|
43
|
+
content.join
|
|
44
|
+
else
|
|
45
|
+
app_response[2]
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def doctored_env
|
|
50
|
+
env.dup.tap do |hash|
|
|
51
|
+
hash["HTTP_ACCEPT"] = "text/html"
|
|
52
|
+
hash["PATH_INFO"] = path
|
|
53
|
+
end
|
|
37
54
|
end
|
|
38
55
|
|
|
39
|
-
def
|
|
40
|
-
|
|
56
|
+
def path
|
|
57
|
+
env["PATH_INFO"].gsub(/\.pdf/, "")
|
|
41
58
|
end
|
|
42
59
|
end
|
|
43
60
|
end
|
|
@@ -2,13 +2,31 @@
|
|
|
2
2
|
|
|
3
3
|
module BreezyPDFLite
|
|
4
4
|
# Rack Middleware for BreezyPDFLite
|
|
5
|
+
# Determines if the request should be intercepted or not
|
|
5
6
|
class Middleware
|
|
6
7
|
def initialize(app, _options = {})
|
|
7
8
|
@app = app
|
|
8
9
|
end
|
|
9
10
|
|
|
10
11
|
def call(env)
|
|
11
|
-
|
|
12
|
+
if intercept?(env)
|
|
13
|
+
Interceptor.new(@app, env).call
|
|
14
|
+
else
|
|
15
|
+
@app.call(env)
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
private
|
|
20
|
+
|
|
21
|
+
# Is this request applicable?
|
|
22
|
+
def intercept?(env)
|
|
23
|
+
env["REQUEST_METHOD"].match?(/get/i) && matching_uri?(env)
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def matching_uri?(env)
|
|
27
|
+
BreezyPDFLite.middleware_path_matchers.any? do |regex|
|
|
28
|
+
env["REQUEST_URI"].match?(regex)
|
|
29
|
+
end
|
|
12
30
|
end
|
|
13
31
|
end
|
|
14
32
|
end
|
|
@@ -2,18 +2,19 @@
|
|
|
2
2
|
|
|
3
3
|
module BreezyPDFLite
|
|
4
4
|
# Request conversion of a HTML string to PDF
|
|
5
|
+
# If the response isn't a 201, raise an error
|
|
5
6
|
class RenderRequest
|
|
6
7
|
def initialize(body)
|
|
7
8
|
@body = body
|
|
8
9
|
end
|
|
9
10
|
|
|
10
|
-
def
|
|
11
|
-
|
|
11
|
+
def response
|
|
12
|
+
@response ||= submit.tap do |resp|
|
|
13
|
+
raise RenderError, "#{resp.code}: #{resp.body}" if resp.code != "201"
|
|
14
|
+
end
|
|
12
15
|
end
|
|
13
16
|
|
|
14
17
|
def to_file
|
|
15
|
-
raise BreezyPDFLiteError, "#{response.code}: #{response.body}" if response.code != "201"
|
|
16
|
-
|
|
17
18
|
@to_file ||= Tempfile.new(%w[response .pdf]).tap do |file|
|
|
18
19
|
file.binmode
|
|
19
20
|
file.write response.body
|
|
@@ -24,8 +25,8 @@ module BreezyPDFLite
|
|
|
24
25
|
|
|
25
26
|
private
|
|
26
27
|
|
|
27
|
-
def
|
|
28
|
-
@
|
|
28
|
+
def submit
|
|
29
|
+
client.post("/render/html", @body)
|
|
29
30
|
end
|
|
30
31
|
|
|
31
32
|
def client
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module BreezyPDFLite
|
|
4
|
+
# RenderRequest -> Net::HTTPResponse wrapper that is streaming compatable
|
|
5
|
+
class Response
|
|
6
|
+
def initialize(response)
|
|
7
|
+
@response = response
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def status
|
|
11
|
+
@status ||= @response.code.to_i
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def headers
|
|
15
|
+
{
|
|
16
|
+
"Content-Type" => "application/pdf",
|
|
17
|
+
"Content-Length" => @response.header["Content-Length"],
|
|
18
|
+
"Content-Disposition" => @response.header["Content-Disposition"]
|
|
19
|
+
}
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def each(&blk)
|
|
23
|
+
@response.read_body(&blk)
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def body
|
|
27
|
+
io = StringIO.new
|
|
28
|
+
io.binmode
|
|
29
|
+
|
|
30
|
+
each do |chunk|
|
|
31
|
+
io.write chunk
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
io.flush
|
|
35
|
+
io.rewind
|
|
36
|
+
|
|
37
|
+
io
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
metadata
CHANGED
|
@@ -1,15 +1,29 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: breezy_pdf_lite
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.1.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Daniel Westendorf
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2020-
|
|
11
|
+
date: 2020-08-19 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
|
+
- !ruby/object:Gem::Dependency
|
|
14
|
+
name: rack
|
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
|
16
|
+
requirements:
|
|
17
|
+
- - "~>"
|
|
18
|
+
- !ruby/object:Gem::Version
|
|
19
|
+
version: '2.0'
|
|
20
|
+
type: :development
|
|
21
|
+
prerelease: false
|
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
23
|
+
requirements:
|
|
24
|
+
- - "~>"
|
|
25
|
+
- !ruby/object:Gem::Version
|
|
26
|
+
version: '2.0'
|
|
13
27
|
- !ruby/object:Gem::Dependency
|
|
14
28
|
name: bundler
|
|
15
29
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -39,19 +53,19 @@ dependencies:
|
|
|
39
53
|
- !ruby/object:Gem::Version
|
|
40
54
|
version: '5.0'
|
|
41
55
|
- !ruby/object:Gem::Dependency
|
|
42
|
-
name:
|
|
56
|
+
name: mocha
|
|
43
57
|
requirement: !ruby/object:Gem::Requirement
|
|
44
58
|
requirements:
|
|
45
|
-
- -
|
|
59
|
+
- - '='
|
|
46
60
|
- !ruby/object:Gem::Version
|
|
47
|
-
version:
|
|
61
|
+
version: 1.11.2
|
|
48
62
|
type: :development
|
|
49
63
|
prerelease: false
|
|
50
64
|
version_requirements: !ruby/object:Gem::Requirement
|
|
51
65
|
requirements:
|
|
52
|
-
- -
|
|
66
|
+
- - '='
|
|
53
67
|
- !ruby/object:Gem::Version
|
|
54
|
-
version:
|
|
68
|
+
version: 1.11.2
|
|
55
69
|
- !ruby/object:Gem::Dependency
|
|
56
70
|
name: rake
|
|
57
71
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -72,14 +86,14 @@ dependencies:
|
|
|
72
86
|
requirements:
|
|
73
87
|
- - '='
|
|
74
88
|
- !ruby/object:Gem::Version
|
|
75
|
-
version: 0.
|
|
89
|
+
version: 0.89.1
|
|
76
90
|
type: :development
|
|
77
91
|
prerelease: false
|
|
78
92
|
version_requirements: !ruby/object:Gem::Requirement
|
|
79
93
|
requirements:
|
|
80
94
|
- - '='
|
|
81
95
|
- !ruby/object:Gem::Version
|
|
82
|
-
version: 0.
|
|
96
|
+
version: 0.89.1
|
|
83
97
|
description:
|
|
84
98
|
email:
|
|
85
99
|
- daniel@prowestech.com
|
|
@@ -88,6 +102,7 @@ extensions: []
|
|
|
88
102
|
extra_rdoc_files: []
|
|
89
103
|
files:
|
|
90
104
|
- ".gitattributes"
|
|
105
|
+
- ".github/workflows/ruby.yml"
|
|
91
106
|
- ".gitignore"
|
|
92
107
|
- ".hound.yml"
|
|
93
108
|
- ".rubocop.yml"
|
|
@@ -111,11 +126,12 @@ files:
|
|
|
111
126
|
- lib/breezy_pdf_lite/interceptor.rb
|
|
112
127
|
- lib/breezy_pdf_lite/middleware.rb
|
|
113
128
|
- lib/breezy_pdf_lite/render_request.rb
|
|
129
|
+
- lib/breezy_pdf_lite/response.rb
|
|
114
130
|
- lib/breezy_pdf_lite/util.rb
|
|
115
131
|
- lib/breezy_pdf_lite/version.rb
|
|
116
132
|
homepage:
|
|
117
133
|
licenses:
|
|
118
|
-
-
|
|
134
|
+
- GPL-3.0
|
|
119
135
|
metadata: {}
|
|
120
136
|
post_install_message:
|
|
121
137
|
rdoc_options: []
|