assembly-objectfile 2.1.0 → 2.1.1

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
2
  SHA256:
3
- metadata.gz: 101baff5dcb53ae691341818de800b9836bc5c2db2483b3cdac08afa8fed479e
4
- data.tar.gz: 0265e4b3d35ecf91a07b48129e4485e9844e6e1c940a08ae4f32246b209d2260
3
+ metadata.gz: 76dac08191a4c118cf16e4736b9538c9d2a60811cf9547e0ad395ab468b1b51a
4
+ data.tar.gz: b9fec1e99d03941f658cd6716e1c00db37ce2f2042816e4ba8f77246b102d1f4
5
5
  SHA512:
6
- metadata.gz: fa0814a3a51d7d98f7eeb91611193e367accb4161ab18967b1afdb7caeb54476994f078ed58eff684dfba37dd2358a75fba98b181df74f165f82c65537723ebc
7
- data.tar.gz: 91272e14724ff23ac668bf65339f29a272606712da691a7e13018d70c7e2a00ac8d242723ae6b4a9e05007543174e43e6ade6abb8f71a922ff9a4f4b230b10bb
6
+ metadata.gz: '082fc021ca4f4dde1f3eaaac937e66862d8ea36f5198bdece9866a72e5be068021665e10bd40b8ea2835d848c062886982ed41033935120525c8d4e57efadafd'
7
+ data.tar.gz: cf2e4facd4248532c5f92c741f80b5e8d27e04b8cc23e3b7959b59118cceaf8122d03aa92af8faf99c8000bb4298b74d9ab86001744c6f852cd148ceda21d675
data/.rubocop_todo.yml CHANGED
@@ -1,6 +1,6 @@
1
1
  # This configuration was generated by
2
2
  # `rubocop --auto-gen-config`
3
- # on 2022-07-19 19:06:39 UTC using RuboCop version 1.31.2.
3
+ # on 2022-07-20 17:16:46 UTC using RuboCop version 1.31.2.
4
4
  # The point is for the user to remove these configuration records
5
5
  # one by one as the offenses are removed from the code base.
6
6
  # Note that changes in the inspected code, or installation of new
@@ -9,4 +9,4 @@
9
9
  # Offense count: 1
10
10
  # Configuration parameters: CountComments, CountAsOne.
11
11
  Metrics/ClassLength:
12
- Max: 118
12
+ Max: 122
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- assembly-objectfile (2.1.0)
4
+ assembly-objectfile (2.1.1)
5
5
  activesupport (>= 5.2.0)
6
6
  mime-types (> 3)
7
7
  mini_exiftool
@@ -76,7 +76,7 @@ GEM
76
76
  simplecov_json_formatter (~> 0.1)
77
77
  simplecov-html (0.12.3)
78
78
  simplecov_json_formatter (0.1.4)
79
- tzinfo (2.0.4)
79
+ tzinfo (2.0.5)
80
80
  concurrent-ruby (~> 1.0)
81
81
  unicode-display_width (2.2.0)
82
82
 
@@ -4,6 +4,6 @@
4
4
  module Assembly
5
5
  class ObjectFile
6
6
  # Gem version
7
- VERSION = '2.1.0'
7
+ VERSION = '2.1.1'
8
8
  end
9
9
  end
@@ -104,6 +104,13 @@ module Assembly
104
104
  @exif ||= begin
105
105
  check_for_file
106
106
  MiniExiftool.new(path, replace_invalid_chars: '?')
107
+ rescue MiniExiftool::Error
108
+ # MiniExiftool will throw an exception when it tries to initialize for problematic files,
109
+ # but the exception it throws does not tell you the file that caused the problem.
110
+ # Instead, we will raise our own exception with more context in logging/reporting upstream.
111
+ # Note: if the file that causes the problem should NOT use exiftool to determine mimetype, add it to the skipped
112
+ # mimetypes in Assembly::TRUSTED_MIMETYPES to bypass initialization of MiniExiftool for mimetype generation
113
+ raise MiniExiftool::Error, "error initializing MiniExiftool for #{path}"
107
114
  end
108
115
  end
109
116
 
@@ -255,7 +262,7 @@ module Assembly
255
262
  check_for_file
256
263
  # if it's not a "trusted" mimetype and there is exif data; get the mimetype from the exif
