Dhalang 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
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: []