imagekitio 4.2.0 → 4.4.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 (154) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +73 -0
  3. data/README.md +9 -2
  4. data/lib/imagekitio/client.rb +14 -0
  5. data/lib/imagekitio/helpers/helper.rb +6 -0
  6. data/lib/imagekitio/internal/transport/pooled_net_requester.rb +1 -1
  7. data/lib/imagekitio/internal/type/base_model.rb +5 -5
  8. data/lib/imagekitio/internal/util.rb +54 -8
  9. data/lib/imagekitio/models/accounts/origin_create_params.rb +1 -9
  10. data/lib/imagekitio/models/accounts/origin_delete_params.rb +13 -1
  11. data/lib/imagekitio/models/accounts/origin_get_params.rb +13 -1
  12. data/lib/imagekitio/models/accounts/origin_update_params.rb +10 -6
  13. data/lib/imagekitio/models/accounts/url_endpoint_delete_params.rb +14 -1
  14. data/lib/imagekitio/models/accounts/url_endpoint_get_params.rb +14 -1
  15. data/lib/imagekitio/models/accounts/url_endpoint_update_params.rb +14 -1
  16. data/lib/imagekitio/models/ai_tag.rb +39 -0
  17. data/lib/imagekitio/models/beta/v2/file_upload_response.rb +9 -270
  18. data/lib/imagekitio/models/cache/invalidation_get_params.rb +7 -1
  19. data/lib/imagekitio/models/custom_metadata.rb +8 -0
  20. data/lib/imagekitio/models/custom_metadata_field_delete_params.rb +7 -1
  21. data/lib/imagekitio/models/custom_metadata_field_update_params.rb +8 -1
  22. data/lib/imagekitio/models/embedded_metadata.rb +8 -0
  23. data/lib/imagekitio/models/extension_config.rb +10 -5
  24. data/lib/imagekitio/models/extensions.rb +10 -5
  25. data/lib/imagekitio/models/file.rb +11 -275
  26. data/lib/imagekitio/models/file_create_event.rb +34 -0
  27. data/lib/imagekitio/models/file_delete_event.rb +44 -0
  28. data/lib/imagekitio/models/file_delete_params.rb +7 -1
  29. data/lib/imagekitio/models/file_get_params.rb +7 -1
  30. data/lib/imagekitio/models/file_update_event.rb +34 -0
  31. data/lib/imagekitio/models/file_update_params.rb +5 -7
  32. data/lib/imagekitio/models/file_upload_response.rb +9 -267
  33. data/lib/imagekitio/models/file_version_create_event.rb +34 -0
  34. data/lib/imagekitio/models/file_version_delete_event.rb +52 -0
  35. data/lib/imagekitio/models/files/metadata_get_params.rb +7 -1
  36. data/lib/imagekitio/models/files/version_delete_params.rb +7 -1
  37. data/lib/imagekitio/models/files/version_get_params.rb +7 -1
  38. data/lib/imagekitio/models/files/version_list_params.rb +7 -1
  39. data/lib/imagekitio/models/files/version_restore_params.rb +7 -1
  40. data/lib/imagekitio/models/folders/job_get_params.rb +7 -1
  41. data/lib/imagekitio/models/overlay_position.rb +99 -5
  42. data/lib/imagekitio/models/saved_extension_delete_params.rb +7 -1
  43. data/lib/imagekitio/models/saved_extension_get_params.rb +7 -1
  44. data/lib/imagekitio/models/saved_extension_update_params.rb +8 -1
  45. data/lib/imagekitio/models/selected_fields_schema.rb +212 -0
  46. data/lib/imagekitio/models/unsafe_unwrap_webhook_event.rb +16 -1
  47. data/lib/imagekitio/models/unwrap_webhook_event.rb +16 -1
  48. data/lib/imagekitio/models/upload_pre_transform_success_event.rb +9 -285
  49. data/lib/imagekitio/models/version_info.rb +26 -0
  50. data/lib/imagekitio/models.rb +25 -0
  51. data/lib/imagekitio/resources/accounts/origins.rb +4 -14
  52. data/lib/imagekitio/resources/accounts/usage.rb +2 -1
  53. data/lib/imagekitio/resources/assets.rb +2 -1
  54. data/lib/imagekitio/resources/beta/v2/files.rb +5 -4
  55. data/lib/imagekitio/resources/custom_metadata_fields.rb +2 -1
  56. data/lib/imagekitio/resources/files/metadata.rb +2 -1
  57. data/lib/imagekitio/resources/files.rb +7 -11
  58. data/lib/imagekitio/resources/webhooks.rb +14 -3
  59. data/lib/imagekitio/version.rb +1 -1
  60. data/lib/imagekitio.rb +12 -1
  61. data/rbi/imagekitio/client.rbi +13 -0
  62. data/rbi/imagekitio/internal/util.rbi +29 -1
  63. data/rbi/imagekitio/models/accounts/origin_create_params.rbi +4 -51
  64. data/rbi/imagekitio/models/accounts/origin_delete_params.rbi +18 -5
  65. data/rbi/imagekitio/models/accounts/origin_get_params.rbi +18 -5
  66. data/rbi/imagekitio/models/accounts/origin_update_params.rbi +9 -43
  67. data/rbi/imagekitio/models/accounts/url_endpoint_delete_params.rbi +20 -5
  68. data/rbi/imagekitio/models/accounts/url_endpoint_get_params.rbi +20 -5
  69. data/rbi/imagekitio/models/accounts/url_endpoint_update_params.rbi +20 -5
  70. data/rbi/imagekitio/models/ai_tag.rbi +56 -0
  71. data/rbi/imagekitio/models/beta/v2/file_upload_response.rbi +11 -535
  72. data/rbi/imagekitio/models/cache/invalidation_get_params.rbi +11 -5
  73. data/rbi/imagekitio/models/custom_metadata.rbi +11 -0
  74. data/rbi/imagekitio/models/custom_metadata_field_delete_params.rbi +13 -5
  75. data/rbi/imagekitio/models/custom_metadata_field_update_params.rbi +6 -0
  76. data/rbi/imagekitio/models/embedded_metadata.rbi +11 -0
  77. data/rbi/imagekitio/models/extension_config.rbi +16 -6
  78. data/rbi/imagekitio/models/extensions.rbi +16 -6
  79. data/rbi/imagekitio/models/file.rbi +15 -475
  80. data/rbi/imagekitio/models/file_create_event.rbi +53 -0
  81. data/rbi/imagekitio/models/file_delete_event.rbi +80 -0
  82. data/rbi/imagekitio/models/file_delete_params.rbi +13 -5
  83. data/rbi/imagekitio/models/file_get_params.rbi +13 -5
  84. data/rbi/imagekitio/models/file_update_event.rbi +53 -0
  85. data/rbi/imagekitio/models/file_update_params.rbi +5 -28
  86. data/rbi/imagekitio/models/file_upload_response.rbi +11 -520
  87. data/rbi/imagekitio/models/file_version_create_event.rbi +56 -0
  88. data/rbi/imagekitio/models/file_version_delete_event.rbi +93 -0
  89. data/rbi/imagekitio/models/files/metadata_get_params.rbi +11 -5
  90. data/rbi/imagekitio/models/files/version_delete_params.rbi +10 -2
  91. data/rbi/imagekitio/models/files/version_get_params.rbi +10 -2
  92. data/rbi/imagekitio/models/files/version_list_params.rbi +11 -5
  93. data/rbi/imagekitio/models/files/version_restore_params.rbi +10 -2
  94. data/rbi/imagekitio/models/folders/job_get_params.rbi +11 -5
  95. data/rbi/imagekitio/models/overlay_position.rbi +165 -9
  96. data/rbi/imagekitio/models/saved_extension_delete_params.rbi +13 -5
  97. data/rbi/imagekitio/models/saved_extension_get_params.rbi +13 -5
  98. data/rbi/imagekitio/models/saved_extension_update_params.rbi +6 -0
  99. data/rbi/imagekitio/models/selected_fields_schema.rbi +364 -0
  100. data/rbi/imagekitio/models/unsafe_unwrap_webhook_event.rbi +6 -1
  101. data/rbi/imagekitio/models/unwrap_webhook_event.rbi +6 -1
  102. data/rbi/imagekitio/models/upload_pre_transform_success_event.rbi +11 -533
  103. data/rbi/imagekitio/models/version_info.rbi +40 -0
  104. data/rbi/imagekitio/models.rbi +34 -0
  105. data/rbi/imagekitio/resources/accounts/origins.rbi +22 -2
  106. data/rbi/imagekitio/resources/beta/v2/files.rbi +5 -4
  107. data/rbi/imagekitio/resources/files.rbi +10 -5
  108. data/rbi/imagekitio/resources/webhooks.rbi +22 -4
  109. data/sig/imagekitio/client.rbs +3 -0
  110. data/sig/imagekitio/internal/util.rbs +14 -0
  111. data/sig/imagekitio/models/accounts/origin_create_params.rbs +3 -16
  112. data/sig/imagekitio/models/accounts/origin_delete_params.rbs +11 -3
  113. data/sig/imagekitio/models/accounts/origin_get_params.rbs +11 -3
  114. data/sig/imagekitio/models/accounts/origin_update_params.rbs +4 -9
  115. data/sig/imagekitio/models/accounts/url_endpoint_delete_params.rbs +11 -3
  116. data/sig/imagekitio/models/accounts/url_endpoint_get_params.rbs +11 -3
  117. data/sig/imagekitio/models/accounts/url_endpoint_update_params.rbs +13 -3
  118. data/sig/imagekitio/models/ai_tag.rbs +27 -0
  119. data/sig/imagekitio/models/beta/v2/file_upload_response.rbs +30 -223
  120. data/sig/imagekitio/models/cache/invalidation_get_params.rbs +11 -3
  121. data/sig/imagekitio/models/custom_metadata.rbs +7 -0
  122. data/sig/imagekitio/models/custom_metadata_field_delete_params.rbs +11 -3
  123. data/sig/imagekitio/models/custom_metadata_field_update_params.rbs +5 -0
  124. data/sig/imagekitio/models/embedded_metadata.rbs +7 -0
  125. data/sig/imagekitio/models/file.rbs +29 -224
  126. data/sig/imagekitio/models/file_create_event.rbs +32 -0
  127. data/sig/imagekitio/models/file_delete_event.rbs +48 -0
  128. data/sig/imagekitio/models/file_delete_params.rbs +11 -3
  129. data/sig/imagekitio/models/file_get_params.rbs +12 -3
  130. data/sig/imagekitio/models/file_update_event.rbs +32 -0
  131. data/sig/imagekitio/models/file_update_params.rbs +4 -9
  132. data/sig/imagekitio/models/file_upload_response.rbs +29 -224
  133. data/sig/imagekitio/models/file_version_create_event.rbs +36 -0
  134. data/sig/imagekitio/models/file_version_delete_event.rbs +50 -0
  135. data/sig/imagekitio/models/files/metadata_get_params.rbs +11 -3
  136. data/sig/imagekitio/models/files/version_delete_params.rbs +6 -1
  137. data/sig/imagekitio/models/files/version_get_params.rbs +6 -1
  138. data/sig/imagekitio/models/files/version_list_params.rbs +11 -3
  139. data/sig/imagekitio/models/files/version_restore_params.rbs +6 -1
  140. data/sig/imagekitio/models/folders/job_get_params.rbs +11 -3
  141. data/sig/imagekitio/models/overlay_position.rbs +73 -3
  142. data/sig/imagekitio/models/saved_extension_delete_params.rbs +11 -3
  143. data/sig/imagekitio/models/saved_extension_get_params.rbs +11 -3
  144. data/sig/imagekitio/models/saved_extension_update_params.rbs +5 -0
  145. data/sig/imagekitio/models/selected_fields_schema.rbs +165 -0
  146. data/sig/imagekitio/models/unsafe_unwrap_webhook_event.rbs +5 -0
  147. data/sig/imagekitio/models/unwrap_webhook_event.rbs +5 -0
  148. data/sig/imagekitio/models/upload_pre_transform_success_event.rbs +29 -224
  149. data/sig/imagekitio/models/version_info.rbs +19 -0
  150. data/sig/imagekitio/models.rbs +22 -0
  151. data/sig/imagekitio/resources/accounts/origins.rbs +2 -2
  152. data/sig/imagekitio/resources/files.rbs +1 -1
  153. data/sig/imagekitio/resources/webhooks.rbs +15 -3
  154. metadata +46 -2
