attachment_saver 1.5.0 → 1.5.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/Gemfile.lock +1 -1
- data/lib/attachment_saver/version.rb +1 -1
- data/lib/processors/gdk_pixbuf.rb +13 -5
- data/test/fixtures/test.gif +0 -0
- data/test/gdk_pixbuf_processor_test.rb +4 -0
- data/test/image_operations.rb +9 -1
- data/test/image_processor_test_common.rb +36 -0
- data/test/image_science_processor_test.rb +4 -0
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f6490e7e2047044a90f1e1173bde73a2f8d35a74
|
4
|
+
data.tar.gz: 0ca89b3a3ee2ef6ab30edbda1ca24dc33cf733bc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c4e7a26570502f01844906d7c2d2bdd258b80cc4abaf41f44fffeb358875b87b6600de35f98e74757ace80f93a4e23f34fad1142a9544ac4c844cbb8dfbd43f6
|
7
|
+
data.tar.gz: ad2e45480b8c97d37878bb4f98a60d3a6899b865519bea7c510f8a6f1a9c264393f183f0b30bc63dfdf0c7a6740dba4371fa8dd42319200f754b416cdc13d981
|
data/Gemfile.lock
CHANGED
@@ -53,16 +53,24 @@ module AttachmentSaver
|
|
53
53
|
result = original_image.send(*resize_format) do |derived_image|
|
54
54
|
return nil unless want_format?(derived_format_name, derived_image.width, derived_image.height)
|
55
55
|
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
56
|
+
if original_image.format == 'gif'
|
57
|
+
# as a special case hack, don't try and save derived images into GIF format (gdk_pixbuf2 doesn't support that)
|
58
|
+
derived_content_type = 'image/png'
|
59
|
+
derived_extension = 'png'
|
60
|
+
format = 'png'
|
61
|
+
else
|
62
|
+
# both original_filename and content_type must be defined for parents when using image processing
|
63
|
+
# - but apps can just define them using attr_accessor if they don't want them persisted to db
|
64
|
+
derived_content_type = content_type
|
65
|
+
derived_extension = derived_image.file_extension
|
66
|
+
format = original_image.format
|
67
|
+
end
|
60
68
|
|
61
69
|
# we leverage tempfiles as discussed in the uploaded_file method
|
62
70
|
temp = ExtendedTempfile.new("asgtemp", tempfile_directory, derived_extension)
|
63
71
|
temp.binmode
|
64
72
|
temp.close
|
65
|
-
derived_image.save(temp.path,
|
73
|
+
derived_image.save(temp.path, format)
|
66
74
|
temp.open # we close & reopen so we see the file the processor wrote to, even if it created a new file rather than writing into our tempfile
|
67
75
|
|
68
76
|
{ :format_name => derived_format_name.to_s,
|
Binary file
|
data/test/image_operations.rb
CHANGED
@@ -8,7 +8,15 @@ class ImageOperations
|
|
8
8
|
:width => 448,
|
9
9
|
:height => 600 }
|
10
10
|
end
|
11
|
-
|
11
|
+
|
12
|
+
def self.original_gif_image
|
13
|
+
{ :path => ImageFixtures::fixture_path('test.gif'),
|
14
|
+
:content_type => 'image/gif',
|
15
|
+
:original_filename => 'test.gif',
|
16
|
+
:width => 100,
|
17
|
+
:height => 73 }
|
18
|
+
end
|
19
|
+
|
12
20
|
def self.resize_operations
|
13
21
|
{
|
14
22
|
:squish1 => [:squish, 100, 50],
|
@@ -35,6 +35,10 @@ module ImageProcessorTests
|
|
35
35
|
true # overridden for examine-only processors
|
36
36
|
end
|
37
37
|
|
38
|
+
def saves_to_gif_format?
|
39
|
+
true
|
40
|
+
end
|
41
|
+
|
38
42
|
def test_attributes_from_valid
|
39
43
|
processor_model.attachment_options = {}
|
40
44
|
ImageFixtures.all_readable.each do |fixture|
|
@@ -116,4 +120,36 @@ module ImageProcessorTests
|
|
116
120
|
end
|
117
121
|
end
|
118
122
|
end
|
123
|
+
|
124
|
+
def test_derived_attributes_from_gif
|
125
|
+
processor_model.attachment_options = {:formats => ImageOperations.resize_operations}
|
126
|
+
|
127
|
+
fixture = ImageOperations.original_gif_image
|
128
|
+
model = processor_model.new(File.open(fixture[:path], 'rb'))
|
129
|
+
model.content_type = fixture[:content_type]
|
130
|
+
model.original_filename = fixture[:original_filename]
|
131
|
+
|
132
|
+
if processes_images?
|
133
|
+
model.process_attachment(model.uploaded_file_path)
|
134
|
+
|
135
|
+
ImageOperations.expected_results.each do |format_name, size|
|
136
|
+
derived = model.find_derived(format_name)
|
137
|
+
assert !derived.nil?, "no derived image named #{format_name} generated"
|
138
|
+
assert_equal size.first, derived[:width], "#{format_name} width incorrect"
|
139
|
+
assert_equal size.last, derived[:height], "#{format_name} height incorrect"
|
140
|
+
|
141
|
+
if saves_to_gif_format?
|
142
|
+
assert_equal model.file_extension, derived[:file_extension], "#{format_name} file_extension incorrect"
|
143
|
+
assert_equal fixture[:content_type], derived[:content_type]
|
144
|
+
else
|
145
|
+
assert_equal "png", derived[:file_extension], "#{format_name} file_extension incorrect"
|
146
|
+
assert_equal "image/png", derived[:content_type]
|
147
|
+
end
|
148
|
+
end
|
149
|
+
else
|
150
|
+
assert_raise(NotImplementedError) do
|
151
|
+
model.process_attachment(model.uploaded_file_path)
|
152
|
+
end
|
153
|
+
end
|
154
|
+
end
|
119
155
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: attachment_saver
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.5.
|
4
|
+
version: 1.5.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Will Bryant
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-02-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|
@@ -195,6 +195,7 @@ files:
|
|
195
195
|
- test/fixtures/noextension
|
196
196
|
- test/fixtures/pd.png
|
197
197
|
- test/fixtures/ssrf.png
|
198
|
+
- test/fixtures/test.gif
|
198
199
|
- test/fixtures/test.jpg
|
199
200
|
- test/fixtures/test.js
|
200
201
|
- test/fixtures/wrongextension.png
|
@@ -246,6 +247,7 @@ test_files:
|
|
246
247
|
- test/fixtures/noextension
|
247
248
|
- test/fixtures/pd.png
|
248
249
|
- test/fixtures/ssrf.png
|
250
|
+
- test/fixtures/test.gif
|
249
251
|
- test/fixtures/test.jpg
|
250
252
|
- test/fixtures/test.js
|
251
253
|
- test/fixtures/wrongextension.png
|