imagekitio 4.0.0 → 4.1.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.
Files changed (102) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +47 -0
  3. data/README.md +1 -1
  4. data/lib/imagekitio/client.rb +4 -0
  5. data/lib/imagekitio/helpers/helper.rb +4 -0
  6. data/lib/imagekitio/helpers/transformation_utils.rb +7 -0
  7. data/lib/imagekitio/internal/transport/base_client.rb +7 -1
  8. data/lib/imagekitio/internal/transport/pooled_net_requester.rb +17 -24
  9. data/lib/imagekitio/internal/type/base_model.rb +1 -0
  10. data/lib/imagekitio/internal/type/union.rb +20 -8
  11. data/lib/imagekitio/internal/util.rb +7 -2
  12. data/lib/imagekitio/models/base_overlay.rb +73 -3
  13. data/lib/imagekitio/models/beta/v2/file_upload_params.rb +2 -2
  14. data/lib/imagekitio/models/beta/v2/file_upload_response.rb +21 -1
  15. data/lib/imagekitio/models/extension_config.rb +674 -0
  16. data/lib/imagekitio/models/extensions.rb +559 -1
  17. data/lib/imagekitio/models/file_update_response.rb +21 -1
  18. data/lib/imagekitio/models/file_upload_params.rb +2 -2
  19. data/lib/imagekitio/models/file_upload_response.rb +21 -1
  20. data/lib/imagekitio/models/image_overlay.rb +12 -0
  21. data/lib/imagekitio/models/saved_extension.rb +62 -0
  22. data/lib/imagekitio/models/saved_extension_create_params.rb +42 -0
  23. data/lib/imagekitio/models/saved_extension_delete_params.rb +14 -0
  24. data/lib/imagekitio/models/saved_extension_get_params.rb +14 -0
  25. data/lib/imagekitio/models/saved_extension_list_params.rb +14 -0
  26. data/lib/imagekitio/models/saved_extension_list_response.rb +8 -0
  27. data/lib/imagekitio/models/saved_extension_update_params.rb +42 -0
  28. data/lib/imagekitio/models/solid_color_overlay_transformation.rb +24 -12
  29. data/lib/imagekitio/models/subtitle_overlay.rb +12 -0
  30. data/lib/imagekitio/models/subtitle_overlay_transformation.rb +4 -3
  31. data/lib/imagekitio/models/text_overlay.rb +6 -0
  32. data/lib/imagekitio/models/text_overlay_transformation.rb +35 -19
  33. data/lib/imagekitio/models/transformation.rb +62 -12
  34. data/lib/imagekitio/models/unsafe_unwrap_webhook_event.rb +2 -0
  35. data/lib/imagekitio/models/unwrap_webhook_event.rb +2 -0
  36. data/lib/imagekitio/models/update_file_request.rb +2 -2
  37. data/lib/imagekitio/models/upload_pre_transform_success_event.rb +21 -1
  38. data/lib/imagekitio/models/video_overlay.rb +12 -0
  39. data/lib/imagekitio/models.rb +14 -0
  40. data/lib/imagekitio/resources/beta/v2/files.rb +1 -1
  41. data/lib/imagekitio/resources/files/metadata.rb +1 -1
  42. data/lib/imagekitio/resources/files.rb +1 -1
  43. data/lib/imagekitio/resources/saved_extensions.rb +146 -0
  44. data/lib/imagekitio/version.rb +1 -1
  45. data/lib/imagekitio.rb +11 -1
  46. data/manifest.yaml +2 -0
  47. data/rbi/imagekitio/client.rbi +3 -0
  48. data/rbi/imagekitio/internal/transport/base_client.rbi +5 -0
  49. data/rbi/imagekitio/internal/transport/pooled_net_requester.rbi +6 -2
  50. data/rbi/imagekitio/internal/type/base_model.rbi +8 -4
  51. data/rbi/imagekitio/models/base_overlay.rbi +110 -1
  52. data/rbi/imagekitio/models/beta/v2/file_upload_params.rbi +8 -0
  53. data/rbi/imagekitio/models/beta/v2/file_upload_response.rbi +61 -0
  54. data/rbi/imagekitio/models/extension_config.rbi +1406 -0
  55. data/rbi/imagekitio/models/extensions.rbi +1162 -0
  56. data/rbi/imagekitio/models/file_update_response.rbi +61 -0
  57. data/rbi/imagekitio/models/file_upload_params.rbi +8 -0
  58. data/rbi/imagekitio/models/file_upload_response.rbi +61 -0
  59. data/rbi/imagekitio/models/image_overlay.rbi +18 -0
  60. data/rbi/imagekitio/models/saved_extension.rbi +114 -0
  61. data/rbi/imagekitio/models/saved_extension_create_params.rbi +85 -0
  62. data/rbi/imagekitio/models/saved_extension_delete_params.rbi +30 -0
  63. data/rbi/imagekitio/models/saved_extension_get_params.rbi +30 -0
  64. data/rbi/imagekitio/models/saved_extension_list_params.rbi +30 -0
  65. data/rbi/imagekitio/models/saved_extension_list_response.rbi +11 -0
  66. data/rbi/imagekitio/models/saved_extension_update_params.rbi +106 -0
  67. data/rbi/imagekitio/models/solid_color_overlay_transformation.rbi +33 -18
  68. data/rbi/imagekitio/models/subtitle_overlay.rbi +18 -0
  69. data/rbi/imagekitio/models/subtitle_overlay_transformation.rbi +6 -4
  70. data/rbi/imagekitio/models/text_overlay.rbi +9 -0
  71. data/rbi/imagekitio/models/text_overlay_transformation.rbi +47 -26
  72. data/rbi/imagekitio/models/transformation.rbi +99 -18
  73. data/rbi/imagekitio/models/update_file_request.rbi +8 -0
  74. data/rbi/imagekitio/models/upload_pre_transform_success_event.rbi +61 -0
  75. data/rbi/imagekitio/models/video_overlay.rbi +18 -0
  76. data/rbi/imagekitio/models.rbi +14 -0
  77. data/rbi/imagekitio/resources/beta/v2/files.rbi +2 -0
  78. data/rbi/imagekitio/resources/files.rbi +2 -0
  79. data/rbi/imagekitio/resources/saved_extensions.rbi +114 -0
  80. data/sig/imagekitio/client.rbs +2 -0
  81. data/sig/imagekitio/internal/transport/base_client.rbs +2 -0
  82. data/sig/imagekitio/internal/transport/pooled_net_requester.rbs +4 -1
  83. data/sig/imagekitio/models/base_overlay.rbs +22 -0
  84. data/sig/imagekitio/models/beta/v2/file_upload_response.rbs +21 -0
  85. data/sig/imagekitio/models/extension_config.rbs +606 -0
  86. data/sig/imagekitio/models/extensions.rbs +491 -0
  87. data/sig/imagekitio/models/file_update_response.rbs +21 -0
  88. data/sig/imagekitio/models/file_upload_response.rbs +21 -0
  89. data/sig/imagekitio/models/saved_extension.rbs +59 -0
  90. data/sig/imagekitio/models/saved_extension_create_params.rbs +36 -0
  91. data/sig/imagekitio/models/saved_extension_delete_params.rbs +15 -0
  92. data/sig/imagekitio/models/saved_extension_get_params.rbs +15 -0
  93. data/sig/imagekitio/models/saved_extension_list_params.rbs +15 -0
  94. data/sig/imagekitio/models/saved_extension_list_response.rbs +7 -0
  95. data/sig/imagekitio/models/saved_extension_update_params.rbs +44 -0
  96. data/sig/imagekitio/models/solid_color_overlay_transformation.rbs +1 -1
  97. data/sig/imagekitio/models/text_overlay_transformation.rbs +1 -1
  98. data/sig/imagekitio/models/transformation.rbs +15 -1
  99. data/sig/imagekitio/models/upload_pre_transform_success_event.rbs +21 -0
  100. data/sig/imagekitio/models.rbs +14 -0
  101. data/sig/imagekitio/resources/saved_extensions.rbs +33 -0
  102. metadata +43 -2