@@ -41,6 +41,8 @@ module Imagekitio
41
41
 
42
42
  Accounts = Imagekitio::Models::Accounts
43
43
 
44
+ AITag = Imagekitio::Models::AITag
45
+
44
46
  AssetListParams = Imagekitio::Models::AssetListParams
45
47
 
46
48
  BaseOverlay = Imagekitio::Models::BaseOverlay
@@ -51,6 +53,9 @@ module Imagekitio
51
53
 
52
54
  Cache = Imagekitio::Models::Cache
53
55
 
56
+ # @type [Imagekitio::Internal::Type::Converter]
57
+ CustomMetadata = Imagekitio::Models::CustomMetadata
58
+
54
59
  CustomMetadataField = Imagekitio::Models::CustomMetadataField
55
60
 
56
61
  CustomMetadataFieldCreateParams = Imagekitio::Models::CustomMetadataFieldCreateParams
@@ -61,6 +66,9 @@ module Imagekitio
61
66
 
62
67
  CustomMetadataFieldUpdateParams = Imagekitio::Models::CustomMetadataFieldUpdateParams
63
68
 
69
+ # @type [Imagekitio::Internal::Type::Converter]
70
+ EmbeddedMetadata = Imagekitio::Models::EmbeddedMetadata
71
+
64
72
  ExtensionConfig = Imagekitio::Models::ExtensionConfig
