imgproxy 1.2.0 → 2.1.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.
Files changed (36) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +238 -113
  3. data/lib/imgproxy/builder.rb +47 -55
  4. data/lib/imgproxy/config.rb +96 -30
  5. data/lib/imgproxy/extensions/active_storage.rb +10 -0
  6. data/lib/imgproxy/extensions/shrine.rb +10 -0
  7. data/lib/imgproxy/options.rb +86 -120
  8. data/lib/imgproxy/options_aliases.rb +45 -0
  9. data/lib/imgproxy/options_casters/adjust.rb +22 -0
  10. data/lib/imgproxy/options_casters/array.rb +12 -0
  11. data/lib/imgproxy/options_casters/base64.rb +12 -0
  12. data/lib/imgproxy/options_casters/bool.rb +12 -0
  13. data/lib/imgproxy/options_casters/crop.rb +23 -0
  14. data/lib/imgproxy/options_casters/extend.rb +26 -0
  15. data/lib/imgproxy/options_casters/float.rb +16 -0
  16. data/lib/imgproxy/options_casters/gif_options.rb +21 -0
  17. data/lib/imgproxy/options_casters/gravity.rb +23 -0
  18. data/lib/imgproxy/options_casters/group.rb +21 -0
  19. data/lib/imgproxy/options_casters/integer.rb +10 -0
  20. data/lib/imgproxy/options_casters/jpeg_options.rb +26 -0
  21. data/lib/imgproxy/options_casters/png_options.rb +23 -0
  22. data/lib/imgproxy/options_casters/resize.rb +21 -0
  23. data/lib/imgproxy/options_casters/size.rb +24 -0
  24. data/lib/imgproxy/options_casters/string.rb +10 -0
  25. data/lib/imgproxy/options_casters/trim.rb +28 -0
  26. data/lib/imgproxy/options_casters/watermark.rb +30 -0
  27. data/lib/imgproxy/trim_array.rb +11 -0
  28. data/lib/imgproxy/url_adapters/active_storage.rb +35 -0
  29. data/lib/imgproxy/url_adapters/shrine.rb +16 -6
  30. data/lib/imgproxy/url_adapters.rb +0 -4
  31. data/lib/imgproxy/version.rb +1 -1
  32. data/lib/imgproxy.rb +72 -50
  33. metadata +69 -23
  34. data/lib/imgproxy/url_adapters/active_storage_gcs.rb +0 -31
  35. data/lib/imgproxy/url_adapters/active_storage_s3.rb +0 -23
  36. data/lib/imgproxy/url_adapters/shrine_s3.rb +0 -21