@@ -104,6 +104,12 @@ module Imagekitio
104
104
  #
105
105
  # - A solid color: e.g., `red`, `F3F3F3`, `AAFF0010`. See
106
106
  # [Solid color background](https://imagekit.io/docs/effects-and-enhancements#solid-color-background).
107
+ # - Dominant color: `dominant` extracts the dominant color from the image. See
108
+ # [Dominant color background](https://imagekit.io/docs/effects-and-enhancements#dominant-color-background).
109
+ # - Gradient: `gradient_dominant` or `gradient_dominant_2` creates a gradient
110
+ # using the dominant colors. Optionally specify palette size (2 or 4), e.g.,
111
+ # `gradient_dominant_4`. See
112
+ # [Gradient background](https://imagekit.io/docs/effects-and-enhancements#gradient-background).
107
113
  # - A blurred background: e.g., `blurred`, `blurred_25_N15`, etc. See
108
114
  # [Blurred background](https://imagekit.io/docs/effects-and-enhancements#blurred-background).
109
115
  # - Expand the image boundaries using generative fill: `genfill`. Not supported
@@ -139,6 +145,19 @@ module Imagekitio
139
145
  # @return [Boolean, nil]
140
146
  optional :color_profile, Imagekitio::Internal::Type::Boolean, api_name: :colorProfile
141
147
 
148
+ # @!attribute color_replace
149
+ # Replaces colors in the image. Supports three formats:
150
+ #
151
+ # - `toColor` - Replace dominant color with the specified color.
152
+ # - `toColor_tolerance` - Replace dominant color with specified tolerance (0-100).
153
+ # - `toColor_tolerance_fromColor` - Replace a specific color with another within
154
+ # tolerance range. Colors can be hex codes (e.g., `FF0022`) or names (e.g.,
155
+ # `red`, `blue`). See
156
+ # [Color replacement](https://imagekit.io/docs/effects-and-enhancements#color-replace---cr).
157
+ #
158
+ # @return [String, nil]
159
+ optional :color_replace, String, api_name: :colorReplace
160
+
142
161
  # @!attribute contrast_stretch
143
162
  # Automatically enhances the contrast of an image (contrast stretch). See
144
163
  # [Contrast Stretch](https://imagekit.io/docs/effects-and-enhancements#contrast-stretch---e-contrast).