65
73
 
66
74
  ExtensionItem = Imagekitio::Models::ExtensionItem
@@ -72,6 +80,10 @@ module Imagekitio
72
80
 
73
81
  FileCopyParams = Imagekitio::Models::FileCopyParams
74
82
 
83
+ FileCreateEvent = Imagekitio::Models::FileCreateEvent
84
+
85
+ FileDeleteEvent = Imagekitio::Models::FileDeleteEvent
86
+
75
87
  FileDeleteParams = Imagekitio::Models::FileDeleteParams
76
88
 
77
89
  FileGetParams = Imagekitio::Models::FileGetParams
@@ -82,10 +94,16 @@ module Imagekitio
82
94
 
83
95
  Files = Imagekitio::Models::Files
84
96
 
97
+ FileUpdateEvent = Imagekitio::Models::FileUpdateEvent
98
+
85
99
  FileUpdateParams = Imagekitio::Models::FileUpdateParams
86
100
 
87
101
  FileUploadParams = Imagekitio::Models::FileUploadParams
88
102
 
103
+ FileVersionCreateEvent = Imagekitio::Models::FileVersionCreateEvent
104
+
105
+ FileVersionDeleteEvent = Imagekitio::Models::FileVersionDeleteEvent
106
+
89
107
  Folder = Imagekitio::Models::Folder
90
108
 
91
109
  FolderCopyParams = Imagekitio::Models::FolderCopyParams
@@ -126,6 +144,11 @@ module Imagekitio
126
144
 
127
145
  SavedExtensionUpdateParams = Imagekitio::Models::SavedExtensionUpdateParams
128
146
 
147
+ # @type [Imagekitio::Internal::Type::Converter]
148
+ SelectedFieldsSchema = Imagekitio::Models::SelectedFieldsSchema
149
+
150
+ SelectedFieldsSchemaItem = Imagekitio::Models::SelectedFieldsSchemaItem
151
+
129
152
  SolidColorOverlay = Imagekitio::Models::SolidColorOverlay
130
153
 
131
154
  SolidColorOverlayTransformation = Imagekitio::Models::SolidColorOverlayTransformation
@@ -160,6 +183,8 @@ module Imagekitio
160
183
 
161
184
  UploadPreTransformSuccessEvent = Imagekitio::Models::UploadPreTransformSuccessEvent
162
185
 
186
+ VersionInfo = Imagekitio::Models::VersionInfo
187
+
163
188
  VideoOverlay = Imagekitio::Models::VideoOverlay
164
189
 
165
190
  VideoTransformationAcceptedEvent = Imagekitio::Models::VideoTransformationAcceptedEvent
@@ -9,7 +9,7 @@ module Imagekitio
9
9
  #
10
10
  # @overload create(origin_request:, request_options: {})
11
11
  #
