poleica 0.9.12 → 0.10.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 +6 -14
- data/.travis.yml +2 -1
- data/CHANGELOG.md +30 -12
- data/Gemfile +5 -2
- data/Gemfile.lock +69 -146
- data/README.md +22 -12
- data/Rakefile +2 -3
- data/lib/poleica/configuration.rb +1 -0
- data/lib/poleica/converters/coercive.rb +3 -2
- data/lib/poleica/converters/convertible.rb +2 -3
- data/lib/poleica/converters/general.rb +0 -1
- data/lib/poleica/converters/graphics_magick/convert_options_generator.rb +69 -0
- data/lib/poleica/converters/graphics_magick/graphics_magick.rb +37 -0
- data/lib/poleica/converters/graphics_magick/thumbnail_options_generator.rb +108 -0
- data/lib/poleica/converters/libre_office.rb +13 -13
- data/lib/poleica/converters/utils.rb +36 -19
- data/lib/poleica/errors.rb +1 -0
- data/lib/poleica/pathable.rb +2 -2
- data/lib/poleica/polei.rb +1 -1
- data/lib/poleica/types/archive.rb +1 -2
- data/lib/poleica/types/document.rb +17 -18
- data/lib/poleica/types/general.rb +0 -2
- data/lib/poleica/types/image.rb +2 -3
- data/lib/poleica/types/pdf.rb +2 -3
- data/lib/poleica/version.rb +2 -1
- data/lib/poleica.rb +6 -1
- data/poleica.gemspec +0 -2
- data/test/poleica/configuration_test.rb +4 -2
- data/test/poleica/converters/coercive_test.rb +5 -6
- data/test/poleica/converters/graphics_magick_test.rb +38 -21
- data/test/poleica/converters/libre_office_test.rb +7 -8
- data/test/poleica/converters/utils_test.rb +12 -2
- data/test/poleica/types/typeable_test.rb +11 -11
- data/test/support/files/120x70.png +0 -0
- data/test/support/files/30x30.png +0 -0
- data/test/test_helper.rb +2 -1
- metadata +23 -32
- data/lib/poleica/converters/graphics_magick.rb +0 -118
@@ -4,23 +4,33 @@ require 'test_helper'
|
|
4
4
|
class UtilsTest < Minitest::Test
|
5
5
|
def test_exec_with_timeout
|
6
6
|
start_time = Time.now
|
7
|
-
|
7
|
+
# rubocop:disable RescueModifier
|
8
|
+
Poleica::Converters::Utils.exec_with_timeout('sleep', 2, timeout: 0.1) rescue nil
|
9
|
+
# rubocop:enable
|
8
10
|
duration = Time.now - start_time
|
9
11
|
assert(duration < 2)
|
10
12
|
end
|
11
13
|
|
12
14
|
def test_exec_with_timeout_raise_an_exception
|
13
15
|
assert_raises(Poleica::TimeoutError) do
|
14
|
-
Poleica::Converters::Utils.exec_with_timeout('sleep', 2, 0.1)
|
16
|
+
Poleica::Converters::Utils.exec_with_timeout('sleep', 2, timeout: 0.1)
|
15
17
|
end
|
16
18
|
end
|
17
19
|
|
18
20
|
def test_exec_with_timeout_kill
|
19
21
|
assert(`ps -a | grep soffice.bin | grep -v grep`.empty?)
|
20
22
|
Poleica.configure { |conf| conf.timeout = 0.001 }
|
23
|
+
# rubocop:disable RescueModifier
|
21
24
|
Poleica.new("#{Support.support_path}/files/example.doc").to_png rescue nil
|
25
|
+
# rubocop:enable
|
22
26
|
assert(`ps -a | grep example.doc | grep -v grep`.empty?)
|
23
27
|
ensure
|
24
28
|
Poleica.configure { |config| config.timeout = 120 }
|
25
29
|
end
|
30
|
+
|
31
|
+
def test_exec_with_timeout_exception
|
32
|
+
assert_raises(Poleica::ProcessError) do
|
33
|
+
Poleica::Converters::Utils.exec_with_timeout('false')
|
34
|
+
end
|
35
|
+
end
|
26
36
|
end
|
@@ -2,14 +2,14 @@
|
|
2
2
|
require 'test_helper'
|
3
3
|
# Test the Typeable Module
|
4
4
|
class TypeableTest < Minitest::Test
|
5
|
-
EXTENSION_NAMES ||= %w
|
5
|
+
EXTENSION_NAMES ||= %w(doc pdf mp3 png)
|
6
6
|
|
7
7
|
def test_that_it_extracts_a_mimetype
|
8
|
-
expected_mime_types = %w
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
8
|
+
expected_mime_types = %w(
|
9
|
+
application/pdf
|
10
|
+
audio/mpeg
|
11
|
+
image/png
|
12
|
+
)
|
13
13
|
mime_types = files_enumerator.map(&:file_mimetype)
|
14
14
|
# Don't test doc files, it doesnt behave the same way
|
15
15
|
# on Linux or MacOS (maybe FIXME)
|
@@ -25,11 +25,11 @@ class TypeableTest < Minitest::Test
|
|
25
25
|
|
26
26
|
def test_that_it_extracts_a_type_object
|
27
27
|
expected_classes = [
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
28
|
+
Poleica::Types::Document,
|
29
|
+
Poleica::Types::General,
|
30
|
+
Poleica::Types::Document,
|
31
|
+
Poleica::Types::Image
|
32
|
+
]
|
33
33
|
classes = files_enumerator.map do |type_detector|
|
34
34
|
type_detector.file_type.class
|
35
35
|
end
|
Binary file
|
Binary file
|
data/test/test_helper.rb
CHANGED
metadata
CHANGED
@@ -1,57 +1,43 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: poleica
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.10.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Antoine Lyset
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2015-03-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
+
name: childprocess
|
14
15
|
requirement: !ruby/object:Gem::Requirement
|
15
16
|
requirements:
|
16
|
-
- -
|
17
|
+
- - ">="
|
17
18
|
- !ruby/object:Gem::Version
|
18
19
|
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
19
22
|
version_requirements: !ruby/object:Gem::Requirement
|
20
23
|
requirements:
|
21
|
-
- -
|
24
|
+
- - ">="
|
22
25
|
- !ruby/object:Gem::Version
|
23
26
|
version: '0'
|
24
|
-
type: :runtime
|
25
|
-
prerelease: false
|
26
|
-
name: childprocess
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
+
name: bundler
|
28
29
|
requirement: !ruby/object:Gem::Requirement
|
29
30
|
requirements:
|
30
|
-
- - ~>
|
31
|
-
- !ruby/object:Gem::Version
|
32
|
-
version: '1.3'
|
33
|
-
version_requirements: !ruby/object:Gem::Requirement
|
34
|
-
requirements:
|
35
|
-
- - ~>
|
31
|
+
- - "~>"
|
36
32
|
- !ruby/object:Gem::Version
|
37
33
|
version: '1.3'
|
38
34
|
type: :development
|
39
35
|
prerelease: false
|
40
|
-
name: bundler
|
41
|
-
- !ruby/object:Gem::Dependency
|
42
|
-
requirement: !ruby/object:Gem::Requirement
|
43
|
-
requirements:
|
44
|
-
- - ! '>='
|
45
|
-
- !ruby/object:Gem::Version
|
46
|
-
version: '0'
|
47
36
|
version_requirements: !ruby/object:Gem::Requirement
|
48
37
|
requirements:
|
49
|
-
- -
|
38
|
+
- - "~>"
|
50
39
|
- !ruby/object:Gem::Version
|
51
|
-
version: '
|
52
|
-
type: :development
|
53
|
-
prerelease: false
|
54
|
-
name: rake
|
40
|
+
version: '1.3'
|
55
41
|
description: Poleica can convert docs and images to PDF and PNG, it can be extended
|
56
42
|
to handle a lot of converters
|
57
43
|
email: antoinelyset@gmail.com
|
@@ -59,8 +45,8 @@ executables: []
|
|
59
45
|
extensions: []
|
60
46
|
extra_rdoc_files: []
|
61
47
|
files:
|
62
|
-
- .gitignore
|
63
|
-
- .travis.yml
|
48
|
+
- ".gitignore"
|
49
|
+
- ".travis.yml"
|
64
50
|
- CHANGELOG.md
|
65
51
|
- Gemfile
|
66
52
|
- Gemfile.lock
|
@@ -73,7 +59,9 @@ files:
|
|
73
59
|
- lib/poleica/converters/coercive.rb
|
74
60
|
- lib/poleica/converters/convertible.rb
|
75
61
|
- lib/poleica/converters/general.rb
|
76
|
-
- lib/poleica/converters/graphics_magick.rb
|
62
|
+
- lib/poleica/converters/graphics_magick/convert_options_generator.rb
|
63
|
+
- lib/poleica/converters/graphics_magick/graphics_magick.rb
|
64
|
+
- lib/poleica/converters/graphics_magick/thumbnail_options_generator.rb
|
77
65
|
- lib/poleica/converters/libre_office.rb
|
78
66
|
- lib/poleica/converters/utils.rb
|
79
67
|
- lib/poleica/errors.rb
|
@@ -99,7 +87,9 @@ files:
|
|
99
87
|
- test/poleica/polei_test.rb
|
100
88
|
- test/poleica/types/typeable_test.rb
|
101
89
|
- test/poleica_test.rb
|
90
|
+
- test/support/files/120x70.png
|
102
91
|
- test/support/files/1px.gif
|
92
|
+
- test/support/files/30x30.png
|
103
93
|
- test/support/files/example.doc
|
104
94
|
- test/support/files/example.mp3
|
105
95
|
- test/support/files/example.pdf
|
@@ -115,17 +105,17 @@ require_paths:
|
|
115
105
|
- lib
|
116
106
|
required_ruby_version: !ruby/object:Gem::Requirement
|
117
107
|
requirements:
|
118
|
-
- -
|
108
|
+
- - ">="
|
119
109
|
- !ruby/object:Gem::Version
|
120
110
|
version: '0'
|
121
111
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
122
112
|
requirements:
|
123
|
-
- -
|
113
|
+
- - ">="
|
124
114
|
- !ruby/object:Gem::Version
|
125
115
|
version: '0'
|
126
116
|
requirements: []
|
127
117
|
rubyforge_project:
|
128
|
-
rubygems_version: 2.
|
118
|
+
rubygems_version: 2.2.2
|
129
119
|
signing_key:
|
130
120
|
specification_version: 4
|
131
121
|
summary: A general converter and thumbnail creator
|
@@ -141,10 +131,11 @@ test_files:
|
|
141
131
|
- test/poleica/polei_test.rb
|
142
132
|
- test/poleica/types/typeable_test.rb
|
143
133
|
- test/poleica_test.rb
|
134
|
+
- test/support/files/120x70.png
|
144
135
|
- test/support/files/1px.gif
|
136
|
+
- test/support/files/30x30.png
|
145
137
|
- test/support/files/example.doc
|
146
138
|
- test/support/files/example.mp3
|
147
139
|
- test/support/files/example.pdf
|
148
140
|
- test/support/files/example.png
|
149
141
|
- test/test_helper.rb
|
150
|
-
has_rdoc:
|
@@ -1,118 +0,0 @@
|
|
1
|
-
# -*- encoding: utf-8 -*-
|
2
|
-
module Poleica
|
3
|
-
module Converters
|
4
|
-
# The GraphicsMagick converter, use the 'gm' command to convert images and
|
5
|
-
# documents
|
6
|
-
class GraphicsMagick
|
7
|
-
include Poleica::Converters::Utils
|
8
|
-
|
9
|
-
COMPATIBLE_TYPES = [
|
10
|
-
Types::Image,
|
11
|
-
Types::PDF
|
12
|
-
]
|
13
|
-
|
14
|
-
DEFAULT_MEASURE = 612
|
15
|
-
|
16
|
-
attr_reader :polei
|
17
|
-
|
18
|
-
def initialize(polei)
|
19
|
-
@polei = polei
|
20
|
-
end
|
21
|
-
|
22
|
-
def to_png(options = {})
|
23
|
-
opts_gen = OptionsGenerator.new(polei, options)
|
24
|
-
exec_with_timeout(bin_path, opts_gen.generate)
|
25
|
-
expected_file_path = opts_gen[:path]
|
26
|
-
File.exists?(expected_file_path) ? expected_file_path : nil
|
27
|
-
end
|
28
|
-
|
29
|
-
private
|
30
|
-
|
31
|
-
# Generate options for the gm command
|
32
|
-
# @options page [Array, Integer]
|
33
|
-
class OptionsGenerator
|
34
|
-
attr_reader :polei, :options
|
35
|
-
|
36
|
-
def initialize(polei, options = {})
|
37
|
-
@polei = polei
|
38
|
-
@options = default_options.merge(options)
|
39
|
-
end
|
40
|
-
|
41
|
-
def generate
|
42
|
-
[
|
43
|
-
'convert',
|
44
|
-
"#{polei.path}#{page_options}",
|
45
|
-
orient_options,
|
46
|
-
thumbnail_or_resize_options,
|
47
|
-
output_options
|
48
|
-
].flatten
|
49
|
-
end
|
50
|
-
|
51
|
-
def [](key)
|
52
|
-
options[key]
|
53
|
-
end
|
54
|
-
|
55
|
-
private
|
56
|
-
|
57
|
-
def default_options
|
58
|
-
{
|
59
|
-
height: DEFAULT_MEASURE,
|
60
|
-
width: DEFAULT_MEASURE,
|
61
|
-
force_resize: false,
|
62
|
-
auto_orient: true,
|
63
|
-
thumbnail: false,
|
64
|
-
page: 0,
|
65
|
-
}
|
66
|
-
end
|
67
|
-
|
68
|
-
def page_options
|
69
|
-
@page_options ||=
|
70
|
-
"#{Array(options[:page]).flatten.compact.uniq.sort.to_s}"
|
71
|
-
end
|
72
|
-
|
73
|
-
def orient_options
|
74
|
-
@orient_options ||= options[:auto_orient] ? '-auto-orient' : ''
|
75
|
-
end
|
76
|
-
|
77
|
-
def thumbnail_or_resize_options
|
78
|
-
@thumbnail_or_resize_options ||=
|
79
|
-
options[:thumbnail] ? thumbnail_options : resize_options
|
80
|
-
end
|
81
|
-
|
82
|
-
def thumbnail_options
|
83
|
-
@thumbnail_options ||=
|
84
|
-
[
|
85
|
-
'-thumbnail',
|
86
|
-
"#{options[:width]}x#{options[:height]}^",
|
87
|
-
'-gravity',
|
88
|
-
'center',
|
89
|
-
'-extent',
|
90
|
-
"#{options[:width]}x#{options[:height]}"
|
91
|
-
]
|
92
|
-
end
|
93
|
-
|
94
|
-
def resize_options
|
95
|
-
@resize_options ||=
|
96
|
-
[
|
97
|
-
'-resize',
|
98
|
-
"#{options[:width]}x#{options[:height]}" +
|
99
|
-
"#{'!' if options[:force_resize]}"
|
100
|
-
]
|
101
|
-
end
|
102
|
-
|
103
|
-
def output_options
|
104
|
-
options[:path] = if options[:path]
|
105
|
-
if File.directory?(options[:path])
|
106
|
-
basename = File.basename(polei.path_with_md5)
|
107
|
-
File.join(options[:path], basename)
|
108
|
-
else
|
109
|
-
options[:path]
|
110
|
-
end
|
111
|
-
else
|
112
|
-
polei.path_with_md5(:png)
|
113
|
-
end
|
114
|
-
end
|
115
|
-
end # class OptionsGenerator
|
116
|
-
end # class GraphicsMagick
|
117
|
-
end # module Converters
|
118
|
-
end # module Poleica
|