html_to_pdf_conversion 0.1.2 → 0.1.3
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/example/example.rb +17 -1
- data/html_to_pdf_conversion.gemspec +1 -0
- data/html_to_pdf_conversion.iml +1 -0
- data/lib/html_to_pdf_conversion.rb +121 -14
- data/lib/html_to_pdf_conversion/missing_argument_exception.rb +13 -0
- data/lib/html_to_pdf_conversion/version.rb +1 -1
- metadata +17 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 596ad2143fb6680f5423a499fba355ed0cf0e635
|
4
|
+
data.tar.gz: 694c0f2710f4c51b321d4dbb28e544628a5dfbf2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 103bc53b2404c5854e37decc5abe126aae103812c372779e87d056d7f281f1684f240af93ab64ca0545984e987fb943b00e6565c4af0d4a681de38c155fb91d9
|
7
|
+
data.tar.gz: ae19dfb75c45008ba8aef994f48c3accf55bb01aed190bc7b3b26775f2c1337c9c3e5096e29adb35249082a110a26809145a653ee681151fa6b425c602317263
|
data/example/example.rb
CHANGED
@@ -1,7 +1,23 @@
|
|
1
1
|
require 'html_to_pdf_conversion'
|
2
2
|
require 'dotenv'
|
3
3
|
|
4
|
+
# Load Environment Variables
|
4
5
|
Dotenv.load
|
5
6
|
|
7
|
+
# Declare the Client instance passing in the authentication parameters
|
6
8
|
@client = PDFlayer::Client.new(ENV['ACCESS_KEY'], ENV['SECRET_KEY'])
|
7
|
-
|
9
|
+
|
10
|
+
# Set the URL to get as PDF, we take a random URL from Wikipedia
|
11
|
+
document_url = 'https://en.wikipedia.org/wiki/Special:Random'
|
12
|
+
|
13
|
+
# We declare the options
|
14
|
+
options = PDFlayer::ConvertOptions.new()
|
15
|
+
options.export = File.join('tmp', SecureRandom.uuid() +'.pdf')
|
16
|
+
|
17
|
+
# We make the call to convert
|
18
|
+
response = @client.convert(document_url, options)
|
19
|
+
|
20
|
+
# If its a success, we print a message to the user
|
21
|
+
if ! response.nil?
|
22
|
+
puts 'SUCCESS : PDF fetched...'
|
23
|
+
end
|
@@ -20,6 +20,7 @@ Gem::Specification.new do |spec|
|
|
20
20
|
spec.require_paths = ["lib"]
|
21
21
|
|
22
22
|
spec.add_runtime_dependency "httparty"
|
23
|
+
spec.add_runtime_dependency "hashable"
|
23
24
|
|
24
25
|
spec.add_development_dependency "bundler", "~> 1.11"
|
25
26
|
spec.add_development_dependency "rake", "~> 10.0"
|
data/html_to_pdf_conversion.iml
CHANGED
@@ -18,6 +18,7 @@
|
|
18
18
|
<orderEntry type="library" scope="PROVIDED" name="bundler (v1.11.2, ruby-2.0.0-p645) [gem]" level="application" />
|
19
19
|
<orderEntry type="library" scope="PROVIDED" name="diff-lcs (v1.2.5, ruby-2.0.0-p645) [gem]" level="application" />
|
20
20
|
<orderEntry type="library" scope="PROVIDED" name="dotenv (v2.1.0, ruby-2.0.0-p645) [gem]" level="application" />
|
21
|
+
<orderEntry type="library" scope="PROVIDED" name="hashable (v0.1.2, ruby-2.0.0-p645) [gem]" level="application" />
|
21
22
|
<orderEntry type="library" scope="PROVIDED" name="httparty (v0.13.7, ruby-2.0.0-p645) [gem]" level="application" />
|
22
23
|
<orderEntry type="library" scope="PROVIDED" name="json (v1.8.3, ruby-2.0.0-p645) [gem]" level="application" />
|
23
24
|
<orderEntry type="library" scope="PROVIDED" name="multi_xml (v0.5.5, ruby-2.0.0-p645) [gem]" level="application" />
|
@@ -1,6 +1,8 @@
|
|
1
1
|
require 'digest'
|
2
2
|
require "httparty"
|
3
|
+
require "hashable"
|
3
4
|
require "html_to_pdf_conversion/version"
|
5
|
+
require "html_to_pdf_conversion/missing_argument_exception"
|
4
6
|
|
5
7
|
module PDFlayer
|
6
8
|
|
@@ -11,48 +13,153 @@ module PDFlayer
|
|
11
13
|
base_uri 'api.pdflayer.com/api'
|
12
14
|
|
13
15
|
def initialize(access_key, secret_key)
|
16
|
+
|
17
|
+
if access_key.nil?
|
18
|
+
raise PDFlayer::MissingArgumentException.new 'access_key'
|
19
|
+
end
|
20
|
+
|
21
|
+
if secret_key.nil?
|
22
|
+
raise PDFlayer::MissingArgumentException.new 'secret_key'
|
23
|
+
end
|
24
|
+
|
14
25
|
@access_key = access_key
|
15
26
|
@secret_key = secret_key
|
27
|
+
|
16
28
|
end
|
17
29
|
|
30
|
+
|
18
31
|
def convert(document_url, options = {})
|
19
32
|
|
33
|
+
# Create a shallow copy so we don't manipulate the original reference
|
34
|
+
query = options.dup
|
35
|
+
|
36
|
+
# Generate the SecretKey for the request
|
20
37
|
md5 = Digest::MD5.new
|
21
38
|
md5.update document_url + @secret_key
|
39
|
+
secret_key = md5.hexdigest
|
40
|
+
|
41
|
+
# Populate the Query
|
42
|
+
query.access_key = @access_key
|
43
|
+
query.secret_key = secret_key
|
44
|
+
query.document_url = document_url
|
45
|
+
|
46
|
+
# We then create the Request
|
47
|
+
req = ConvertRequest.new(query)
|
22
48
|
|
23
|
-
|
24
|
-
|
25
|
-
access_key: @access_key,
|
26
|
-
document_url: document_url,
|
27
|
-
secret_key: md5.hexdigest
|
28
|
-
},
|
29
|
-
export: options[:export]
|
30
|
-
}
|
49
|
+
# We create a Hash of the request so we can send it via HTTP
|
50
|
+
req_dto = req.to_dh
|
31
51
|
|
32
52
|
begin
|
33
53
|
|
34
|
-
|
54
|
+
# We make the actual request
|
55
|
+
res = self.class.get('/convert', req_dto)
|
56
|
+
|
57
|
+
# We ensure that we tap the response so we can use the results
|
35
58
|
res.inspect
|
36
59
|
|
37
|
-
|
38
|
-
|
60
|
+
# If we have an export option passed in, we save it to local file system
|
61
|
+
if !options.export.nil?
|
39
62
|
begin
|
40
|
-
File.open(
|
63
|
+
File.open(options.export, 'a+') do |file|
|
41
64
|
file.write(res.body)
|
42
65
|
end
|
43
66
|
end
|
44
67
|
end
|
45
68
|
|
69
|
+
# Finally we return the parsed binary response
|
46
70
|
return res.parsed_response
|
47
71
|
|
48
72
|
rescue => e
|
49
73
|
puts e.inspect
|
74
|
+
return
|
50
75
|
|
51
76
|
ensure
|
52
|
-
|
53
|
-
@options = nil
|
77
|
+
# Clean Up
|
54
78
|
|
55
79
|
end
|
56
80
|
end
|
57
81
|
end
|
82
|
+
|
83
|
+
|
84
|
+
class ConvertRequest
|
85
|
+
|
86
|
+
include Hashable
|
87
|
+
|
88
|
+
attr_accessor :query
|
89
|
+
|
90
|
+
def initialize(query = {})
|
91
|
+
self.query = query;
|
92
|
+
end
|
93
|
+
|
94
|
+
end
|
95
|
+
|
96
|
+
|
97
|
+
class ConvertOptions
|
98
|
+
|
99
|
+
include Hashable
|
100
|
+
|
101
|
+
attr_accessor :access_key
|
102
|
+
attr_accessor :secret_key
|
103
|
+
|
104
|
+
attr_accessor :document_url
|
105
|
+
attr_accessor :document_html
|
106
|
+
|
107
|
+
attr_accessor :document_name
|
108
|
+
attr_accessor :export
|
109
|
+
attr_accessor :document_unit
|
110
|
+
attr_accessor :user_agent
|
111
|
+
attr_accessor :text_encoding
|
112
|
+
attr_accessor :ttl
|
113
|
+
attr_accessor :force
|
114
|
+
attr_accessor :inline
|
115
|
+
attr_accessor :auth_user
|
116
|
+
attr_accessor :auth_password
|
117
|
+
attr_accessor :encryption
|
118
|
+
attr_accessor :no_images
|
119
|
+
attr_accessor :no_hyperlinks
|
120
|
+
attr_accessor :accept_lang
|
121
|
+
attr_accessor :no_backgrounds
|
122
|
+
attr_accessor :no_javascript
|
123
|
+
attr_accessor :use_print_media
|
124
|
+
attr_accessor :grayscale
|
125
|
+
attr_accessor :low_quality
|
126
|
+
attr_accessor :forms
|
127
|
+
attr_accessor :no_print
|
128
|
+
attr_accessor :no_modify
|
129
|
+
attr_accessor :no_copy
|
130
|
+
attr_accessor :page_size
|
131
|
+
attr_accessor :page_width
|
132
|
+
attr_accessor :page_height
|
133
|
+
attr_accessor :orientation
|
134
|
+
attr_accessor :header_text
|
135
|
+
attr_accessor :header_align
|
136
|
+
attr_accessor :header_url
|
137
|
+
attr_accessor :header_html
|
138
|
+
attr_accessor :header_spacing
|
139
|
+
attr_accessor :footer_text
|
140
|
+
attr_accessor :footer_align
|
141
|
+
attr_accessor :footer_url
|
142
|
+
attr_accessor :footer_html
|
143
|
+
attr_accessor :footer_spacing
|
144
|
+
attr_accessor :css_url
|
145
|
+
attr_accessor :delay
|
146
|
+
attr_accessor :dpi
|
147
|
+
attr_accessor :zoom
|
148
|
+
attr_accessor :page_numbering_offset
|
149
|
+
attr_accessor :watermark_url
|
150
|
+
attr_accessor :watermark_opacity
|
151
|
+
attr_accessor :watermark_offset_x
|
152
|
+
attr_accessor :watermark_offset_y
|
153
|
+
attr_accessor :watermark_in_background
|
154
|
+
attr_accessor :title
|
155
|
+
attr_accessor :subject
|
156
|
+
attr_accessor :creator
|
157
|
+
attr_accessor :author
|
158
|
+
|
159
|
+
def initialize()
|
160
|
+
@query = nil
|
161
|
+
end
|
162
|
+
|
163
|
+
end
|
164
|
+
|
58
165
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: html_to_pdf_conversion
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Peter Andreas Moelgaard
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-02-
|
11
|
+
date: 2016-02-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: httparty
|
@@ -24,6 +24,20 @@ dependencies:
|
|
24
24
|
- - '>='
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: hashable
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - '>='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - '>='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
27
41
|
- !ruby/object:Gem::Dependency
|
28
42
|
name: bundler
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -114,6 +128,7 @@ files:
|
|
114
128
|
- html_to_pdf_conversion.gemspec
|
115
129
|
- html_to_pdf_conversion.iml
|
116
130
|
- lib/html_to_pdf_conversion.rb
|
131
|
+
- lib/html_to_pdf_conversion/missing_argument_exception.rb
|
117
132
|
- lib/html_to_pdf_conversion/version.rb
|
118
133
|
homepage: https://github.com/pmoelgaard/html_to_pdf_conversion
|
119
134
|
licenses:
|