@@ -0,0 +1,26 @@
1
+ require "imgproxy/options_casters/group"
2
+ require "imgproxy/options_casters/bool"
3
+ require "imgproxy/options_casters/integer"
4
+
5
+ module Imgproxy
6
+ module OptionsCasters
7
+ # Casts jpeg_options option
8
+ module JpegOptions
9
+ CASTER = Imgproxy::OptionsCasters::Group.new(
10
+ progressive: Imgproxy::OptionsCasters::Bool,
11
+ no_subsample: Imgproxy::OptionsCasters::Bool,
12
+ trellis_quant: Imgproxy::OptionsCasters::Bool,
13
+ overshoot_deringing: Imgproxy::OptionsCasters::Bool,
14
+ optimize_scans: Imgproxy::OptionsCasters::Bool,
15
+ quant_table: Imgproxy::OptionsCasters::Integer,
16
+ ).freeze
17
+
18
+ def self.cast(raw)
19
+ return raw unless raw.is_a?(Hash)
20
+
21
+ values = CASTER.cast(raw)
22
+ values.empty? ? nil : values
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,23 @@
1
+ require "imgproxy/options_casters/group"
2
+ require "imgproxy/options_casters/bool"
3
+ require "imgproxy/options_casters/integer"
4
+
5
+ module Imgproxy
6
+ module OptionsCasters
7
+ # Casts png_options option
8
+ module PngOptions
9
+ CASTER = Imgproxy::OptionsCasters::Group.new(
10
+ interlaced: Imgproxy::OptionsCasters::Bool,
11
+ quantize: Imgproxy::OptionsCasters::Bool,
12
+ quantization_colors: Imgproxy::OptionsCasters::Integer,
13
+ ).freeze
14
+
15
+ def self.cast(raw)
16
+ return raw unless raw.is_a?(Hash)
17
+
18
+ values = CASTER.cast(raw)
19
+ values.empty? ? nil : values
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,21 @@
1
+ require "imgproxy/trim_array"
2
+ require "imgproxy/options_casters/string"
3
+ require "imgproxy/options_casters/size"
4
+
5
+ module Imgproxy
6
+ module OptionsCasters
7
+ # Casts resize option
8
+ module Resize
9
+ using TrimArray
10
+
11
+ def self.cast(raw)
12
+ return raw unless raw.is_a?(Hash)
13
+
14
+ [
15
+ Imgproxy::OptionsCasters::String.cast(raw[:resizing_type]) || "fit",
16
+ *Imgproxy::OptionsCasters::Size.cast(raw),
17
+ ].trim!
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,24 @@
1
+ require "imgproxy/trim_array"
2
+ require "imgproxy/options_casters/integer"
3
+ require "imgproxy/options_casters/bool"
4
+ require "imgproxy/options_casters/extend"
5
+
6
+ module Imgproxy
7
+ module OptionsCasters
8
+ # Casts size option
9
+ module Size
10
+ using TrimArray
11
+
12
+ def self.cast(raw)
13
+ return raw unless raw.is_a?(Hash)
14
+
15
+ [
16
+ Imgproxy::OptionsCasters::Integer.cast(raw[:width]) || 0,
17
+ Imgproxy::OptionsCasters::Integer.cast(raw[:height]) || 0,
18
+ Imgproxy::OptionsCasters::Bool.cast(raw[:enlarge]),
19
+ Imgproxy::OptionsCasters::Extend.cast(raw[:extend]),
20
+ ].trim!
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,10 @@
1
+ module Imgproxy
2
+ module OptionsCasters
3
+ # Casts string option
4
+ module String
5
+ def self.cast(raw)
6
+ raw&.to_s
7
+ end
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,28 @@
1
+ require "imgproxy/options_casters/group"
2
+ require "imgproxy/options_casters/float"
3
+ require "imgproxy/options_casters/string"
4
+ require "imgproxy/options_casters/bool"
5
+
6
+ module Imgproxy
7
+ module OptionsCasters
8
+ # Casts trim option
9
+ module Trim
10
+ CASTER = Imgproxy::OptionsCasters::Group.new(
11
+ threshold: Imgproxy::OptionsCasters::Float,
12
+ color: Imgproxy::OptionsCasters::String,
13
+ equal_hor: Imgproxy::OptionsCasters::Bool,
14
+ equal_ver: Imgproxy::OptionsCasters::Bool,
15
+ ).freeze
16
+
17
+ def self.cast(raw)
18
+ # Allow trim to be just a numeric
19
+ return Imgproxy::OptionsCasters::Float.cast(raw) if raw.is_a?(Numeric)
20
+
21
+ return raw unless raw.is_a?(Hash)
22
+ return unless raw[:threshold]
23
+
24
+ CASTER.cast(raw)
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,30 @@
1
+ require "imgproxy/options_casters/group"
2
+ require "imgproxy/options_casters/float"
3
+ require "imgproxy/options_casters/string"
4
+ require "imgproxy/options_casters/integer"
5
+
6
+ module Imgproxy
7
+ module OptionsCasters
8
+ # Casts string option
9
+ module Watermark
10
+ CASTER = Imgproxy::OptionsCasters::Group.new(
11
+ opacity: Imgproxy::OptionsCasters::Float,
12
+ position: Imgproxy::OptionsCasters::String,
13
+ x_offset: Imgproxy::OptionsCasters::Integer,
14
+ y_offset: Imgproxy::OptionsCasters::Integer,
15
+ scale: Imgproxy::OptionsCasters::Float,
16
+ ).freeze
17
+
18
+ def self.cast(raw)
19
+ # Allow watermark to be just a numeric
20
+ return Imgproxy::OptionsCasters::Float.cast(raw) if raw.is_a?(Numeric)
21
+
22
+ return raw unless raw.is_a?(Hash)
23
+ return unless raw[:opacity]
24
+
25
+ values = CASTER.cast(raw)
26
+ values[0].zero? ? 0 : values
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,11 @@
1
+ module Imgproxy
2
+ # `Array.trim!` refinement
3
+ module TrimArray
4
+ refine Array do
5
+ def trim!
6
+ delete_at(-1) while !empty? && last.nil?
7
+ self
8
+ end
9
+ end
10
+ end
11
+ end
@@ -15,8 +15,43 @@ module Imgproxy
15
15
  end