@@ -170,10 +189,25 @@ module Imagekitio
170
189
  # @return [String, nil]
171
190
  optional :default_image, String, api_name: :defaultImage
172
191
 
192
+ # @!attribute distort
193
+ # Distorts the shape of an image. Supports two modes:
194
+ #
195
+ # - Perspective distortion: `p-x1_y1_x2_y2_x3_y3_x4_y4` changes the position of
196
+ # the four corners starting clockwise from top-left.
197
+ # - Arc distortion: `a-degrees` curves the image upwards (positive values) or
198
+ # downwards (negative values). See
199
+ # [Distort effect](https://imagekit.io/docs/effects-and-enhancements#distort---e-distort).
200
+ #
201
+ # @return [String, nil]
202
+ optional :distort, String
203
+
173
204
  # @!attribute dpr
174
205
  # Accepts values between 0.1 and 5, or `auto` for automatic device pixel ratio
175
- # (DPR) calculation. See
176
- # [DPR](https://imagekit.io/docs/image-resize-and-crop#dpr---dpr).
206
+ # (DPR) calculation. Also accepts arithmetic expressions.
207
+ #
208
+ # - Learn about
209
+ # [Arithmetic expressions](https://imagekit.io/docs/arithmetic-expressions-in-transformations).
210
+ # - See [DPR](https://imagekit.io/docs/image-resize-and-crop#dpr---dpr).
177
211
  #
178
212
  # @return [Float, nil]
179
213
  optional :dpr, Float
@@ -330,11 +364,16 @@ module Imagekitio
330
364
  optional :quality, Float
331
365
 
332
366
  # @!attribute radius
333
- # Specifies the corner radius for rounded corners (e.g., 20) or `max` for circular
334
- # or oval shape. See
335
- # [Radius](https://imagekit.io/docs/effects-and-enhancements#radius---r).
367
+ # Specifies the corner radius for rounded corners.
368
+ #
369
+ # - Single value (positive integer): Applied to all corners (e.g., `20`).
370
+ # - `max`: Creates a circular or oval shape.
371
+ # - Per-corner array: Provide four underscore-separated values representing
372
+ # top-left, top-right, bottom-right, and bottom-left corners respectively (e.g.,
373
+ # `10_20_30_40`). See
374
+ # [Radius](https://imagekit.io/docs/effects-and-enhancements#radius---r).
336
375
  #
337
- # @return [Float, Symbol, :max, nil]
376
+ # @return [Float, Symbol, :max, String, nil]
338
377
  optional :radius, union: -> { Imagekitio::Transformation::Radius }
339
378
 
340
379
  # @!attribute raw
@@ -459,7 +498,7 @@ module Imagekitio
459
498
  # @return [Float, nil]
460
499
  optional :zoom, Float
461
500
 
462
- # @!method initialize(ai_change_background: nil, ai_drop_shadow: nil, ai_edit: nil, ai_remove_background: nil, ai_remove_background_external: nil, ai_retouch: nil, ai_upscale: nil, ai_variation: nil, aspect_ratio: nil, audio_codec: nil, background: nil, blur: nil, border: nil, color_profile: nil, contrast_stretch: nil, crop: nil, crop_mode: nil, default_image: nil, dpr: nil, duration: nil, end_offset: nil, flip: nil, focus: nil, format_: nil, gradient: nil, grayscale: nil, height: nil, lossless: nil, metadata: nil, named: nil, opacity: nil, original: nil, overlay: nil, page: nil, progressive: nil, quality: nil, radius: nil, raw: nil, rotation: nil, shadow: nil, sharpen: nil, start_offset: nil, streaming_resolutions: nil, trim: nil, unsharp_mask: nil, video_codec: nil, width: nil, x: nil, x_center: nil, y_: nil, y_center: nil, zoom: nil)
501
+ # @!method initialize(ai_change_background: nil, ai_drop_shadow: nil, ai_edit: nil, ai_remove_background: nil, ai_remove_background_external: nil, ai_retouch: nil, ai_upscale: nil, ai_variation: nil, aspect_ratio: nil, audio_codec: nil, background: nil, blur: nil, border: nil, color_profile: nil, color_replace: nil, contrast_stretch: nil, crop: nil, crop_mode: nil, default_image: nil, distort: nil, dpr: nil, duration: nil, end_offset: nil, flip: nil, focus: nil, format_: nil, gradient: nil, grayscale: nil, height: nil, lossless: nil, metadata: nil, named: nil, opacity: nil, original: nil, overlay: nil, page: nil, progressive: nil, quality: nil, radius: nil, raw: nil, rotation: nil, shadow: nil, sharpen: nil, start_offset: nil, streaming_resolutions: nil, trim: nil, unsharp_mask: nil, video_codec: nil, width: nil, x: nil, x_center: nil, y_: nil, y_center: nil, zoom: nil)
463
502
  # Some parameter documentations has been truncated, see
464
503
  # {Imagekitio::Models::Transformation} for more details.
465
504
  #
@@ -498,6 +537,8 @@ module Imagekitio
498
537
  #
499
538
  # @param color_profile [Boolean] Indicates whether the output image should retain the original color profile.
500
539
  #
540
+ # @param color_replace [String] Replaces colors in the image. Supports three formats:
541
+ #
501
542
  # @param contrast_stretch [Boolean, Imagekitio::Models::Transformation::ContrastStretch] Automatically enhances the contrast of an image (contrast stretch).
