Dhalang 0.1.0 → 0.2.0

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
- SHA1:
3
- metadata.gz: ccf622bf03fb6c32a8ee8a4ab020017d3fc058ac
4
- data.tar.gz: 91f7d4409f8500bc5fa8a8e6012bddfbbbf0ea6f
2
+ SHA256:
3
+ metadata.gz: 976f451a66958a17261f84b2f79c2740323f74efc48c2e003fdb95b3f72111fd
4
+ data.tar.gz: 75e517eea1ec5a62a26a7beccdd3ee5adcf6c257e4cc5eb96782548728e00868
5
5
  SHA512:
6
- metadata.gz: e65ca807af24f423c9dac5c853a13204f0bab8dcfd93aaea269499d6837167b675f24a6a5c5429086747407ff8b9ddee59299dfcf11d1a1274d267c4d43cc30f
7
- data.tar.gz: a6c1b92715bf262445f9a8031897a817af37371b3dd5399571c53e3e0f5cedad1e327ae0a242608b66fa83dd8842114f2a588dc1cb73837495d6dc54cce444c5
6
+ metadata.gz: 3ae7a907a31cf50d0bd5e6f78a27b4ccd77e2a9c6baa13b8430f48f00944af5160844a84ae428f1f0db8cba9afa083560f22d50de1f492052702773d1464ce77
7
+ data.tar.gz: 1244560c1a4cd3b2ae2a1020c79c99f30bfa6ce1b2fe413dabc5d24e7ba66f16101c8f1460b69d35edfbffcaa86c22e6687fed1cef39f2c785bc822bd03bbe66
@@ -1,6 +1,6 @@
1
1
  language: ruby
2
2
  rvm:
3
- - 2.2
3
+ - 2.6
4
4
  addons:
5
5
  chrome: stable
6
6
  install:
@@ -8,8 +8,9 @@ Gem::Specification.new do |spec|
8
8
  spec.version = Dhalang::VERSION
9
9
  spec.authors = ["Niels Steensma"]
10
10
  spec.email = ["nielssteensma@yahoo.nl"]
11
+ spec.licenses = ['MIT']
11
12
 
12
- spec.summary = "Ruby wrapper for Puppeteer. Generate PDF's from HTML and URLs!"
13
+ spec.summary = "Ruby wrapper for Puppeteer. Generate screenshots and PDF's from HTML!"
13
14
  spec.homepage = "https://github.com/NielsSteensma/Dhalang"
14
15
 
15
16
  # Prevent pushing this gem to RubyGems.org. To allow pushes either set the 'allowed_push_host'
@@ -34,4 +35,5 @@ Gem::Specification.new do |spec|
34
35
  spec.add_development_dependency "rake", "~> 10.0"
35
36
  spec.add_development_dependency "rspec", "~> 3.0"
36
37
  spec.add_development_dependency "pdf-reader", "~> 2.2"
38
+ spec.add_development_dependency "fastimage", "~> 1.8"
37
39
  end
@@ -0,0 +1,51 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ Dhalang (0.1.0)
5
+
6
+ GEM
7
+ remote: https://rubygems.org/
8
+ specs:
9
+ Ascii85 (1.0.3)
10
+ addressable (2.3.8)
11
+ afm (0.2.2)
12
+ diff-lcs (1.3)
13
+ fastimage (1.9.0)
14
+ addressable (~> 2.3.5)
15
+ hashery (2.1.2)
16
+ pdf-reader (2.2.0)
17
+ Ascii85 (~> 1.0.0)
18
+ afm (~> 0.2.1)
19
+ hashery (~> 2.0)
20
+ ruby-rc4
21
+ ttfunk
22
+ rake (10.5.0)
23
+ rspec (3.8.0)
24
+ rspec-core (~> 3.8.0)
25
+ rspec-expectations (~> 3.8.0)
26
+ rspec-mocks (~> 3.8.0)
27
+ rspec-core (3.8.0)
28
+ rspec-support (~> 3.8.0)
29
+ rspec-expectations (3.8.2)
30
+ diff-lcs (>= 1.2.0, < 2.0)
31
+ rspec-support (~> 3.8.0)
32
+ rspec-mocks (3.8.0)
33
+ diff-lcs (>= 1.2.0, < 2.0)
34
+ rspec-support (~> 3.8.0)
35
+ rspec-support (3.8.0)
36
+ ruby-rc4 (0.1.5)
37
+ ttfunk (1.5.1)
38
+
39
+ PLATFORMS
40
+ x64-mingw32
41
+
42
+ DEPENDENCIES
43
+ Dhalang!
44
+ bundler (~> 1.16)
45
+ fastimage (~> 1.8)
46
+ pdf-reader (~> 2.2)
47
+ rake (~> 10.0)
48
+ rspec (~> 3.0)
49
+
50
+ BUNDLED WITH
51
+ 1.16.1
data/README.md CHANGED
@@ -12,7 +12,7 @@ More will come.
12
12
  ## Installation
13
13
  Add this line to your application's Gemfile:
14
14
 
15
- gem 'dhalang'
15
+ gem 'Dhalang'
16
16
 
17
17
  And then execute:
18
18
 