16
16
 
17
17
  def url(image)
18
+ return s3_url(image) if use_s3_url(image)
19
+ return gcs_url(image) if use_gcs_url(image)
20
+
18
21
  Rails.application.routes.url_helpers.url_for(image)
19
22
  end
23
+
24
+ private
25
+
26
+ def s3_url(image)
27
+ "s3://#{service(image).bucket.name}/#{image.key}"
28
+ end
29
+
30
+ def use_s3_url(image)
31
+ config.use_s3_urls && service(image).is_a?(::ActiveStorage::Service::S3Service)
32
+ end
33
+
34
+ def gcs_url(image)
35
+ "gs://#{config.gcs_bucket}/#{image.key}"
36
+ end
37
+
38
+ def use_gcs_url(image)
39
+ config.use_gcs_urls && service(image).is_a?(::ActiveStorage::Service::GCSService)
40
+ end
41
+
42
+ def service(image)
43
+ unwrap_service(image.service)
44
+ end
45
+
46
+ def unwrap_service(service)
47
+ return service unless defined?(::ActiveStorage::Service::MirrorService)
48
+ return service unless service.is_a?(::ActiveStorage::Service::MirrorService)
49
+ unwrap_service(service.primary)
50
+ end
51
+
52
+ def config
53
+ Imgproxy.config
54
+ end
20
55
  end
21
56
  end
22
57
  end
@@ -8,18 +8,28 @@ module Imgproxy
8
8
  #
9
9
  # Imgproxy.url_for(user.avatar)
10
10
  class Shrine
11
- def initialize(host: nil)
12
- @host = host
13
- end
14
-
15
11
  def applicable?(image)
16
12
  image.is_a?(::Shrine::UploadedFile)
17
13
  end
18
14
 
19
15
  def url(image)
16
+ return s3_url(image) if use_s3_url(image)
17
+
20
18
  opts = {}
21
- opts[:host] = @host if @host
22
- image.url(opts)
19
+ opts[:host] = Imgproxy.config.shrine_host if Imgproxy.config.shrine_host
20
+ image.url(**opts)
21
+ end
22
+
23
+ private
24
+
25
+ def s3_url(image)
26
+ path = [*image.storage.prefix, image.id].join("/")
27
+ "s3://#{image.storage.bucket.name}/#{path}"
28
+ end
29
+
30
+ def use_s3_url(image)
31
+ Imgproxy.config.use_s3_urls &&
32
+ image.storage.is_a?(::Shrine::Storage::S3)
23
33
  end
24
34
  end
25
35
  end
@@ -1,9 +1,5 @@
1
1
  require "imgproxy/url_adapters/active_storage"
2
- require "imgproxy/url_adapters/active_storage_s3"
3
- require "imgproxy/url_adapters/active_storage_gcs"
4
-
5
2
  require "imgproxy/url_adapters/shrine"
6
- require "imgproxy/url_adapters/shrine_s3"
7
3
 
8
4
  module Imgproxy
9
5
  # URL adapters config. Allows to use this gem with ActiveStorage, Shrine, etc.
@@ -1,3 +1,3 @@
1
1
  module Imgproxy
2
- VERSION = "1.2.0".freeze
2
+ VERSION = "2.1.0".freeze
3
3
  end
data/lib/imgproxy.rb CHANGED
@@ -19,8 +19,8 @@ module Imgproxy
19
19
  #
20
20
  # Imgproxy.configure do |config|
21
21
  # config.endpoint = "http://imgproxy.example.com"