502
543
  #
503
544
  # @param crop [Symbol, Imagekitio::Models::Transformation::Crop] Crop modes for image resizing. See [Crop modes & focus](https://imagekit.io/docs
@@ -506,6 +547,8 @@ module Imagekitio
506
547
  #
507
548
  # @param default_image [String] Specifies a fallback image if the resource is not found, e.g., a URL or file pat
508
549
  #
550
+ # @param distort [String] Distorts the shape of an image. Supports two modes:
551
+ #
509
552
  # @param dpr [Float] Accepts values between 0.1 and 5, or `auto` for automatic device pixel ratio (DP
510
553
  #
511
554
  # @param duration [Float, String] Specifies the duration (in seconds) for trimming videos, e.g., `5` or `10.5`.
@@ -542,7 +585,7 @@ module Imagekitio
542
585
  #
543
586
  # @param quality [Float] Specifies the quality of the output image for lossy formats such as JPEG, WebP,
544
587
  #
545
- # @param radius [Float, Symbol, :max] Specifies the corner radius for rounded corners (e.g., 20) or `max` for circular
588
+ # @param radius [Float, Symbol, :max, String] Specifies the corner radius for rounded corners.
546
589
  #
547
590
  # @param raw [String] Pass any transformation not directly supported by the SDK.
548
591
  #
@@ -886,9 +929,14 @@ module Imagekitio
886
929
  # @return [Array(Float, String)]
887
930
  end
888
931
 
889
- # Specifies the corner radius for rounded corners (e.g., 20) or `max` for circular
890
- # or oval shape. See
891
- # [Radius](https://imagekit.io/docs/effects-and-enhancements#radius---r).
932
+ # Specifies the corner radius for rounded corners.
933
+ #
934
+ # - Single value (positive integer): Applied to all corners (e.g., `20`).
935
+ # - `max`: Creates a circular or oval shape.
936
+ # - Per-corner array: Provide four underscore-separated values representing
937
+ # top-left, top-right, bottom-right, and bottom-left corners respectively (e.g.,
938
+ # `10_20_30_40`). See
939
+ # [Radius](https://imagekit.io/docs/effects-and-enhancements#radius---r).
892
940
  #
893
941
  # @see Imagekitio::Models::Transformation#radius
894
942
  module Radius
@@ -898,8 +946,10 @@ module Imagekitio
898
946
 
899
947
  variant const: :max
900
948
 
949
+ variant String
950
+
901
951
  # @!method self.variants
902
- # @return [Array(Float, Symbol, :max)]
952
+ # @return [Array(Float, Symbol, :max, String)]
903
953
  end
904
954
 
905
955
  # Specifies the rotation angle in degrees. Positive values rotate the image
@@ -8,6 +8,8 @@ module Imagekitio
8
8
  module UnsafeUnwrapWebhookEvent
9
9
  extend Imagekitio::Internal::Type::Union
10
10
 
11
+ discriminator :type
12
+
11
13
  # Triggered when a new video transformation request is accepted for processing. This event confirms that ImageKit has received and queued your transformation request. Use this for debugging and tracking transformation lifecycle.
12
14
  variant -> { Imagekitio::VideoTransformationAcceptedEvent }
13
15
 
@@ -8,6 +8,8 @@ module Imagekitio
8
8
  module UnwrapWebhookEvent
9
9
  extend Imagekitio::Internal::Type::Union
10
10
 
11
+ discriminator :type
12
+
11
13
  # Triggered when a new video transformation request is accepted for processing. This event confirms that ImageKit has received and queued your transformation request. Use this for debugging and tracking transformation lifecycle.
12
14
  variant -> { Imagekitio::VideoTransformationAcceptedEvent }
13
15
 
@@ -38,7 +38,7 @@ module Imagekitio
38
38
  # Array of extensions to be applied to the asset. Each extension can be configured
39
39
  # with specific parameters based on the extension type.
40
40
  #
41
- # @return [Array<Imagekitio::Models::ExtensionItem::RemoveBg, Imagekitio::Models::ExtensionItem::AIAutoDescription, Imagekitio::Models::ExtensionItem::AutoTaggingExtension>, nil]
41
+ # @return [Array<Imagekitio::Models::ExtensionItem::RemoveBg, Imagekitio::Models::ExtensionItem::AIAutoDescription, Imagekitio::Models::ExtensionItem::AITasks, Imagekitio::Models::ExtensionItem::SavedExtension, Imagekitio::Models::ExtensionItem::AutoTaggingExtension>, nil]
42
42
  optional :extensions, -> { Imagekitio::Internal::Type::ArrayOf[union: Imagekitio::ExtensionItem] }
43
43
 
44
44
  # @!attribute remove_ai_tags
@@ -82,7 +82,7 @@ module Imagekitio
82
82
  #
83
83
  # @param description [String] Optional text to describe the contents of the file.
84
84
  #