12
- # @param origin_request [Imagekitio::Accounts::OriginRequest] Schema for origin request resources.
12
+ # @param origin_request [Imagekitio::Models::Accounts::OriginRequest::S3, Imagekitio::Models::Accounts::OriginRequest::S3Compatible, Imagekitio::Models::Accounts::OriginRequest::CloudinaryBackup, Imagekitio::Models::Accounts::OriginRequest::WebFolder, Imagekitio::Models::Accounts::OriginRequest::WebProxy, Imagekitio::Models::Accounts::OriginRequest::Gcs, Imagekitio::Models::Accounts::OriginRequest::AzureBlob, Imagekitio::Models::Accounts::OriginRequest::AkeneoPim] Schema for origin request resources.
13
13
  #
14
14
  # @param request_options [Imagekitio::RequestOptions, Hash{Symbol=>Object}, nil]
15
15
  #
@@ -18,15 +18,10 @@ module Imagekitio
18
18
  # @see Imagekitio::Models::Accounts::OriginCreateParams
19
19
  def create(params)
20
20
  parsed, options = Imagekitio::Accounts::OriginCreateParams.dump_request(params)
21
- case parsed
22
- in {origin_request: Hash => union, **rest}
23
- parsed = {**rest, **union}
24
- else
25
- end
26
21
  @client.request(
27
22
  method: :post,
28
23
  path: "v1/accounts/origins",
29
- body: parsed,
24
+ body: parsed[:origin_request],
30
25
  model: Imagekitio::Accounts::OriginResponse,
31
26
  options: options
32
27
  )
@@ -42,7 +37,7 @@ module Imagekitio
42
37
  #
43
38
  # @param id [String] Unique identifier for the origin. This is generated by ImageKit when you create
44
39
  #
45
- # @param origin_request [Imagekitio::Accounts::OriginRequest] Schema for origin request resources.
40
+ # @param origin_request [Imagekitio::Models::Accounts::OriginRequest::S3, Imagekitio::Models::Accounts::OriginRequest::S3Compatible, Imagekitio::Models::Accounts::OriginRequest::CloudinaryBackup, Imagekitio::Models::Accounts::OriginRequest::WebFolder, Imagekitio::Models::Accounts::OriginRequest::WebProxy, Imagekitio::Models::Accounts::OriginRequest::Gcs, Imagekitio::Models::Accounts::OriginRequest::AzureBlob, Imagekitio::Models::Accounts::OriginRequest::AkeneoPim] Schema for origin request resources.
46
41
  #
47
42
  # @param request_options [Imagekitio::RequestOptions, Hash{Symbol=>Object}, nil]
48
43
  #
@@ -51,15 +46,10 @@ module Imagekitio
51
46
  # @see Imagekitio::Models::Accounts::OriginUpdateParams
52
47
  def update(id, params)
53
48
  parsed, options = Imagekitio::Accounts::OriginUpdateParams.dump_request(params)
54
- case parsed
55
- in {origin_request: Hash => union, **rest}
56
- parsed = {**rest, **union}
57
- else
58
- end
59
49
  @client.request(
60
50
  method: :put,
61
51
  path: ["v1/accounts/origins/%1$s", id],
62
- body: parsed,
52
+ body: parsed[:origin_request],
63
53
  model: Imagekitio::Accounts::OriginResponse,
64
54
  options: options
65
55
  )
@@ -25,10 +25,11 @@ module Imagekitio
25
25
  # @see Imagekitio::Models::Accounts::UsageGetParams
26
26
  def get(params)
27
27
  parsed, options = Imagekitio::Accounts::UsageGetParams.dump_request(params)
28
+ query = Imagekitio::Internal::Util.encode_query_params(parsed)
28
29
  @client.request(
29
30
  method: :get,
30
31
  path: "v1/accounts/usage",
31
- query: parsed.transform_keys(end_date: "endDate", start_date: "startDate"),
32
+ query: query.transform_keys(end_date: "endDate", start_date: "startDate"),
32
33
  model: Imagekitio::Models::Accounts::UsageGetResponse,
33
34
  options: options
34
35
  )
@@ -34,10 +34,11 @@ module Imagekitio
34
34
  # @see Imagekitio::Models::AssetListParams
35
35
  def list(params = {})
36
36
  parsed, options = Imagekitio::AssetListParams.dump_request(params)
37
+ query = Imagekitio::Internal::Util.encode_query_params(parsed)
37
38
  @client.request(
38
39
  method: :get,
39
40
  path: "v1/files",
40
- query: parsed.transform_keys(file_type: "fileType", search_query: "searchQuery"),
41
+ query: query.transform_keys(file_type: "fileType", search_query: "searchQuery"),
41
42
  model: Imagekitio::Internal::Type::ArrayOf[union: Imagekitio::Models::AssetListResponseItem],
42
43
  options: options
43
44
  )
@@ -19,10 +19,11 @@ module Imagekitio
19
19
  # about how to implement secure client-side file upload.
20
20
  #
21
21
  # **File size limit** \
22
- # On the free plan, the maximum upload file sizes are 20MB for images, audio, and raw
23
- # files, and 100MB for videos. On the paid plan, these limits increase to 40MB for
24
- # images, audio, and raw files, and 2GB for videos. These limits can be further increased
25
- # with higher-tier plans.
22
+ # On the free plan, the maximum upload file sizes are 25MB for images, audio, and raw
23
+ # files, and 100MB for videos. On the Lite paid plan, these limits increase to 40MB
24
+ # for images, audio, and raw files and 300MB for videos, whereas on the Pro paid plan,
25
+ # these limits increase to 50MB for images, audio, and raw files and 2GB for videos.
26
+ # These limits can be further increased with enterprise plans.
26
27
  #
27
28
  # **Version limit** \
28
29
  # A file can have a maximum of 100 versions.