22
- # config.hex_key = "your_key"
23
- # config.hex_salt = "your_salt"
22
+ # config.key = "your_key"
23
+ # config.salt = "your_salt"
24
24
  # config.use_short_options = true
25
25
  # end
26
26
  #
@@ -38,92 +38,114 @@ module Imgproxy
38
38
  # width: 500,
39
39
  # height: 400,
40
40
  # resizing_type: :fill,
41
- # sharpen: 0.5
41
+ # sharpen: 0.5,
42
+ # gravity: {
43
+ # type: :soea,
44
+ # x_offset: 10,
45
+ # y_offset: 5,
46
+ # },
47
+ # crop: {
48
+ # width: 2000,
49
+ # height: 1000,
50
+ # gravity: {
51
+ # type: :nowe,
52
+ # x_offset: 20,
53
+ # y_offset: 30,
54
+ # },
55
+ # },
42
56
  # )
43
57
  #
44
58
  # @return [String] imgproxy URL
45
59
  # @param [String,URI, Object] image Source image URL or object applicable for
46
60
  # the configured URL adapters
47
61
  # @param [Hash] options Processing options
62
+ # @option options [Hash|Array|String] :resize
63
+ # @option options [Hash|Array|String] :size
48
64
  # @option options [String] :resizing_type
65
+ # @option options [String] :resizing_algorithm supported only by imgproxy pro
49
66
  # @option options [Integer] :width
50
67
  # @option options [Integer] :height
51
68
  # @option options [Float] :dpr
52
69
  # @option options [Boolean] :enlarge
53
- # @option options [Boolean] :extend
54
- # @option options [String] :extend_gravity
55
- # @option options [Float] :extend_gravity_x
56
- # @option options [Float] :extend_gravity_y
57
- # @option options [String] :gravity
58
- # @option options [Float] :gravity_x
59
- # @option options [Float] :gravity_y
60
- # @option options [Integer] :crop_width
61
- # @option options [Integer] :crop_height
62
- # @option options [String] :crop_gravity
63
- # @option options [Float] :crop_gravity_x
64
- # @option options [Float] :crop_gravity_y
65
- # @option options [Integer] :trim_threshold
66
- # @option options [String] :trim_color
70
+ # @option options [Hash|Array|Boolean|String] :extend
71
+ # @option options [Hash|Array|String] :gravity
72
+ # @option options [Hash|Array|String] :crop
67
73
  # @option options [Array] :padding
68
- # @option options [Boolean] :trim_equal_hor
69
- # @option options [Boolean] :trim_equal_ver
74
+ # @option options [Hash|Array|String] :trim
75
+ # @option options [Integer] :rotate
70
76
  # @option options [Integer] :quality
71
77
  # @option options [Integer] :max_bytes
72
- # @option options [Array] :background
78
+ # @option options [Array|String] :background
79
+ # @option options [Float] :background_alpha supported only by imgproxy pro
80
+ # @option options [Hash|Array|String] :adjust
73
81
  # @option options [Integer] :brightness supported only by imgproxy pro
74
82
  # @option options [Float] :contrast supported only by imgproxy pro
75
83
  # @option options [Float] :saturation supported only by imgproxy pro
76
84
  # @option options [Float] :blur
77
85
  # @option options [Float] :sharpen
78
86
  # @option options [Integer] :pixelate supported only by imgproxy pro
79
- # @option options [Float] :watermark_opacity
80
- # @option options [String] :watermark_position
81
- # @option options [Integer] :watermark_x_offset
82
- # @option options [Integer] :watermark_y_offset
83
- # @option options [Float] :watermark_scale
87
+ # @option options [String] :unsharpening supported only by imgproxy pro
88
+ # @option options [Hash|Array|Float|String] :watermark
89
+ # @option options [String] :watermark_url supported only by imgproxy pro
84
90
  # @option options [String] :style supported only by imgproxy pro