257
264
  prefer_exif = !Assembly::TRUSTED_MIMETYPES.include?(file_mimetype)
258
- exif.mimetype if exif&.mimetype && prefer_exif
265
+ exif.mimetype if prefer_exif && exif&.mimetype
259
266
  end
260
267
  end
261
268
 
@@ -1,9 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Assembly
4
- # the path to the gem, used to access profiles stored with the gem
5
- PATH_TO_GEM = File.expand_path("#{File.dirname(__FILE__)}/..")
6
-
7
4
  # If input image is not one of these mime types, it will not be regarded as a valid image
8
5
  # for the purpose of generating a JP2 derivative
9
6
  VALID_IMAGE_MIMETYPES = ['image/jpeg', 'image/tiff', 'image/tif', 'image/png'].freeze
@@ -12,7 +9,8 @@ module Assembly
12
9
  # one of these is returned by the file command, then a check will be made to see if exif data exists...
13
10
  # if so, the mimetype returned by the exif data will be used if no exif data exists, then the
14
11
  # mimetype returned by the unix file command will be used
15
- TRUSTED_MIMETYPES = ['text/plain', 'plain/text', 'application/pdf', 'text/html', 'application/xml'].freeze
12
+ TRUSTED_MIMETYPES = ['text/plain', 'plain/text', 'application/pdf', 'text/html', 'application/xml',
13
+ 'application/octet-stream'].freeze
16
14
 
17
15
  # This is a manual override mapping of file extension to mimetype; if a file with the given extension
18
16
  # is found, the mapped mimetype will be returned and no further methods will be used - this is used
@@ -113,7 +113,7 @@ describe Assembly::ObjectFile do
113
113
 
114
114
  context 'with ruby file' do
115
115
  it 'false' do
116
- non_image_file = File.join(Assembly::PATH_TO_GEM, 'spec/assembly/object_file_spec.rb')
116
+ non_image_file = File.join(PATH_TO_GEM, 'spec/assembly/object_file_spec.rb')
117
117
  object_file = described_class.new(non_image_file)
118
118
  expect(object_file.image?).to be(false)
119
119
  end
@@ -121,7 +121,7 @@ describe Assembly::ObjectFile do
121
121
 
122
122
  context 'with xml' do
123
123
  it 'false' do
124
- non_image_file = File.join(Assembly::PATH_TO_GEM, 'spec/test_data/input/file_with_no_exif.xml')
124
+ non_image_file = File.join(PATH_TO_GEM, 'spec/test_data/input/file_with_no_exif.xml')
125
125
  object_file = described_class.new(non_image_file)
126
126
  expect(object_file.image?).to be(false)
127
127
  end
@@ -145,7 +145,7 @@ describe Assembly::ObjectFile do
145
145
 
146
146
  context 'with ruby file' do
147
147
  it ':text' do
148
- non_image_file = File.join(Assembly::PATH_TO_GEM, 'spec/assembly/object_file_spec.rb')
148
+ non_image_file = File.join(PATH_TO_GEM, 'spec/assembly/object_file_spec.rb')
149
149
  object_file = described_class.new(non_image_file)
150
150
  expect(object_file.object_type).to eq(:text)
151
151
  end
@@ -153,7 +153,7 @@ describe Assembly::ObjectFile do
153
153
 
154
154
  context 'with xml' do
155
155
  it ':application' do
156
- non_image_file = File.join(Assembly::PATH_TO_GEM, 'spec/test_data/input/file_with_no_exif.xml')
156
+ non_image_file = File.join(PATH_TO_GEM, 'spec/test_data/input/file_with_no_exif.xml')
157
157
  object_file = described_class.new(non_image_file)
158
158
  expect(object_file.object_type).to eq(:application)
159
159
  end
@@ -191,7 +191,7 @@ describe Assembly::ObjectFile do
191
191
 
192
192
  context 'with ruby file' do
193
193
  it 'false' do
194
- non_image_file = File.join(Assembly::PATH_TO_GEM, 'spec/assembly/object_file_spec.rb')
194
+ non_image_file = File.join(PATH_TO_GEM, 'spec/assembly/object_file_spec.rb')
195
195
  object_file = described_class.new(non_image_file)
196
196
  expect(object_file.valid_image?).to be(false)