@@ -89,10 +89,11 @@ module Imagekitio
89
89
  # @see Imagekitio::Models::CustomMetadataFieldListParams
90
90
  def list(params = {})
91
91
  parsed, options = Imagekitio::CustomMetadataFieldListParams.dump_request(params)
92
+ query = Imagekitio::Internal::Util.encode_query_params(parsed)
92
93
  @client.request(
93
94
  method: :get,
94
95
  path: "v1/customMetadataFields",
95
- query: parsed.transform_keys(folder_path: "folderPath", include_deleted: "includeDeleted"),
96
+ query: query.transform_keys(folder_path: "folderPath", include_deleted: "includeDeleted"),
96
97
  model: Imagekitio::Internal::Type::ArrayOf[Imagekitio::CustomMetadataField],
97
98
  options: options
98
99
  )
@@ -48,10 +48,11 @@ module Imagekitio
48
48
  # @see Imagekitio::Models::Files::MetadataGetFromURLParams
49
49
  def get_from_url(params)
50
50
  parsed, options = Imagekitio::Files::MetadataGetFromURLParams.dump_request(params)
51
+ query = Imagekitio::Internal::Util.encode_query_params(parsed)
51
52
  @client.request(
52
53
  method: :get,
53
54
  path: "v1/metadata",
54
- query: parsed,
55
+ query: query,
55
56
  model: Imagekitio::Metadata,
56
57
  options: options
57
58
  )
@@ -23,7 +23,7 @@ module Imagekitio
23
23
  #
24
24
  # @param file_id [String] The unique `fileId` of the uploaded file. `fileId` is returned in list and searc
25
25
  #
26
- # @param update_file_request [Imagekitio::UpdateFileRequest] Schema for update file update request.
26
+ # @param update_file_request [Imagekitio::Models::UpdateFileRequest::UpdateFileDetails, Imagekitio::Models::UpdateFileRequest::ChangePublicationStatus] Schema for update file update request.
27
27
  #
28
28
  # @param request_options [Imagekitio::RequestOptions, Hash{Symbol=>Object}, nil]
29
29
  #
@@ -32,15 +32,10 @@ module Imagekitio
32
32
  # @see Imagekitio::Models::FileUpdateParams
33
33
  def update(file_id, params)
34
34
  parsed, options = Imagekitio::FileUpdateParams.dump_request(params)
35
- case parsed
36
- in {update_file_request: Hash => union, **rest}
37
- parsed = {**rest, **union}
38
- else
39
- end
40
35
  @client.request(
41
36
  method: :patch,
42
37
  path: ["v1/files/%1$s/details", file_id],
43
- body: parsed,
38
+ body: parsed[:update_file_request],
44
39
  model: Imagekitio::Models::FileUpdateResponse,
45
40
  options: options
46
41
  )
@@ -207,10 +202,11 @@ module Imagekitio
207
202
  # by verifying the entire payload using JWT.
208
203
  #
209
204
  # **File size limit** \
210
- # On the free plan, the maximum upload file sizes are 20MB for images, audio, and raw
211
- # files and 100MB for videos. On the paid plan, these limits increase to 40MB for images,
212
- # audio, and raw files and 2GB for videos. These limits can be further increased with
213
- # higher-tier plans.
205
+ # On the free plan, the maximum upload file sizes are 25MB for images, audio, and raw
206
+ # files and 100MB for videos. On the Lite paid plan, these limits increase to 40MB
207
+ # for images, audio, and raw files and 300MB for videos, whereas on the Pro paid plan,
208
+ # these limits increase to 50MB for images, audio, and raw files and 2GB for videos.
209
+ # These limits can be further increased with enterprise plans.
214
210
  #
215
211
  # **Version limit** \
216
212
  # A file can have a maximum of 100 versions.
@@ -5,7 +5,7 @@ module Imagekitio
5
5
  class Webhooks
6
6
  # @param payload [String] The raw webhook payload as a string
7
7
  #
8
- # @return [Imagekitio::Models::VideoTransformationAcceptedEvent, Imagekitio::Models::VideoTransformationReadyEvent, Imagekitio::Models::VideoTransformationErrorEvent, Imagekitio::Models::UploadPreTransformSuccessEvent, Imagekitio::Models::UploadPreTransformErrorEvent, Imagekitio::Models::UploadPostTransformSuccessEvent, Imagekitio::Models::UploadPostTransformErrorEvent]
8
+ # @return [Imagekitio::Models::VideoTransformationAcceptedEvent, Imagekitio::Models::VideoTransformationReadyEvent, Imagekitio::Models::VideoTransformationErrorEvent, Imagekitio::Models::UploadPreTransformSuccessEvent, Imagekitio::Models::UploadPreTransformErrorEvent, Imagekitio::Models::UploadPostTransformSuccessEvent, Imagekitio::Models::UploadPostTransformErrorEvent, Imagekitio::Models::FileCreateEvent, Imagekitio::Models::FileUpdateEvent, Imagekitio::Models::FileDeleteEvent, Imagekitio::Models::FileVersionCreateEvent, Imagekitio::Models::FileVersionDeleteEvent]
9
9
  def unsafe_unwrap(payload)
10
10
  parsed = JSON.parse(payload, symbolize_names: true)
11
11
  Imagekitio::Internal::Type::Converter.coerce(Imagekitio::Models::UnsafeUnwrapWebhookEvent, parsed)
@@ -13,8 +13,19 @@ module Imagekitio
13
13
 
14
14
  # @param payload [String] The raw webhook payload as a string
15
15
  #