91
+ # @option options [Hash|Array|String] :jpeg_options supported only by imgproxy pro
92
+ # @option options [Hash|Array|String] :png_options supported only by imgproxy pro
93
+ # @option options [Hash|Array|String] :gif_options supported only by imgproxy pro
94
+ # @option options [Integer] :page supported only by imgproxy pro
95
+ # @option options [Integer] :video_thumbnail_second supported only by imgproxy pro
85
96
  # @option options [Array] :preset
86
97
  # @option options [String] :cachebuster
98
+ # @option options [Boolean] :strip_metadata
99
+ # @option options [Boolean] :strip_color_profile
100
+ # @option options [Boolean] :auto_rotate
101
+ # @option options [String] :filename
87
102
  # @option options [String] :format
103
+ # @option options [Boolean] :return_attachment
104
+ # @option options [Integer] :expires
88
105
  # @option options [Boolean] :use_short_options
89
106
  # @option options [Boolean] :base64_encode_urls
90
- # @see https://github.com/DarthSim/imgproxy/blob/master/docs/generating_the_url_advanced.md
91
- # imgproxy URL format documentation
107
+ # @option options [Boolean] :escape_plain_url
108
+ # @see https://docs.imgproxy.net/#/generating_the_url_advanced?id=processing-options
109
+ # Available imgproxy URL processing options and their arguments
92
110
  def url_for(image, options = {})
93
111
  Imgproxy::Builder.new(options).url_for(image)
94
112
  end
95
113
 
96
- # Extends ActiveStorage::Blob with {Imgproxy::Extensions::ActiveStorage.imgproxy_url} method
97
- # and adds URL adapters for ActiveStorage
114
+ # Genrates imgproxy info URL. Supported only by imgproxy pro
98
115
  #
99
- # @return [void]
100
- # @param use_s3 [Boolean] enable Amazon S3 source URLs
101
- # @param use_gcs [Boolean] enable Google Cloud Storage source URLs
102
- # @param gcs_bucket [String] Google Cloud Storage bucket name
103
- def extend_active_storage!(use_s3: false, use_gcs: false, gcs_bucket: nil)
104
- ActiveSupport.on_load(:active_storage_blob) do
105
- ::ActiveStorage::Blob.include Imgproxy::Extensions::ActiveStorage
116
+ # Imgproxy.info_url_for("http://images.example.com/images/image.jpg")
117
+ #
118
+ # @return [String] imgproxy info URL
119
+ # @param [String,URI, Object] image Source image URL or object applicable for
120
+ # the configured URL adapters
121
+ # @param [Hash] options Processing options
122
+ # @option options [Boolean] :base64_encode_urls
123
+ # @option options [Boolean] :escape_plain_url
124
+ def info_url_for(image, options = {})
125
+ Imgproxy::Builder.new(options).info_url_for(image)
126
+ end
106
127
 
107
- url_adapters = Imgproxy.config.url_adapters
128
+ # Extends +ActiveStorage::Blob+ with {Imgproxy::Extensions::ActiveStorage.imgproxy_url} method
129
+ # and adds URL adapters for ActiveStorage
130
+ def extend_active_storage!
131
+ return unless defined?(ActiveSupport) && ActiveSupport.respond_to?(:on_load)
108
132
 
109
- url_adapters.add(Imgproxy::UrlAdapters::ActiveStorageS3.new) if use_s3
110
- url_adapters.add(Imgproxy::UrlAdapters::ActiveStorageGCS.new(gcs_bucket)) if use_gcs
111
- url_adapters.add(Imgproxy::UrlAdapters::ActiveStorage.new)
133
+ ActiveSupport.on_load(:active_storage_blob) do
134
+ ::ActiveStorage::Blob.include Imgproxy::Extensions::ActiveStorage
135
+ Imgproxy.config.url_adapters.add(Imgproxy::UrlAdapters::ActiveStorage.new)
112
136
  end
113
137
  end
114
138
 
115
- # Extends Shrine::UploadedFile with {Imgproxy::Extensions::Shrine.imgproxy_url} method
139
+ # Extends +Shrine::UploadedFile+ with {Imgproxy::Extensions::Shrine.imgproxy_url} method
116
140
  # and adds URL adapters for Shrine