85
- # @param extensions [Array<Imagekitio::Models::ExtensionItem::RemoveBg, Imagekitio::Models::ExtensionItem::AIAutoDescription, Imagekitio::Models::ExtensionItem::AutoTaggingExtension>] Array of extensions to be applied to the asset. Each extension can be configured
85
+ # @param extensions [Array<Imagekitio::Models::ExtensionItem::RemoveBg, Imagekitio::Models::ExtensionItem::AIAutoDescription, Imagekitio::Models::ExtensionItem::AITasks, Imagekitio::Models::ExtensionItem::SavedExtension, Imagekitio::Models::ExtensionItem::AutoTaggingExtension>] Array of extensions to be applied to the asset. Each extension can be configured
86
86
  #
87
87
  # @param remove_ai_tags [Array<String>, Symbol, :all] An array of AITags associated with the file that you want to remove, e.g. `["car
88
88
  #
@@ -339,6 +339,13 @@ module Imagekitio
339
339
  },
340
340
  api_name: :"ai-auto-description"
341
341
 
342
+ # @!attribute ai_tasks
343
+ #
344
+ # @return [Symbol, Imagekitio::Models::UploadPreTransformSuccessEvent::Data::ExtensionStatus::AITasks, nil]
345
+ optional :ai_tasks,
346
+ enum: -> { Imagekitio::UploadPreTransformSuccessEvent::Data::ExtensionStatus::AITasks },
347
+ api_name: :"ai-tasks"
348
+
342
349
  # @!attribute aws_auto_tagging
343
350
  #
344
351
  # @return [Symbol, Imagekitio::Models::UploadPreTransformSuccessEvent::Data::ExtensionStatus::AwsAutoTagging, nil]
@@ -364,7 +371,7 @@ module Imagekitio
364
371
  enum: -> { Imagekitio::UploadPreTransformSuccessEvent::Data::ExtensionStatus::RemoveBg },
365
372
  api_name: :"remove-bg"
366
373
 
367
- # @!method initialize(ai_auto_description: nil, aws_auto_tagging: nil, google_auto_tagging: nil, remove_bg: nil)
374
+ # @!method initialize(ai_auto_description: nil, ai_tasks: nil, aws_auto_tagging: nil, google_auto_tagging: nil, remove_bg: nil)
368
375
  # Extension names with their processing status at the time of completion of the
369
376
  # request. It could have one of the following status values:
370
377
  #
@@ -376,6 +383,7 @@ module Imagekitio
376
383
  # If no extension was requested, then this parameter is not returned.
377
384
  #
378
385
  # @param ai_auto_description [Symbol, Imagekitio::Models::UploadPreTransformSuccessEvent::Data::ExtensionStatus::AIAutoDescription]
386
+ # @param ai_tasks [Symbol, Imagekitio::Models::UploadPreTransformSuccessEvent::Data::ExtensionStatus::AITasks]
379
387
  # @param aws_auto_tagging [Symbol, Imagekitio::Models::UploadPreTransformSuccessEvent::Data::ExtensionStatus::AwsAutoTagging]
380
388
  # @param google_auto_tagging [Symbol, Imagekitio::Models::UploadPreTransformSuccessEvent::Data::ExtensionStatus::GoogleAutoTagging]
381
389
  # @param remove_bg [Symbol, Imagekitio::Models::UploadPreTransformSuccessEvent::Data::ExtensionStatus::RemoveBg]
@@ -392,6 +400,18 @@ module Imagekitio
392
400
  # @return [Array<Symbol>]
393
401
  end
394
402
 
403
+ # @see Imagekitio::Models::UploadPreTransformSuccessEvent::Data::ExtensionStatus#ai_tasks
404
+ module AITasks
405
+ extend Imagekitio::Internal::Type::Enum
406
+
407
+ SUCCESS = :success
408
+ PENDING = :pending
409
+ FAILED = :failed
410
+
411
+ # @!method self.values
412
+ # @return [Array<Symbol>]
413
+ end
414
+
395
415
  # @see Imagekitio::Models::UploadPreTransformSuccessEvent::Data::ExtensionStatus#aws_auto_tagging
396
416
  module AwsAutoTagging
397
417
  extend Imagekitio::Internal::Type::Enum
@@ -21,6 +21,12 @@ module Imagekitio
21
21
  # parameter to `base64`. To always use plain text (`i-{input}`), set it to
22
22
  # `plain`.
23
23
  #
24
+ # Regardless of the encoding method:
25
+ #
26
+ # - Leading and trailing slashes are removed.
27
+ # - Remaining slashes within the path are replaced with `@@` when using plain
28
+ # text.
29
+ #
24
30
  # @return [Symbol, Imagekitio::Models::VideoOverlay::Encoding, nil]
25
31
  optional :encoding, enum: -> { Imagekitio::VideoOverlay::Encoding }
26
32
 
@@ -49,6 +55,12 @@ module Imagekitio
49
55
  # format automatically. To always use base64 encoding (`ie-{base64}`), set this
50
56
  # parameter to `base64`. To always use plain text (`i-{input}`), set it to
51
57
  # `plain`.
58
+ #
59
+ # Regardless of the encoding method:
60
+ #
61
+ # - Leading and trailing slashes are removed.
62
+ # - Remaining slashes within the path are replaced with `@@` when using plain
63
+ # text.
52
64
  module Encoding
53
65
  extend Imagekitio::Internal::Type::Enum
54
66
 
@@ -61,6 +61,8 @@ module Imagekitio
61
61
 