16
- # @return [Imagekitio::Models::VideoTransformationAcceptedEvent, Imagekitio::Models::VideoTransformationReadyEvent, Imagekitio::Models::VideoTransformationErrorEvent, Imagekitio::Models::UploadPreTransformSuccessEvent, Imagekitio::Models::UploadPreTransformErrorEvent, Imagekitio::Models::UploadPostTransformSuccessEvent, Imagekitio::Models::UploadPostTransformErrorEvent]
17
- def unwrap(payload)
16
+ # @param headers [Hash{String=>String}] The raw HTTP headers that came with the payload
17
+ #
18
+ # @param key [String, nil] The webhook signing key
19
+ #
20
+ # @return [Imagekitio::Models::VideoTransformationAcceptedEvent, Imagekitio::Models::VideoTransformationReadyEvent, Imagekitio::Models::VideoTransformationErrorEvent, Imagekitio::Models::UploadPreTransformSuccessEvent, Imagekitio::Models::UploadPreTransformErrorEvent, Imagekitio::Models::UploadPostTransformSuccessEvent, Imagekitio::Models::UploadPostTransformErrorEvent, Imagekitio::Models::FileCreateEvent, Imagekitio::Models::FileUpdateEvent, Imagekitio::Models::FileDeleteEvent, Imagekitio::Models::FileVersionCreateEvent, Imagekitio::Models::FileVersionDeleteEvent]
21
+ def unwrap(payload, headers:, key: @client.webhook_secret)
22
+ if key.nil?
23
+ raise ArgumentError.new("Cannot verify a webhook without a key on either the client's webhook_secret or passed in as an argument")
24
+ end
25
+
26
+ encoded_key = Base64.strict_encode64(key)
27
+ ::StandardWebhooks::Webhook.new(encoded_key).verify(payload, headers)
28
+
18
29
  parsed = JSON.parse(payload, symbolize_names: true)
19
30
  Imagekitio::Internal::Type::Converter.coerce(Imagekitio::Models::UnwrapWebhookEvent, parsed)
20
31
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Imagekitio
4
- VERSION = "4.2.0"
4
+ VERSION = "4.4.0"
5
5
  end
data/lib/imagekitio.rb CHANGED
@@ -30,6 +30,7 @@ end
30
30
 
31
31
  # Gems.
32
32
  require "connection_pool"
33
+ require "standardwebhooks"
33
34
 
34
35
  # Package files.
35
36
  require_relative "imagekitio/version"
@@ -54,11 +55,11 @@ require_relative "imagekitio/internal/transport/pooled_net_requester"
54
55
  require_relative "imagekitio/client"
55
56
  require_relative "imagekitio/models/accounts/origin_request"
56
57
  require_relative "imagekitio/models/accounts/url_endpoint_request"
58
+ require_relative "imagekitio/models/base_webhook_event"
57
59
  require_relative "imagekitio/models/update_file_request"
58
60
  require_relative "imagekitio/models/file"
59
61
  require_relative "imagekitio/models/src_options"
60
62
  require_relative "imagekitio/models/base_overlay"
61
- require_relative "imagekitio/models/base_webhook_event"
62
63
  require_relative "imagekitio/models/accounts/origin_create_params"
63
64
  require_relative "imagekitio/models/accounts/origin_delete_params"
64
65
  require_relative "imagekitio/models/accounts/origin_get_params"
@@ -75,6 +76,7 @@ require_relative "imagekitio/models/accounts/url_endpoint_response"
75
76
  require_relative "imagekitio/models/accounts/url_endpoint_update_params"
76
77
  require_relative "imagekitio/models/accounts/usage_get_params"
77
78
  require_relative "imagekitio/models/accounts/usage_get_response"
79
+ require_relative "imagekitio/models/ai_tag"
78
80
  require_relative "imagekitio/models/asset_list_params"
79
81
  require_relative "imagekitio/models/asset_list_response"
80
82
  require_relative "imagekitio/models/beta/v2/file_upload_params"
@@ -83,6 +85,7 @@ require_relative "imagekitio/models/cache/invalidation_create_params"
83
85
  require_relative "imagekitio/models/cache/invalidation_create_response"
84
86
  require_relative "imagekitio/models/cache/invalidation_get_params"
85
87
  require_relative "imagekitio/models/cache/invalidation_get_response"
88
+ require_relative "imagekitio/models/custom_metadata"
86
89
  require_relative "imagekitio/models/custom_metadata_field"
87
90
  require_relative "imagekitio/models/custom_metadata_field_create_params"
88
91
  require_relative "imagekitio/models/custom_metadata_field_delete_params"
@@ -90,10 +93,13 @@ require_relative "imagekitio/models/custom_metadata_field_delete_response"
90
93
  require_relative "imagekitio/models/custom_metadata_field_list_params"
91
94
  require_relative "imagekitio/models/custom_metadata_field_list_response"
92
95
  require_relative "imagekitio/models/custom_metadata_field_update_params"
96
+ require_relative "imagekitio/models/embedded_metadata"
93
97
  require_relative "imagekitio/models/extension_config"
94
98
  require_relative "imagekitio/models/extensions"
95
99
  require_relative "imagekitio/models/file_copy_params"
96
100
  require_relative "imagekitio/models/file_copy_response"
101
+ require_relative "imagekitio/models/file_create_event"
102
+ require_relative "imagekitio/models/file_delete_event"
97
103
  require_relative "imagekitio/models/file_delete_params"
98
104
  require_relative "imagekitio/models/file_get_params"
99
105
  require_relative "imagekitio/models/file_move_params"
@@ -116,10 +122,13 @@ require_relative "imagekitio/models/files/version_get_params"
116
122
  require_relative "imagekitio/models/files/version_list_params"
117
123
  require_relative "imagekitio/models/files/version_list_response"