117
- #
118
- # @return [void]
119
- # @param use_s3 [Boolean] enable Amazon S3 source URLs
120
- def extend_shrine!(host: nil, use_s3: false)
121
- ::Shrine::UploadedFile.include Imgproxy::Extensions::Shrine
122
-
123
- url_adapters = Imgproxy.config.url_adapters
141
+ def extend_shrine!
142
+ return unless defined?(::Shrine::UploadedFile)
124
143
 
125
- url_adapters.add(Imgproxy::UrlAdapters::ShrineS3.new) if use_s3
126
- url_adapters.add(Imgproxy::UrlAdapters::Shrine.new(host: host))
144
+ ::Shrine::UploadedFile.include Imgproxy::Extensions::Shrine
145
+ Imgproxy.config.url_adapters.add(Imgproxy::UrlAdapters::Shrine.new)
127
146
  end
128
147
  end
129
148
  end
149
+
150
+ Imgproxy.extend_active_storage!
151
+ Imgproxy.extend_shrine!
metadata CHANGED
@@ -1,15 +1,43 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: imgproxy
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.0
4
+ version: 2.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sergey Alexandrovich
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-05-11 00:00:00.000000000 Z
11
+ date: 2022-06-14 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: anyway_config
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: 2.0.0
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: 2.0.0
27
+ - !ruby/object:Gem::Dependency
28
+ name: benchmark-memory
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: 0.2.0
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: 0.2.0
13
41
  - !ruby/object:Gem::Dependency
14
42
  name: pry-byebug
15
43
  requirement: !ruby/object:Gem::Requirement
@@ -30,70 +58,70 @@ dependencies:
30
58
  requirements:
31
59
  - - "~>"
32
60
  - !ruby/object:Gem::Version
33
- version: 3.9.0
61
+ version: 3.11.0
34
62
  type: :development
35
63
  prerelease: false
36
64
  version_requirements: !ruby/object:Gem::Requirement
37
65
  requirements:
38
66
  - - "~>"
39
67
  - !ruby/object:Gem::Version
40
- version: 3.9.0
68
+ version: 3.11.0
41
69
  - !ruby/object:Gem::Dependency
42
70
  name: rspec_junit_formatter
43
71
  requirement: !ruby/object:Gem::Requirement
44
72
  requirements:
45
73
  - - "~>"
46
74
  - !ruby/object:Gem::Version
47
- version: 0.4.1
75
+ version: 0.5.1
48
76
  type: :development
49
77
  prerelease: false
50
78
  version_requirements: !ruby/object:Gem::Requirement
51
79
  requirements:
52
80
  - - "~>"
53
81
  - !ruby/object:Gem::Version
54
- version: 0.4.1
82
+ version: 0.5.1
55
83
  - !ruby/object:Gem::Dependency
56
84
  name: rubocop
57
85
  requirement: !ruby/object:Gem::Requirement
58
86
  requirements:
59
87
  - - "~>"
60
88
  - !ruby/object:Gem::Version
61
- version: 0.83.0
89
+ version: 1.30.1
62
90
  type: :development
63
91
  prerelease: false
64
92
  version_requirements: !ruby/object:Gem::Requirement
65
93
  requirements:
66
94
  - - "~>"
67
95
  - !ruby/object:Gem::Version
68
- version: 0.83.0
96
+ version: 1.30.1
69
97
  - !ruby/object:Gem::Dependency
70
98
  name: rubocop-rspec
71
99
  requirement: !ruby/object:Gem::Requirement
72
100
  requirements:
73
101
  - - "~>"
74
102
  - !ruby/object:Gem::Version
75
- version: 1.38.1
103
+ version: 2.11.1
76
104
  type: :development
77
105
  prerelease: false
78
106
  version_requirements: !ruby/object:Gem::Requirement
79
107
  requirements:
80
108
  - - "~>"
81
109
  - !ruby/object:Gem::Version
82
- version: 1.38.1
110
+ version: 2.11.1
83
111
  - !ruby/object:Gem::Dependency
84
112
  name: aws-sdk-s3
85
113
  requirement: !ruby/object:Gem::Requirement
86
114
  requirements:
87
115
  - - "~>"
88
116
  - !ruby/object:Gem::Version