62
62
  CustomMetadataFieldUpdateParams = Imagekitio::Models::CustomMetadataFieldUpdateParams
63
63
 
64
+ ExtensionConfig = Imagekitio::Models::ExtensionConfig
65
+
64
66
  ExtensionItem = Imagekitio::Models::ExtensionItem
65
67
 
66
68
  # @type [Imagekitio::Internal::Type::Converter]
@@ -112,6 +114,18 @@ module Imagekitio
112
114
 
113
115
  ResponsiveImageAttributes = Imagekitio::Models::ResponsiveImageAttributes
114
116
 
117
+ SavedExtension = Imagekitio::Models::SavedExtension
118
+
119
+ SavedExtensionCreateParams = Imagekitio::Models::SavedExtensionCreateParams
120
+
121
+ SavedExtensionDeleteParams = Imagekitio::Models::SavedExtensionDeleteParams
122
+
123
+ SavedExtensionGetParams = Imagekitio::Models::SavedExtensionGetParams
124
+
125
+ SavedExtensionListParams = Imagekitio::Models::SavedExtensionListParams
126
+
127
+ SavedExtensionUpdateParams = Imagekitio::Models::SavedExtensionUpdateParams
128
+
115
129
  SolidColorOverlay = Imagekitio::Models::SolidColorOverlay
116
130
 
117
131
  SolidColorOverlayTransformation = Imagekitio::Models::SolidColorOverlayTransformation
@@ -52,7 +52,7 @@ module Imagekitio
52
52
  #
53
53
  # @param description [String] Optional text to describe the contents of the file.
54
54
  #
55
- # @param extensions [Array<Imagekitio::Models::ExtensionItem::RemoveBg, Imagekitio::Models::ExtensionItem::AIAutoDescription, Imagekitio::Models::ExtensionItem::AutoTaggingExtension>] Array of extensions to be applied to the asset. Each extension can be configured
55
+ # @param extensions [Array<Imagekitio::Models::ExtensionItem::RemoveBg, Imagekitio::Models::ExtensionItem::AIAutoDescription, Imagekitio::Models::ExtensionItem::AITasks, Imagekitio::Models::ExtensionItem::SavedExtension, Imagekitio::Models::ExtensionItem::AutoTaggingExtension>] Array of extensions to be applied to the asset. Each extension can be configured
56
56
  #
57
57
  # @param folder [String] The folder path in which the image has to be uploaded. If the folder(s) didn't e
58
58
  #
@@ -50,7 +50,7 @@ module Imagekitio
50
50
  parsed, options = Imagekitio::Files::MetadataGetFromURLParams.dump_request(params)