118
124
  require_relative "imagekitio/models/files/version_restore_params"
125
+ require_relative "imagekitio/models/file_update_event"
119
126
  require_relative "imagekitio/models/file_update_params"
120
127
  require_relative "imagekitio/models/file_update_response"
121
128
  require_relative "imagekitio/models/file_upload_params"
122
129
  require_relative "imagekitio/models/file_upload_response"
130
+ require_relative "imagekitio/models/file_version_create_event"
131
+ require_relative "imagekitio/models/file_version_delete_event"
123
132
  require_relative "imagekitio/models/folder"
124
133
  require_relative "imagekitio/models/folder_copy_params"
125
134
  require_relative "imagekitio/models/folder_copy_response"
@@ -147,6 +156,7 @@ require_relative "imagekitio/models/saved_extension_get_params"
147
156
  require_relative "imagekitio/models/saved_extension_list_params"
148
157
  require_relative "imagekitio/models/saved_extension_list_response"
149
158
  require_relative "imagekitio/models/saved_extension_update_params"
159
+ require_relative "imagekitio/models/selected_fields_schema"
150
160
  require_relative "imagekitio/models/solid_color_overlay"
151
161
  require_relative "imagekitio/models/solid_color_overlay_transformation"
152
162
  require_relative "imagekitio/models/streaming_resolution"
@@ -162,6 +172,7 @@ require_relative "imagekitio/models/upload_post_transform_error_event"
162
172
  require_relative "imagekitio/models/upload_post_transform_success_event"
163
173
  require_relative "imagekitio/models/upload_pre_transform_error_event"
164
174
  require_relative "imagekitio/models/upload_pre_transform_success_event"
175
+ require_relative "imagekitio/models/version_info"
165
176
  require_relative "imagekitio/models/video_overlay"
166
177
  require_relative "imagekitio/models/video_transformation_accepted_event"
167
178
  require_relative "imagekitio/models/video_transformation_error_event"
@@ -20,6 +20,13 @@ module Imagekitio
20
20
  sig { returns(T.nilable(String)) }
21
21
  attr_reader :password
22
22
 
23
+ # Your ImageKit webhook secret for verifying webhook signatures (starts with
24
+ # `whsec_`). You can find this in the
25
+ # [ImageKit dashboard](https://imagekit.io/dashboard/developer/webhooks). Only
26
+ # required if you're using webhooks.
27
+ sig { returns(T.nilable(String)) }
28
+ attr_reader :webhook_secret
29
+
23
30
  sig { returns(Imagekitio::Resources::CustomMetadataFields) }
24
31
  attr_reader :custom_metadata_fields
25
32
 