89
- version: 1.64.0
117
+ version: '1.64'
90
118
  type: :development
91
119
  prerelease: false
92
120
  version_requirements: !ruby/object:Gem::Requirement
93
121
  requirements:
94
122
  - - "~>"
95
123
  - !ruby/object:Gem::Version
96
- version: 1.64.0
124
+ version: '1.64'
97
125
  - !ruby/object:Gem::Dependency
98
126
  name: google-cloud-storage
99
127
  requirement: !ruby/object:Gem::Requirement
@@ -114,14 +142,14 @@ dependencies:
114
142
  requirements:
115
143
  - - "~>"
116
144
  - !ruby/object:Gem::Version
117
- version: '5.2'
145
+ version: 7.0.3
118
146
  type: :development
119
147
  prerelease: false
120
148
  version_requirements: !ruby/object:Gem::Requirement
121
149
  requirements:
122
150
  - - "~>"
123
151
  - !ruby/object:Gem::Version
124
- version: '5.2'
152
+ version: 7.0.3
125
153
  - !ruby/object:Gem::Dependency
126
154
  name: shrine
127
155
  requirement: !ruby/object:Gem::Requirement
@@ -164,18 +192,36 @@ files:
164
192
  - lib/imgproxy/extensions/active_storage.rb
165
193
  - lib/imgproxy/extensions/shrine.rb
166
194
  - lib/imgproxy/options.rb
195
+ - lib/imgproxy/options_aliases.rb
196
+ - lib/imgproxy/options_casters/adjust.rb
197
+ - lib/imgproxy/options_casters/array.rb
198
+ - lib/imgproxy/options_casters/base64.rb
199
+ - lib/imgproxy/options_casters/bool.rb
200
+ - lib/imgproxy/options_casters/crop.rb
201
+ - lib/imgproxy/options_casters/extend.rb
202
+ - lib/imgproxy/options_casters/float.rb
203
+ - lib/imgproxy/options_casters/gif_options.rb
204
+ - lib/imgproxy/options_casters/gravity.rb
205
+ - lib/imgproxy/options_casters/group.rb
206
+ - lib/imgproxy/options_casters/integer.rb
207
+ - lib/imgproxy/options_casters/jpeg_options.rb
208
+ - lib/imgproxy/options_casters/png_options.rb
209
+ - lib/imgproxy/options_casters/resize.rb
210
+ - lib/imgproxy/options_casters/size.rb
211
+ - lib/imgproxy/options_casters/string.rb
212
+ - lib/imgproxy/options_casters/trim.rb
213
+ - lib/imgproxy/options_casters/watermark.rb
214
+ - lib/imgproxy/trim_array.rb
167
215
  - lib/imgproxy/url_adapters.rb
168
216
  - lib/imgproxy/url_adapters/active_storage.rb
169
- - lib/imgproxy/url_adapters/active_storage_gcs.rb
170
- - lib/imgproxy/url_adapters/active_storage_s3.rb
171
217
  - lib/imgproxy/url_adapters/shrine.rb
172
- - lib/imgproxy/url_adapters/shrine_s3.rb
173
218
  - lib/imgproxy/version.rb
174
219
  homepage: https://github.com/imgproxy/imgproxy.rb
175
220
  licenses:
176
221
  - MIT
177
- metadata: {}
178
- post_install_message:
222
+ metadata:
223
+ rubygems_mfa_required: 'true'
224
+ post_install_message:
179
225
  rdoc_options: []
180
226
  require_paths:
181
227
  - lib
@@ -183,15 +229,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
183
229
  requirements:
184
230
  - - ">="
185
231
  - !ruby/object:Gem::Version
186
- version: '2.0'
232
+ version: '2.5'
187
233
  required_rubygems_version: !ruby/object:Gem::Requirement
188
234
  requirements:
189
235
  - - ">="
190
236
  - !ruby/object:Gem::Version
191
237
  version: '0'
192
238
  requirements: []
193
- rubygems_version: 3.0.3
194
- signing_key:
239
+ rubygems_version: 3.3.7
240
+ signing_key:
195
241
  specification_version: 4
196
242
  summary: imgproxy URL generator
197
243
  test_files: []