51
51
  @client.request(
52
52
  method: :get,
53
- path: "v1/files/metadata",
53
+ path: "v1/metadata",
54
54
  query: parsed,
55
55
  model: Imagekitio::Metadata,
56
56
  options: options
@@ -242,7 +242,7 @@ module Imagekitio
242
242
  #
243
243
  # @param expire [Integer] The time until your signature is valid. It must be a [Unix time](https://en.wiki
244
244
  #
245
- # @param extensions [Array<Imagekitio::Models::ExtensionItem::RemoveBg, Imagekitio::Models::ExtensionItem::AIAutoDescription, Imagekitio::Models::ExtensionItem::AutoTaggingExtension>] Array of extensions to be applied to the asset. Each extension can be configured
245
+ # @param extensions [Array<Imagekitio::Models::ExtensionItem::RemoveBg, Imagekitio::Models::ExtensionItem::AIAutoDescription, Imagekitio::Models::ExtensionItem::AITasks, Imagekitio::Models::ExtensionItem::SavedExtension, Imagekitio::Models::ExtensionItem::AutoTaggingExtension>] Array of extensions to be applied to the asset. Each extension can be configured
246
246
  #
247
247
  # @param folder [String] The folder path in which the image has to be uploaded. If the folder(s) didn't e
248
248
  #
@@ -0,0 +1,146 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Imagekitio
4
+ module Resources
5
+ class SavedExtensions
6
+ # Some parameter documentations has been truncated, see
7
+ # {Imagekitio::Models::SavedExtensionCreateParams} for more details.
8
+ #
9
+ # This API creates a new saved extension. Saved extensions allow you to save
10
+ # complex extension configurations (like AI tasks) and reuse them by referencing
11
+ # the ID in upload or update file APIs.
12
+ #
13
+ # **Saved extension limit** \
14
+ # You can create a maximum of 100 saved extensions per account.
15
+ #
16
+ # @overload create(config:, description:, name:, request_options: {})
17
+ #
18
+ # @param config [Imagekitio::Models::ExtensionConfig::RemoveBg, Imagekitio::Models::ExtensionConfig::AIAutoDescription, Imagekitio::Models::ExtensionConfig::AITasks, Imagekitio::Models::ExtensionConfig::AutoTaggingExtension] Configuration object for an extension (base extensions only, not saved extension
19
+ #
20
+ # @param description [String] Description of what the saved extension does.
21
+ #
22
+ # @param name [String] Name of the saved extension.
23
+ #
24
+ # @param request_options [Imagekitio::RequestOptions, Hash{Symbol=>Object}, nil]
25
+ #
26
+ # @return [Imagekitio::Models::SavedExtension]
27
+ #
28
+ # @see Imagekitio::Models::SavedExtensionCreateParams
29
+ def create(params)
30
+ parsed, options = Imagekitio::SavedExtensionCreateParams.dump_request(params)
31
+ @client.request(
32
+ method: :post,
33
+ path: "v1/saved-extensions",
34
+ body: parsed,
35
+ model: Imagekitio::SavedExtension,
36
+ options: options
37
+ )
38
+ end
39
+
40
+ # Some parameter documentations has been truncated, see
41
+ # {Imagekitio::Models::SavedExtensionUpdateParams} for more details.
42
+ #
43
+ # This API updates an existing saved extension. You can update the name,
44
+ # description, or config.
45
+ #
46
+ # @overload update(id, config: nil, description: nil, name: nil, request_options: {})
47
+ #
48
+ # @param id [String] The unique ID of the saved extension.
49
+ #
50
+ # @param config [Imagekitio::Models::ExtensionConfig::RemoveBg, Imagekitio::Models::ExtensionConfig::AIAutoDescription, Imagekitio::Models::ExtensionConfig::AITasks, Imagekitio::Models::ExtensionConfig::AutoTaggingExtension] Configuration object for an extension (base extensions only, not saved extension
51
+ #
52
+ # @param description [String] Updated description of the saved extension.
53
+ #
54
+ # @param name [String] Updated name of the saved extension.
55
+ #
56
+ # @param request_options [Imagekitio::RequestOptions, Hash{Symbol=>Object}, nil]
57
+ #
58
+ # @return [Imagekitio::Models::SavedExtension]
59
+ #
60
+ # @see Imagekitio::Models::SavedExtensionUpdateParams
61
+ def update(id, params = {})
62
+ parsed, options = Imagekitio::SavedExtensionUpdateParams.dump_request(params)
63
+ @client.request(
64
+ method: :patch,
65
+ path: ["v1/saved-extensions/%1$s", id],
66
+ body: parsed,
67
+ model: Imagekitio::SavedExtension,
68
+ options: options
69
+ )
70
+ end
71
+
72
+ # This API returns an array of all saved extensions for your account. Saved
73
+ # extensions allow you to save complex extension configurations and reuse them by
74
+ # referencing them by ID in upload or update file APIs.
75
+ #
76
+ # @overload list(request_options: {})
77
+ #
78
+ # @param request_options [Imagekitio::RequestOptions, Hash{Symbol=>Object}, nil]
79
+ #
80
+ # @return [Array<Imagekitio::Models::SavedExtension>]
81
+ #
82
+ # @see Imagekitio::Models::SavedExtensionListParams
83
+ def list(params = {})
84
+ @client.request(
85
+ method: :get,
86
+ path: "v1/saved-extensions",
87
+ model: Imagekitio::Internal::Type::ArrayOf[Imagekitio::SavedExtension],
88
+ options: params[:request_options]
89
+ )
90
+ end
91
+
92
+ # Some parameter documentations has been truncated, see
93
+ # {Imagekitio::Models::SavedExtensionDeleteParams} for more details.
94
+ #
95
+ # This API deletes a saved extension permanently.
96
+ #
97
+ # @overload delete(id, request_options: {})
98
+ #
99
+ # @param id [String] The unique ID of the saved extension.
100
+ #
101
+ # @param request_options [Imagekitio::RequestOptions, Hash{Symbol=>Object}, nil]
102
+ #
103
+ # @return [nil]
104
+ #
105
+ # @see Imagekitio::Models::SavedExtensionDeleteParams
106
+ def delete(id, params = {})
107
+ @client.request(
108
+ method: :delete,
109
+ path: ["v1/saved-extensions/%1$s", id],
110
+ model: NilClass,
111
+ options: params[:request_options]
112
+ )
113
+ end
114
+
115
+ # Some parameter documentations has been truncated, see
116
+ # {Imagekitio::Models::SavedExtensionGetParams} for more details.
117
+ #
118
+ # This API returns details of a specific saved extension by ID.
119
+ #
120
+ # @overload get(id, request_options: {})
121
+ #
122
+ # @param id [String] The unique ID of the saved extension.
123
+ #
124
+ # @param request_options [Imagekitio::RequestOptions, Hash{Symbol=>Object}, nil]
125
+ #
126
+ # @return [Imagekitio::Models::SavedExtension]
127
+ #
128
+ # @see Imagekitio::Models::SavedExtensionGetParams
129
+ def get(id, params = {})
130
+ @client.request(
131
+ method: :get,
132
+ path: ["v1/saved-extensions/%1$s", id],
133
+ model: Imagekitio::SavedExtension,
134
+ options: params[:request_options]
135
+ )
136
+ end
137
+
138
+ # @api private
139
+ #
140
+ # @param client [Imagekitio::Client]
141
+ def initialize(client:)
142
+ @client = client
143
+ end
144
+ end
145
+ end
146
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Imagekitio
4
- VERSION = "4.0.0"
4
+ VERSION = "4.1.1"
5
5
  end
data/lib/imagekitio.rb CHANGED
@@ -3,12 +3,14 @@
3
3
  # Standard libraries.
4
4
  # rubocop:disable Lint/RedundantRequireStatement
5
5
  require "English"
6
+ require "base64"
6
7
  require "cgi"
7
8
  require "date"
8
9
  require "erb"
9
10
  require "etc"
10
11
  require "json"
11
12
  require "net/http"
13
+ require "openssl"
12
14
  require "pathname"
13
15
  require "rbconfig"
14
16
  require "securerandom"
@@ -16,7 +18,6 @@ require "set"
16
18
  require "stringio"
17
19
  require "time"
18
20
  require "uri"
19
- require "base64"
20
21
  # rubocop:enable Lint/RedundantRequireStatement
21
22
 
22
23
  # We already ship the preferred sorbet manifests in the package itself.
@@ -89,6 +90,7 @@ require_relative "imagekitio/models/custom_metadata_field_delete_response"
89
90
  require_relative "imagekitio/models/custom_metadata_field_list_params"
90
91
  require_relative "imagekitio/models/custom_metadata_field_list_response"
91
92
  require_relative "imagekitio/models/custom_metadata_field_update_params"
93
+ require_relative "imagekitio/models/extension_config"
92
94
  require_relative "imagekitio/models/extensions"
93
95
  require_relative "imagekitio/models/file_copy_params"
94
96
  require_relative "imagekitio/models/file_copy_response"
@@ -138,6 +140,13 @@ require_relative "imagekitio/models/overlay"
138
140
  require_relative "imagekitio/models/overlay_position"
139
141
  require_relative "imagekitio/models/overlay_timing"
140
142
  require_relative "imagekitio/models/responsive_image_attributes"
143
+ require_relative "imagekitio/models/saved_extension"
144
+ require_relative "imagekitio/models/saved_extension_create_params"
145
+ require_relative "imagekitio/models/saved_extension_delete_params"
146
+ require_relative "imagekitio/models/saved_extension_get_params"
147
+ require_relative "imagekitio/models/saved_extension_list_params"
148
+ require_relative "imagekitio/models/saved_extension_list_response"
149
+ require_relative "imagekitio/models/saved_extension_update_params"
141
150
  require_relative "imagekitio/models/solid_color_overlay"
142
151
  require_relative "imagekitio/models/solid_color_overlay_transformation"
143
152
  require_relative "imagekitio/models/streaming_resolution"
@@ -177,5 +186,6 @@ require_relative "imagekitio/resources/files/metadata"
177
186
  require_relative "imagekitio/resources/files/versions"
178
187
  require_relative "imagekitio/resources/folders"
179
188
  require_relative "imagekitio/resources/folders/job"
189
+ require_relative "imagekitio/resources/saved_extensions"
180
190
  require_relative "imagekitio/resources/webhooks"
181
191
  require_relative "imagekitio/helpers/helper"
data/manifest.yaml CHANGED
@@ -1,11 +1,13 @@
1
1
  dependencies:
2
2
  - English
3
+ - base64
3
4
  - cgi
4
5
  - date
5
6
  - erb
6
7
  - etc
7
8
  - json
8
9
  - net/http
10
+ - openssl
9
11
  - pathname
10
12
  - rbconfig
11
13
  - securerandom
@@ -26,6 +26,9 @@ module Imagekitio
26
26
  sig { returns(Imagekitio::Resources::Files) }
27
27
  attr_reader :files
28
28
 
29
+ sig { returns(Imagekitio::Resources::SavedExtensions) }
30
+ attr_reader :saved_extensions
31
+
29
32
  sig { returns(Imagekitio::Resources::Assets) }
30
33
  attr_reader :assets
31
34
 
@@ -178,6 +178,11 @@ module Imagekitio
178
178
  private def auth_headers
179
179
  end
180
180
 
181
+ # @api private
182
+ sig { returns(String) }
183
+ private def user_agent
184
+ end
185
+
181
186
  # @api private
182
187
  sig { returns(String) }
183
188
  private def generate_idempotency_key
@@ -26,8 +26,12 @@ module Imagekitio
26
26
 
27
27
  class << self
28
28
  # @api private
29
- sig { params(url: URI::Generic).returns(Net::HTTP) }
30
- def connect(url)
29
+ sig do
30
+ params(cert_store: OpenSSL::X509::Store, url: URI::Generic).returns(
31
+ Net::HTTP
32
+ )
33
+ end
34
+ def connect(cert_store:, url:)
31
35
  end
32
36
 
33
37
  # @api private
@@ -31,7 +31,7 @@ module Imagekitio
31
31
  #
32
32
  # Assumes superclass fields are totally defined before fields are accessed /
33
33
  # defined on subclasses.
34
- sig { params(child: T.self_type).void }
34
+ sig { params(child: Imagekitio::Internal::Type::BaseModel).void }
35
35
  def inherited(child)
36
36
  end
37
37
 
@@ -276,9 +276,13 @@ module Imagekitio
276
276
 
277
277
  # Create a new instance of a model.
278
278
  sig do
279
- params(data: T.any(T::Hash[Symbol, T.anything], T.self_type)).returns(
280
- T.attached_class
281
- )
279
+ params(
280
+ data:
281
+ T.any(
282
+ T::Hash[Symbol, T.anything],
283
+ Imagekitio::Internal::Type::BaseModel
284
+ )
285
+ ).returns(T.attached_class)
282
286
  end
283
287
  def self.new(data = {})
284
288
  end