active_storage_validations 0.9.7 → 0.9.8

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: 0f77bdb678731cdb6bb3aca1bddf3a3b1d1d4f34355a778c504931d067f6d0e2
4
- data.tar.gz: cb723cb17a4cbfcfec2e7a9b8432ac0d2641afbef327a92e38baa376d15ba2fd
3
+ metadata.gz: c9b366848f85ac520038a9efe0bee0514338f4d28b8f292ef87ad06d1ee0da28
4
+ data.tar.gz: 651195be6d5d23bf20c4600656e799005e3e1fc118ac21cc5fe023b24f43ae73
5
5
  SHA512:
6
- metadata.gz: d44aed46b1f790d3df1913009fc1c84ea5831be3c8809063c94a0c50de3d8b9f40613eab920c49fb8f81dd0808d9c489aebb1705e022defe1e745d1205a48203
7
- data.tar.gz: 3d770860efb253f13ea1f18086c5b8a51253caf69875ba1d9d7921c17b9c5ce43f8001f4d8eeb1e095f8f37d1f0924dbddcdb35ca24b721d6fd5cf2a002d9a90
6
+ metadata.gz: f6231454bce1c4b09bf4dba3a83238f09b3fa0593c0c04146342ac6dd035048f890edcb594d24747f9d5e55d5ef86a35eba7fa93b109f101906b0f5b4f373c06
7
+ data.tar.gz: 6a5a9a0abd3f7abbddd92d8f1e5601859bbcc06e17f049046e5c9e2744760aa4fd7fa77462c22fb8d076cc4aef801e9b814a6b8663edb08e9c32a497ec041908
data/README.md CHANGED
@@ -375,6 +375,9 @@ You are welcome to contribute.
375
375
  - https://github.com/luiseugenio
376
376
  - https://github.com/equivalent
377
377
  - https://github.com/NARKOZ
378
+ - https://github.com/stephensolis
379
+ - https://github.com/kwent
380
+ = https://github.com/Animesh-Ghosh
378
381
 
379
382
  ## License
380
383
 
@@ -89,29 +89,32 @@ module ActiveStorageValidations
89
89
 
90
90
  # Validation based on checks :width and :height.
91
91
  else
92
+ width_or_height_invalid = false
92
93
  [:width, :height].each do |length|
93
94
  next unless options[length]
94
95
  if options[length].is_a?(Hash)
95
96
  if options[length][:in] && (file_metadata[length] < options[length][:min] || file_metadata[length] > options[length][:max])
96
97
  add_error(record, attribute, options[:message].presence || :"dimension_#{length}_inclusion", min: options[length][:min], max: options[length][:max])
97
- return false
98
+ width_or_height_invalid = true
98
99
  else
99
100
  if options[length][:min] && file_metadata[length] < options[length][:min]
100
101
  add_error(record, attribute, options[:message].presence || :"dimension_#{length}_greater_than_or_equal_to", length: options[length][:min])
101
- return false
102
+ width_or_height_invalid = true
102
103
  end
103
104
  if options[length][:max] && file_metadata[length] > options[length][:max]
104
105
  add_error(record, attribute, options[:message].presence || :"dimension_#{length}_less_than_or_equal_to", length: options[length][:max])
105
- return false
106
+ width_or_height_invalid = true
106
107
  end
107
108
  end
108
109
  else
109
110
  if file_metadata[length] != options[length]
110
111
  add_error(record, attribute, options[:message].presence || :"dimension_#{length}_equal_to", length: options[length])
111
- return false
112
+ width_or_height_invalid = true
112
113
  end
113
114
  end
114
115
  end
116
+
117
+ return false if width_or_height_invalid
115
118
  end
116
119
 
117
120
  true # valid file
@@ -10,6 +10,14 @@ module ActiveStorageValidations
10
10
  def image_processor
11
11
  Rails.application.config.active_storage.variant_processor
12
12
  end
13
+
14
+ def exception_class
15
+ if image_processor == :vips && defined?(Vips)
16
+ Vips::Error
17
+ elsif defined?(MiniMagick)
18
+ MiniMagick::Error
19
+ end
20
+ end
13
21
 
14
22
  def require_image_processor
15
23
  if image_processor == :vips
@@ -55,15 +63,15 @@ module ActiveStorageValidations
55
63
  tempfile.flush
56
64
  tempfile.rewind
57
65
 
58
- image = if image_processor == :vips && Vips::get_suffixes.include?(File.extname(tempfile.path))
66
+ image = if image_processor == :vips && defined?(Vips) && Vips::get_suffixes.include?(File.extname(tempfile.path).downcase)
59
67
  Vips::Image.new_from_file(tempfile.path)
60
- else
68
+ elsif defined?(MiniMagick)
61
69
  MiniMagick::Image.new(tempfile.path)
62
70
  end
63
71
  else
64
- image = if image_processor == :vips && Vips::get_suffixes.include?(File.extname(read_file_path))
72
+ image = if image_processor == :vips && defined?(Vips) && Vips::get_suffixes.include?(File.extname(read_file_path).downcase)
65
73
  Vips::Image.new_from_file(read_file_path)
66
- else
74
+ elsif defined?(MiniMagick)
67
75
  MiniMagick::Image.new(read_file_path)
68
76
  end
69
77
  end
@@ -77,30 +85,27 @@ module ActiveStorageValidations
77
85
  rescue LoadError, NameError
78
86
  logger.info "Skipping image analysis because the mini_magick or ruby-vips gem isn't installed"
79
87
  {}
80
- rescue MiniMagick::Error => error
81
- logger.error "Skipping image analysis due to an ImageMagick error: #{error.message}"
82
- {}
83
- rescue Vips::Error => error
84
- logger.error "Skipping image analysis due to a Vips error: #{error.message}"
88
+ rescue exception_class => error
89
+ logger.error "Skipping image analysis due to an #{exception_class.name.split('::').map(&:downcase).join(' ').capitalize} error: #{error.message}"
85
90
  {}
86
91
  ensure
87
92
  image = nil
88
93
  end
89
94
 
90
95
  def valid_image?(image)
91
- image_processor == :vips ? image.avg : image.valid?
92
- rescue Vips::Error
96
+ image_processor == :vips && image.is_a?(Vips::Image) ? image.avg : image.valid?
97
+ rescue exception_class
93
98
  false
94
99
  end
95
100
 
96
101
  def rotated_image?(image)
97
- if image_processor == :vips
102
+ if image_processor == :vips && image.is_a?(Vips::Image)
98
103
  image.get('exif-ifd0-Orientation').include?('Right-top') ||
99
104
  image.get('exif-ifd0-Orientation').include?('Left-bottom')
100
105
  else
101
106
  %w[ RightTop LeftBottom ].include?(image["%[orientation]"])
102
107
  end
103
- rescue Vips::Error # field "exif-ifd0-Orientation" not found
108
+ rescue exception_class # field "exif-ifd0-Orientation" not found
104
109
  false
105
110
  end
106
111
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ActiveStorageValidations
4
- VERSION = '0.9.7'
4
+ VERSION = '0.9.8'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active_storage_validations
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.7
4
+ version: 0.9.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Igor Kasyanchuk
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-03-05 00:00:00.000000000 Z
11
+ date: 2022-04-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activejob