@@ -65,6 +72,7 @@ module Imagekitio
65
72
  params(
66
73
  private_key: T.nilable(String),
67
74
  password: T.nilable(String),
75
+ webhook_secret: T.nilable(String),
68
76
  base_url: T.nilable(String),
69
77
  max_retries: Integer,
70
78
  timeout: Float,
@@ -81,6 +89,11 @@ module Imagekitio
81
89
  # dummy value. You can ignore this field. Defaults to
82
90
  # `ENV["OPTIONAL_IMAGEKIT_IGNORES_THIS"]`
83
91
  password: ENV.fetch("OPTIONAL_IMAGEKIT_IGNORES_THIS", "do_not_set"),
92
+ # Your ImageKit webhook secret for verifying webhook signatures (starts with
93
+ # `whsec_`). You can find this in the
94
+ # [ImageKit dashboard](https://imagekit.io/dashboard/developer/webhooks). Only
95
+ # required if you're using webhooks. Defaults to `ENV["IMAGEKIT_WEBHOOK_SECRET"]`
96
+ webhook_secret: ENV["IMAGEKIT_WEBHOOK_SECRET"],
84
97
  # Override the default base URL for the API, e.g.,
85
98
  # `"https://api.example.com/v2/"`. Defaults to `ENV["IMAGE_KIT_BASE_URL"]`
86
99
  base_url: ENV["IMAGE_KIT_BASE_URL"],
@@ -148,12 +148,20 @@ module Imagekitio
148
148
  end
149
149
  end
150
150
 
151
+ # https://www.rfc-editor.org/rfc/rfc3986.html#section-3.3
152
+ RFC_3986_NOT_PCHARS = T.let(/[^A-Za-z0-9\-._~!$&'()*+,;=:@]+/, Regexp)
153
+
151
154
  class << self
152
155
  # @api private
153
156
  sig { params(uri: URI::Generic).returns(String) }
154
157
  def uri_origin(uri)
155
158
  end
156
159
 
160
+ # @api private
161
+ sig { params(path: T.any(String, Integer)).returns(String) }
162
+ def encode_path(path)
163
+ end
164
+
157
165
  # @api private
158
166
  sig { params(path: T.any(String, T::Array[String])).returns(String) }
159
167
  def interpolate_path(path)
@@ -296,11 +304,31 @@ module Imagekitio
296
304
  end
297
305
 
298
306
  JSON_CONTENT =
299
- T.let(%r{^application/(?:vnd(?:\.[^.]+)*\+)?json(?!l)}, Regexp)
307
+ T.let(%r{^application/(?:[a-zA-Z0-9.-]+\+)?json(?!l)}, Regexp)
300
308
  JSONL_CONTENT =
301
309
  T.let(%r{^application/(:?x-(?:n|l)djson)|(:?(?:x-)?jsonl)}, Regexp)
302
310
 
303
311
  class << self
312
+ # @api private
313
+ sig do
314
+ params(query: Imagekitio::Internal::AnyHash).returns(
315
+ Imagekitio::Internal::AnyHash
316
+ )
317
+ end
318
+ def encode_query_params(query)
319
+ end
320
+
321
+ # @api private
322
+ sig do
323
+ params(
324
+ collection: Imagekitio::Internal::AnyHash,
325
+ key: String,
326
+ element: T.anything
327
+ ).void
328
+ end
329
+ private def write_query_param_element!(collection, key, element)
330
+ end
331
+
304
332
  # @api private
305
333
  sig do
306
334
  params(
@@ -15,63 +15,16 @@ module Imagekitio
15
15
  )
16
16
  end
17
17
 
18
- # Schema for origin request resources.
19
18
  sig do
20
- returns(
21
- T.any(
22
- Imagekitio::Accounts::OriginRequest::S3,
23
- Imagekitio::Accounts::OriginRequest::S3Compatible,
24
- Imagekitio::Accounts::OriginRequest::CloudinaryBackup,
25
- Imagekitio::Accounts::OriginRequest::WebFolder,
26
- Imagekitio::Accounts::OriginRequest::WebProxy,
27
- Imagekitio::Accounts::OriginRequest::Gcs,
28
- Imagekitio::Accounts::OriginRequest::AzureBlob,
29
- Imagekitio::Accounts::OriginRequest::AkeneoPim
30
- )
19
+ params(request_options: Imagekitio::RequestOptions::OrHash).returns(
20
+ T.attached_class
31
21
  )
32
22
  end
33
- attr_accessor :origin_request
34
-
35
- sig do
36
- params(
37
- origin_request:
38
- T.any(
39
- Imagekitio::Accounts::OriginRequest::S3::OrHash,
40
- Imagekitio::Accounts::OriginRequest::S3Compatible::OrHash,
41
- Imagekitio::Accounts::OriginRequest::CloudinaryBackup::OrHash,
42
- Imagekitio::Accounts::OriginRequest::WebFolder::OrHash,
43
- Imagekitio::Accounts::OriginRequest::WebProxy::OrHash,
44
- Imagekitio::Accounts::OriginRequest::Gcs::OrHash,
45
- Imagekitio::Accounts::OriginRequest::AzureBlob::OrHash,
46
- Imagekitio::Accounts::OriginRequest::AkeneoPim::OrHash
47
- ),
48
- request_options: Imagekitio::RequestOptions::OrHash
49
- ).returns(T.attached_class)
50
- end
51
- def self.new(
52
- # Schema for origin request resources.
53
- origin_request:,
54
- request_options: {}
55
- )
23
+ def self.new(request_options: {})
56
24
  end
57
25
 
58
26
  sig do
59
- override.returns(
60
- {
61
- origin_request:
62
- T.any(
63
- Imagekitio::Accounts::OriginRequest::S3,
64
- Imagekitio::Accounts::OriginRequest::S3Compatible,
65
- Imagekitio::Accounts::OriginRequest::CloudinaryBackup,
66
- Imagekitio::Accounts::OriginRequest::WebFolder,
67
- Imagekitio::Accounts::OriginRequest::WebProxy,
68
- Imagekitio::Accounts::OriginRequest::Gcs,
69
- Imagekitio::Accounts::OriginRequest::AzureBlob,
70
- Imagekitio::Accounts::OriginRequest::AkeneoPim
71
- ),
72
- request_options: Imagekitio::RequestOptions
73
- }
74
- )
27
+ override.returns({ request_options: Imagekitio::RequestOptions })
75
28
  end
76
29
  def to_hash
77
30
  end
@@ -15,16 +15,29 @@ module Imagekitio
15
15
  )
16
16
  end
17
17
 
18
+ # Unique identifier for the origin. This is generated by ImageKit when you create
19
+ # a new origin.
20
+ sig { returns(String) }
21
+ attr_accessor :id
22
+
18
23
  sig do
19
- params(request_options: Imagekitio::RequestOptions::OrHash).returns(
20
- T.attached_class
21
- )
24
+ params(
25
+ id: String,
26
+ request_options: Imagekitio::RequestOptions::OrHash
27
+ ).returns(T.attached_class)
22
28
  end
23
- def self.new(request_options: {})
29
+ def self.new(
30
+ # Unique identifier for the origin. This is generated by ImageKit when you create
31
+ # a new origin.
32
+ id:,
33
+ request_options: {}
34
+ )
24
35
  end
25
36
 
26
37
  sig do
27
- override.returns({ request_options: Imagekitio::RequestOptions })
38
+ override.returns(
39
+ { id: String, request_options: Imagekitio::RequestOptions }
40
+ )
28
41
  end
29
42
  def to_hash
30
43
  end
@@ -15,16 +15,29 @@ module Imagekitio
15
15
  )
16
16
  end
17
17
 
18
+ # Unique identifier for the origin. This is generated by ImageKit when you create
19
+ # a new origin.
20
+ sig { returns(String) }
21
+ attr_accessor :id
22
+
18
23
  sig do
19
- params(request_options: Imagekitio::RequestOptions::OrHash).returns(
20
- T.attached_class
21
- )
24
+ params(
25
+ id: String,
26
+ request_options: Imagekitio::RequestOptions::OrHash
27
+ ).returns(T.attached_class)
22
28
  end
23
- def self.new(request_options: {})
29
+ def self.new(
30
+ # Unique identifier for the origin. This is generated by ImageKit when you create
31
+ # a new origin.
32
+ id:,
33
+ request_options: {}
34
+ )
24
35
  end
25
36
 
26
37
  sig do
27
- override.returns({ request_options: Imagekitio::RequestOptions })
38
+ override.returns(
39
+ { id: String, request_options: Imagekitio::RequestOptions }
40
+ )
28
41
  end
29
42
  def to_hash
30
43
  end