197
197
  end
@@ -199,7 +199,7 @@ describe Assembly::ObjectFile do
199
199
 
200
200
  context 'with xml' do
201
201
  it 'false' do
202
- non_image_file = File.join(Assembly::PATH_TO_GEM, 'spec/test_data/input/file_with_no_exif.xml')
202
+ non_image_file = File.join(PATH_TO_GEM, 'spec/test_data/input/file_with_no_exif.xml')
203
203
  object_file = described_class.new(non_image_file)
204
204
  expect(object_file.valid_image?).to be(false)
205
205
  end
@@ -359,7 +359,7 @@ describe Assembly::ObjectFile do
359
359
 
360
360
  describe '#file_exists?' do
361
361
  it 'false when a valid directory is specified instead of a file' do
362
- path = Assembly::PATH_TO_GEM
362
+ path = PATH_TO_GEM
363
363
  object_file = described_class.new(path)
364
364
  expect(File.exist?(path)).to be true
365
365
  expect(File.directory?(path)).to be true
@@ -367,7 +367,7 @@ describe Assembly::ObjectFile do
367
367
  end
368
368
 
369
369
  it 'false when a non-existent file is specified' do
370
- path = File.join(Assembly::PATH_TO_GEM, 'file_not_there.txt')
370
+ path = File.join(PATH_TO_GEM, 'file_not_there.txt')
371
371
  object_file = described_class.new(path)
372
372
  expect(File.exist?(path)).to be false
373
373
  expect(File.directory?(path)).to be false
@@ -410,9 +410,10 @@ describe Assembly::ObjectFile do
410
410
  expect(object_file.exif.class).to eq MiniExiftool
411
411
  end
412
412
 
413
- it 'raises MiniExiftool::Error if exiftool raises one' do
413
+ it 'raises MiniExiftool::Error with file path if exiftool raises one' do
414
414
  object_file = described_class.new('spec/test_data/empty.txt')
415
- expect { object_file.exif }.to raise_error(MiniExiftool::Error)
415
+ expect { object_file.exif }.to raise_error(MiniExiftool::Error,
416
+ "error initializing MiniExiftool for #{object_file.path}")
416
417
  end
417
418
  end
418
419
 
data/spec/spec_helper.rb CHANGED
@@ -10,13 +10,10 @@ RSpec.configure do |config|
10
10
  config.order = 'random'
11
11
  end
12
12
 
13
- TEST_DATA_DIR = File.join(Assembly::PATH_TO_GEM, 'spec', 'test_data')
14
- TEST_INPUT_DIR = File.join(TEST_DATA_DIR, 'input')
15
- TEST_OUTPUT_DIR = File.join(TEST_DATA_DIR, 'output')
13
+ PATH_TO_GEM = File.expand_path("#{File.dirname(__FILE__)}/..")
14
+ TEST_INPUT_DIR = File.join(PATH_TO_GEM, 'spec', 'test_data', 'input')
16
15
  TEST_TIF_INPUT_FILE = File.join(TEST_INPUT_DIR, 'test.tif')
17
- TEST_JPEG_INPUT_FILE = File.join(TEST_INPUT_DIR, 'test.jpg')
18
16
  TEST_JP2_INPUT_FILE = File.join(TEST_INPUT_DIR, 'test.jp2')
19
- TEST_JP2_OUTPUT_FILE = File.join(TEST_OUTPUT_DIR, 'test.jp2')
20
17
 
21
18
  TEST_TIFF_NO_COLOR_FILE = File.join(TEST_INPUT_DIR, 'test_no_color_profile.tif')
22
19
 
@@ -30,5 +27,3 @@ TEST_JSON_FILE = File.join(TEST_INPUT_DIR, 'test.json')
30
27
 
31
28
  TEST_OBJ_FILE = File.join(TEST_INPUT_DIR, 'someobject.obj')
32
29
  TEST_PLY_FILE = File.join(TEST_INPUT_DIR, 'someobject.ply')
33
-
34
- TEST_DRUID = 'nx288wh8889'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: assembly-objectfile
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.0
4
+ version: 2.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peter Mangiafico
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: exe
13
13
  cert_chain: []
14
- date: 2022-07-19 00:00:00.000000000 Z
14
+ date: 2022-07-20 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: activesupport