@@ -1,3 +1,4 @@
1
1
  module Dhalang
2
2
  require 'PDF'
3
+ require 'Screenshot'
3
4
  end
@@ -1,3 +1,3 @@
1
1
  module Dhalang
2
- VERSION = "0.1.0"
2
+ VERSION = "0.2.0"
3
3
  end
@@ -0,0 +1,51 @@
1
+ require "Dhalang/version"
2
+ require 'uri'
3
+ require 'tempfile'
4
+
5
+ module Dhalang
6
+ class Screenshot
7
+ SCREENSHOT_GENERATOR_JS_PATH = File.expand_path('../js/screenshotgenerator.js', __FILE__)
8
+ PROJECT_PATH = Dir.pwd + '/node_modules/'
9
+
10
+ def self.get_from_url_as_jpeg(url)
11
+ validate_url(url)
12
+ get_image(url, :jpeg)
13
+ end
14
+
15
+ def self.get_from_url_as_png(url)
16
+ validate_url(url)
17
+ get_image(url, :png)
18
+ end
19
+
20
+ private
21
+ def self.validate_url(url)
22
+ if (url !~ URI::DEFAULT_PARSER.regexp[:ABS_URI])
23
+ raise URI::InvalidURIError, 'The given url was invalid, use format http://www.example.com'
24
+ end
25
+ end
26
+
27
+ def self.create_temporary_screenshot_file
28
+ Tempfile.new("png")
29
+ end
30
+
31
+ def self.get_image(url, type)
32
+ temporary_screenshot_save_file = create_temporary_screenshot_file
33
+ begin
34
+ visit_page_with_puppeteer(url, temporary_screenshot_save_file.path, type)
35
+ binary_image_content = get_file_content_as_binary_string(temporary_screenshot_save_file)
36
+ ensure
37
+ temporary_screenshot_save_file.close unless temporary_screenshot_save_file.closed?
38
+ temporary_screenshot_save_file.unlink
39
+ end
40
+ return binary_image_content
41
+ end
42
+
43
+ def self.visit_page_with_puppeteer(page_to_visit, path_to_save_pdf_to, image_save_type)
44
+ system("node #{SCREENSHOT_GENERATOR_JS_PATH} #{page_to_visit} #{Shellwords.escape(path_to_save_pdf_to)} #{Shellwords.escape(PROJECT_PATH)} #{Shellwords.escape(image_save_type)}")
45
+ end
46
+
47
+ def self.get_file_content_as_binary_string(file)
48
+ IO.binread(file.path)
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,26 @@
1
+ 'use strict';
2
+
3
+ const createPdf = async() => {
4
+ module.paths.push(process.argv[4]);
5
+ const puppeteer = require('puppeteer');
6
+ let browser;
7
+ try {
8
+ browser = await puppeteer.launch({args: ['--no-sandbox', '--disable-setuid-sandbox']});
9
+ const page = await browser.newPage();
10
+ await page.goto(process.argv[2], {timeout: 10000, waitUntil: 'networkidle2'});
11
+ await page.waitFor(250);
12
+ await page.screenshot({
13
+ path: process.argv[3],
14
+ type: process.argv[5],
15
+ fullPage: true
16
+ });
17
+ } catch (err) {
18
+ console.log(err.message);
19
+ } finally {
20
+ if (browser) {
21
+ browser.close();
22
+ }
23
+ process.exit();
24
+ }
25
+ };
26
+ createPdf();
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: Dhalang
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Niels Steensma
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-02-07 00:00:00.000000000 Z
11
+ date: 2019-03-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -66,6 +66,20 @@ dependencies:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
68
  version: '2.2'
69
+ - !ruby/object:Gem::Dependency
70
+ name: fastimage
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '1.8'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '1.8'
69
83
  description:
70
84
  email:
71
85
  - nielssteensma@yahoo.nl
@@ -77,16 +91,20 @@ files:
77
91
  - ".travis.yml"
78
92
  - Dhalang.gemspec
79
93
  - Gemfile
94
+ - Gemfile.lock
80
95
  - LICENSE
81
96
  - README.md
82
97
  - Rakefile
83
98
  - lib/Dhalang.rb
84
99
  - lib/Dhalang/version.rb
85
100
  - lib/PDF.rb
101
+ - lib/Screenshot.rb
86
102
  - lib/js/pdfgenerator.js
103
+ - lib/js/screenshotgenerator.js
87
104
  - package.json
88
105
  homepage: https://github.com/NielsSteensma/Dhalang
89
- licenses: []
106
+ licenses:
107
+ - MIT
90
108
  metadata:
91
109
  allowed_push_host: https://rubygems.org
92
110
  post_install_message:
@@ -105,8 +123,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
105
123
  version: '0'
106
124
  requirements: []
107
125
  rubyforge_project:
108
- rubygems_version: 2.5.2
126
+ rubygems_version: 2.7.6
109
127
  signing_key:
110
128
  specification_version: 4
111
- summary: Ruby wrapper for Puppeteer. Generate PDF's from HTML and URLs!
129
+ summary: Ruby wrapper for Puppeteer. Generate screenshots and PDF's from HTML!
112
130
  test_files: []