ilovevideoeditor-sdk 1.0.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 (120) hide show
  1. checksums.yaml +7 -0
  2. data/lib/generated/ilovevideoeditor-sdk/api/api_keys_api.rb +204 -0
  3. data/lib/generated/ilovevideoeditor-sdk/api/assets_api.rb +632 -0
  4. data/lib/generated/ilovevideoeditor-sdk/api/billing_api.rb +428 -0
  5. data/lib/generated/ilovevideoeditor-sdk/api/health_api.rb +134 -0
  6. data/lib/generated/ilovevideoeditor-sdk/api/integrations_api.rb +587 -0
  7. data/lib/generated/ilovevideoeditor-sdk/api/projects_api.rb +614 -0
  8. data/lib/generated/ilovevideoeditor-sdk/api/render_api.rb +656 -0
  9. data/lib/generated/ilovevideoeditor-sdk/api/renditions_api.rb +420 -0
  10. data/lib/generated/ilovevideoeditor-sdk/api/templates_api.rb +217 -0
  11. data/lib/generated/ilovevideoeditor-sdk/api/tools_api.rb +220 -0
  12. data/lib/generated/ilovevideoeditor-sdk/api/webhooks_api.rb +204 -0
  13. data/lib/generated/ilovevideoeditor-sdk/api/workflows_api.rb +854 -0
  14. data/lib/generated/ilovevideoeditor-sdk/api_client.rb +397 -0
  15. data/lib/generated/ilovevideoeditor-sdk/api_error.rb +58 -0
  16. data/lib/generated/ilovevideoeditor-sdk/api_model_base.rb +88 -0
  17. data/lib/generated/ilovevideoeditor-sdk/configuration.rb +316 -0
  18. data/lib/generated/ilovevideoeditor-sdk/models/api_key.rb +246 -0
  19. data/lib/generated/ilovevideoeditor-sdk/models/api_key_with_secret.rb +191 -0
  20. data/lib/generated/ilovevideoeditor-sdk/models/asset.rb +404 -0
  21. data/lib/generated/ilovevideoeditor-sdk/models/asset_create.rb +303 -0
  22. data/lib/generated/ilovevideoeditor-sdk/models/asset_upload_url_response.rb +295 -0
  23. data/lib/generated/ilovevideoeditor-sdk/models/batch_delete_projects_request.rb +184 -0
  24. data/lib/generated/ilovevideoeditor-sdk/models/batch_delete_result.rb +175 -0
  25. data/lib/generated/ilovevideoeditor-sdk/models/billing_prices.rb +158 -0
  26. data/lib/generated/ilovevideoeditor-sdk/models/billing_prices_tiers.rb +168 -0
  27. data/lib/generated/ilovevideoeditor-sdk/models/billing_subscription.rb +254 -0
  28. data/lib/generated/ilovevideoeditor-sdk/models/cancel_render200_response.rb +225 -0
  29. data/lib/generated/ilovevideoeditor-sdk/models/create_api_key_request.rb +147 -0
  30. data/lib/generated/ilovevideoeditor-sdk/models/create_asset201_response.rb +164 -0
  31. data/lib/generated/ilovevideoeditor-sdk/models/create_checkout_session200_response.rb +164 -0
  32. data/lib/generated/ilovevideoeditor-sdk/models/create_checkout_session_request.rb +220 -0
  33. data/lib/generated/ilovevideoeditor-sdk/models/create_integration201_response.rb +164 -0
  34. data/lib/generated/ilovevideoeditor-sdk/models/create_project200_response.rb +164 -0
  35. data/lib/generated/ilovevideoeditor-sdk/models/create_workflow201_response.rb +164 -0
  36. data/lib/generated/ilovevideoeditor-sdk/models/create_workflow_request.rb +208 -0
  37. data/lib/generated/ilovevideoeditor-sdk/models/credit_balance.rb +219 -0
  38. data/lib/generated/ilovevideoeditor-sdk/models/credit_balance_summary.rb +174 -0
  39. data/lib/generated/ilovevideoeditor-sdk/models/credit_balance_usage.rb +156 -0
  40. data/lib/generated/ilovevideoeditor-sdk/models/delete_project200_response.rb +190 -0
  41. data/lib/generated/ilovevideoeditor-sdk/models/destination.rb +331 -0
  42. data/lib/generated/ilovevideoeditor-sdk/models/destination_input.rb +304 -0
  43. data/lib/generated/ilovevideoeditor-sdk/models/error.rb +182 -0
  44. data/lib/generated/ilovevideoeditor-sdk/models/estimate_render_cost_request.rb +164 -0
  45. data/lib/generated/ilovevideoeditor-sdk/models/get_asset_signed_url200_response.rb +164 -0
  46. data/lib/generated/ilovevideoeditor-sdk/models/get_asset_upload_url_request.rb +214 -0
  47. data/lib/generated/ilovevideoeditor-sdk/models/get_destination200_response.rb +164 -0
  48. data/lib/generated/ilovevideoeditor-sdk/models/get_project200_response.rb +173 -0
  49. data/lib/generated/ilovevideoeditor-sdk/models/get_project_stats200_response.rb +164 -0
  50. data/lib/generated/ilovevideoeditor-sdk/models/get_render_download_url200_response.rb +190 -0
  51. data/lib/generated/ilovevideoeditor-sdk/models/get_rendition200_response.rb +164 -0
  52. data/lib/generated/ilovevideoeditor-sdk/models/get_subscription200_response.rb +164 -0
  53. data/lib/generated/ilovevideoeditor-sdk/models/get_template200_response.rb +164 -0
  54. data/lib/generated/ilovevideoeditor-sdk/models/get_usage200_response.rb +166 -0
  55. data/lib/generated/ilovevideoeditor-sdk/models/get_workflow200_response.rb +175 -0
  56. data/lib/generated/ilovevideoeditor-sdk/models/get_workflow_run200_response.rb +175 -0
  57. data/lib/generated/ilovevideoeditor-sdk/models/health_check200_response.rb +147 -0
  58. data/lib/generated/ilovevideoeditor-sdk/models/health_check_detailed200_response.rb +199 -0
  59. data/lib/generated/ilovevideoeditor-sdk/models/health_check_detailed200_response_services.rb +156 -0
  60. data/lib/generated/ilovevideoeditor-sdk/models/list_api_keys200_response.rb +166 -0
  61. data/lib/generated/ilovevideoeditor-sdk/models/list_assets200_response.rb +185 -0
  62. data/lib/generated/ilovevideoeditor-sdk/models/list_integrations200_response.rb +166 -0
  63. data/lib/generated/ilovevideoeditor-sdk/models/list_invoices200_response.rb +158 -0
  64. data/lib/generated/ilovevideoeditor-sdk/models/list_projects200_response.rb +185 -0
  65. data/lib/generated/ilovevideoeditor-sdk/models/list_renditions200_response.rb +185 -0
  66. data/lib/generated/ilovevideoeditor-sdk/models/list_templates200_response.rb +166 -0
  67. data/lib/generated/ilovevideoeditor-sdk/models/list_webhook_subscriptions200_response.rb +166 -0
  68. data/lib/generated/ilovevideoeditor-sdk/models/list_workflow_runs200_response.rb +185 -0
  69. data/lib/generated/ilovevideoeditor-sdk/models/list_workflow_step_types200_response.rb +166 -0
  70. data/lib/generated/ilovevideoeditor-sdk/models/list_workflows200_response.rb +185 -0
  71. data/lib/generated/ilovevideoeditor-sdk/models/project.rb +329 -0
  72. data/lib/generated/ilovevideoeditor-sdk/models/project_create.rb +218 -0
  73. data/lib/generated/ilovevideoeditor-sdk/models/project_update.rb +239 -0
  74. data/lib/generated/ilovevideoeditor-sdk/models/queue_render200_response.rb +199 -0
  75. data/lib/generated/ilovevideoeditor-sdk/models/queue_render_request.rb +182 -0
  76. data/lib/generated/ilovevideoeditor-sdk/models/refresh_render_url200_response.rb +190 -0
  77. data/lib/generated/ilovevideoeditor-sdk/models/render_cost_estimate.rb +254 -0
  78. data/lib/generated/ilovevideoeditor-sdk/models/render_cost_estimate_resolution.rb +165 -0
  79. data/lib/generated/ilovevideoeditor-sdk/models/render_cost_estimate_tier.rb +165 -0
  80. data/lib/generated/ilovevideoeditor-sdk/models/render_job.rb +271 -0
  81. data/lib/generated/ilovevideoeditor-sdk/models/render_job_progress.rb +165 -0
  82. data/lib/generated/ilovevideoeditor-sdk/models/render_list_item.rb +356 -0
  83. data/lib/generated/ilovevideoeditor-sdk/models/render_template_request.rb +167 -0
  84. data/lib/generated/ilovevideoeditor-sdk/models/render_webhook_payload.rb +357 -0
  85. data/lib/generated/ilovevideoeditor-sdk/models/rendition.rb +335 -0
  86. data/lib/generated/ilovevideoeditor-sdk/models/rendition_cancel_result.rb +236 -0
  87. data/lib/generated/ilovevideoeditor-sdk/models/rendition_output.rb +233 -0
  88. data/lib/generated/ilovevideoeditor-sdk/models/rendition_stats.rb +192 -0
  89. data/lib/generated/ilovevideoeditor-sdk/models/run_workflow202_response.rb +164 -0
  90. data/lib/generated/ilovevideoeditor-sdk/models/run_workflow_request.rb +149 -0
  91. data/lib/generated/ilovevideoeditor-sdk/models/service_health.rb +208 -0
  92. data/lib/generated/ilovevideoeditor-sdk/models/template.rb +324 -0
  93. data/lib/generated/ilovevideoeditor-sdk/models/template_summary.rb +322 -0
  94. data/lib/generated/ilovevideoeditor-sdk/models/test_integration200_response.rb +174 -0
  95. data/lib/generated/ilovevideoeditor-sdk/models/tier_info.rb +214 -0
  96. data/lib/generated/ilovevideoeditor-sdk/models/tier_info_credits.rb +165 -0
  97. data/lib/generated/ilovevideoeditor-sdk/models/tool_job_request.rb +242 -0
  98. data/lib/generated/ilovevideoeditor-sdk/models/tool_job_request_dimensions.rb +208 -0
  99. data/lib/generated/ilovevideoeditor-sdk/models/tool_job_status.rb +310 -0
  100. data/lib/generated/ilovevideoeditor-sdk/models/track_render_bandwidth200_response.rb +164 -0
  101. data/lib/generated/ilovevideoeditor-sdk/models/update_workflow_request.rb +174 -0
  102. data/lib/generated/ilovevideoeditor-sdk/models/upload_asset200_response.rb +164 -0
  103. data/lib/generated/ilovevideoeditor-sdk/models/usage_log.rb +302 -0
  104. data/lib/generated/ilovevideoeditor-sdk/models/video_json.rb +243 -0
  105. data/lib/generated/ilovevideoeditor-sdk/models/video_json_destination.rb +227 -0
  106. data/lib/generated/ilovevideoeditor-sdk/models/webhook_subscription.rb +283 -0
  107. data/lib/generated/ilovevideoeditor-sdk/models/webhook_subscription_create.rb +204 -0
  108. data/lib/generated/ilovevideoeditor-sdk/models/workflow.rb +356 -0
  109. data/lib/generated/ilovevideoeditor-sdk/models/workflow_definition.rb +262 -0
  110. data/lib/generated/ilovevideoeditor-sdk/models/workflow_run.rb +372 -0
  111. data/lib/generated/ilovevideoeditor-sdk/models/workflow_run_step.rb +409 -0
  112. data/lib/generated/ilovevideoeditor-sdk/models/workflow_step.rb +262 -0
  113. data/lib/generated/ilovevideoeditor-sdk/models/workflow_variable.rb +242 -0
  114. data/lib/generated/ilovevideoeditor-sdk/models/workspace_integration.rb +398 -0
  115. data/lib/generated/ilovevideoeditor-sdk/models/workspace_integration_input.rb +260 -0
  116. data/lib/generated/ilovevideoeditor-sdk/version.rb +15 -0
  117. data/lib/generated/ilovevideoeditor-sdk.rb +150 -0
  118. data/lib/ilovevideoeditor/client.rb +106 -0
  119. data/lib/ilovevideoeditor-sdk.rb +2 -0
  120. metadata +181 -0
@@ -0,0 +1,260 @@
1
+ =begin
2
+ #iLoveVideoEditor API
3
+
4
+ #Cloud video rendering API for iLoveVideoEditor. Submit a `VideoJSON` payload, queue a render job, and download the resulting MP4. **Authentication** - **API Key** (`x-api-key` header) — accepted by render pipeline and tool endpoints. - **Bearer Token** (`Authorization: Bearer <jwt>`) — required for user-scoped project, asset, billing, and webhook endpoints. - Many endpoints accept either form of authentication. **SDKs** Official typed SDKs are available for JavaScript/TypeScript, PHP, Python, Ruby, and Go. See https://ilovevideoeditor.com/docs/sdks **Outbound Webhooks** Render lifecycle events (`render.completed`, `render.failed`) are delivered to your endpoints as signed HTTP POST requests. See the `Webhooks` tag and the root-level `x-webhook-docs` extension for the payload format (`RenderWebhookPayload`), signature headers, HMAC verification, and the retry policy.
5
+
6
+ The version of the OpenAPI document: 1.0.0
7
+
8
+ Generated by: https://openapi-generator.tech
9
+ Generator version: 7.22.0
10
+
11
+ =end
12
+
13
+ require 'date'
14
+ require 'time'
15
+
16
+ module ILoveVideoEditor
17
+ class WorkspaceIntegrationInput < ApiModelBase
18
+ attr_accessor :provider
19
+
20
+ attr_accessor :name
21
+
22
+ attr_accessor :is_active
23
+
24
+ attr_accessor :is_default
25
+
26
+ attr_accessor :config
27
+
28
+ class EnumAttributeValidator
29
+ attr_reader :datatype
30
+ attr_reader :allowable_values
31
+
32
+ def initialize(datatype, allowable_values)
33
+ @allowable_values = allowable_values.map do |value|
34
+ case datatype.to_s
35
+ when /Integer/i
36
+ value.to_i
37
+ when /Float/i
38
+ value.to_f
39
+ else
40
+ value
41
+ end
42
+ end
43
+ end
44
+
45
+ def valid?(value)
46
+ !value || allowable_values.include?(value)
47
+ end
48
+ end
49
+
50
+ # Attribute mapping from ruby-style variable name to JSON key.
51
+ def self.attribute_map
52
+ {
53
+ :'provider' => :'provider',
54
+ :'name' => :'name',
55
+ :'is_active' => :'isActive',
56
+ :'is_default' => :'isDefault',
57
+ :'config' => :'config'
58
+ }
59
+ end
60
+
61
+ # Returns attribute mapping this model knows about
62
+ def self.acceptable_attribute_map
63
+ attribute_map
64
+ end
65
+
66
+ # Returns all the JSON keys this model knows about
67
+ def self.acceptable_attributes
68
+ acceptable_attribute_map.values
69
+ end
70
+
71
+ # Attribute type mapping.
72
+ def self.openapi_types
73
+ {
74
+ :'provider' => :'String',
75
+ :'name' => :'String',
76
+ :'is_active' => :'Boolean',
77
+ :'is_default' => :'Boolean',
78
+ :'config' => :'Hash<String, Object>'
79
+ }
80
+ end
81
+
82
+ # List of attributes with nullable: true
83
+ def self.openapi_nullable
84
+ Set.new([
85
+ ])
86
+ end
87
+
88
+ # Initializes the object
89
+ # @param [Hash] attributes Model attributes in the form of hash
90
+ def initialize(attributes = {})
91
+ if (!attributes.is_a?(Hash))
92
+ fail ArgumentError, "The input argument (attributes) must be a hash in `ILoveVideoEditor::WorkspaceIntegrationInput` initialize method"
93
+ end
94
+
95
+ # check to see if the attribute exists and convert string to symbol for hash key
96
+ acceptable_attribute_map = self.class.acceptable_attribute_map
97
+ attributes = attributes.each_with_object({}) { |(k, v), h|
98
+ if (!acceptable_attribute_map.key?(k.to_sym))
99
+ fail ArgumentError, "`#{k}` is not a valid attribute in `ILoveVideoEditor::WorkspaceIntegrationInput`. Please check the name to make sure it's valid. List of attributes: " + acceptable_attribute_map.keys.inspect
100
+ end
101
+ h[k.to_sym] = v
102
+ }
103
+
104
+ if attributes.key?(:'provider')
105
+ self.provider = attributes[:'provider']
106
+ else
107
+ self.provider = nil
108
+ end
109
+
110
+ if attributes.key?(:'name')
111
+ self.name = attributes[:'name']
112
+ else
113
+ self.name = nil
114
+ end
115
+
116
+ if attributes.key?(:'is_active')
117
+ self.is_active = attributes[:'is_active']
118
+ end
119
+
120
+ if attributes.key?(:'is_default')
121
+ self.is_default = attributes[:'is_default']
122
+ end
123
+
124
+ if attributes.key?(:'config')
125
+ if (value = attributes[:'config']).is_a?(Hash)
126
+ self.config = value
127
+ end
128
+ else
129
+ self.config = nil
130
+ end
131
+ end
132
+
133
+ # Show invalid properties with the reasons. Usually used together with valid?
134
+ # @return Array for valid properties with the reasons
135
+ def list_invalid_properties
136
+ warn '[DEPRECATED] the `list_invalid_properties` method is obsolete'
137
+ invalid_properties = Array.new
138
+ if @provider.nil?
139
+ invalid_properties.push('invalid value for "provider", provider cannot be nil.')
140
+ end
141
+
142
+ if @name.nil?
143
+ invalid_properties.push('invalid value for "name", name cannot be nil.')
144
+ end
145
+
146
+ if @config.nil?
147
+ invalid_properties.push('invalid value for "config", config cannot be nil.')
148
+ end
149
+
150
+ invalid_properties
151
+ end
152
+
153
+ # Check to see if the all the properties in the model are valid
154
+ # @return true if the model is valid
155
+ def valid?
156
+ warn '[DEPRECATED] the `valid?` method is obsolete'
157
+ return false if @provider.nil?
158
+ provider_validator = EnumAttributeValidator.new('String', ["s3", "r2", "b2", "wasabi", "gcs", "azure", "drive"])
159
+ return false unless provider_validator.valid?(@provider)
160
+ return false if @name.nil?
161
+ return false if @config.nil?
162
+ true
163
+ end
164
+
165
+ # Custom attribute writer method checking allowed values (enum).
166
+ # @param [Object] provider Object to be assigned
167
+ def provider=(provider)
168
+ validator = EnumAttributeValidator.new('String', ["s3", "r2", "b2", "wasabi", "gcs", "azure", "drive"])
169
+ unless validator.valid?(provider)
170
+ fail ArgumentError, "invalid value for \"provider\", must be one of #{validator.allowable_values}."
171
+ end
172
+ @provider = provider
173
+ end
174
+
175
+ # Custom attribute writer method with validation
176
+ # @param [Object] name Value to be assigned
177
+ def name=(name)
178
+ if name.nil?
179
+ fail ArgumentError, 'name cannot be nil'
180
+ end
181
+
182
+ @name = name
183
+ end
184
+
185
+ # Custom attribute writer method with validation
186
+ # @param [Object] config Value to be assigned
187
+ def config=(config)
188
+ if config.nil?
189
+ fail ArgumentError, 'config cannot be nil'
190
+ end
191
+
192
+ @config = config
193
+ end
194
+
195
+ # Checks equality by comparing each attribute.
196
+ # @param [Object] Object to be compared
197
+ def ==(o)
198
+ return true if self.equal?(o)
199
+ self.class == o.class &&
200
+ provider == o.provider &&
201
+ name == o.name &&
202
+ is_active == o.is_active &&
203
+ is_default == o.is_default &&
204
+ config == o.config
205
+ end
206
+
207
+ # @see the `==` method
208
+ # @param [Object] Object to be compared
209
+ def eql?(o)
210
+ self == o
211
+ end
212
+
213
+ # Calculates hash code according to all attributes.
214
+ # @return [Integer] Hash code
215
+ def hash
216
+ [provider, name, is_active, is_default, config].hash
217
+ end
218
+
219
+ # Builds the object from hash
220
+ # @param [Hash] attributes Model attributes in the form of hash
221
+ # @return [Object] Returns the model itself
222
+ def self.build_from_hash(attributes)
223
+ return nil unless attributes.is_a?(Hash)
224
+ attributes = attributes.transform_keys(&:to_sym)
225
+ transformed_hash = {}
226
+ openapi_types.each_pair do |key, type|
227
+ if attributes.key?(attribute_map[key]) && attributes[attribute_map[key]].nil?
228
+ transformed_hash["#{key}"] = nil
229
+ elsif type =~ /\AArray<(.*)>/i
230
+ # check to ensure the input is an array given that the attribute
231
+ # is documented as an array but the input is not
232
+ if attributes[attribute_map[key]].is_a?(Array)
233
+ transformed_hash["#{key}"] = attributes[attribute_map[key]].map { |v| _deserialize($1, v) }
234
+ end
235
+ elsif !attributes[attribute_map[key]].nil?
236
+ transformed_hash["#{key}"] = _deserialize(type, attributes[attribute_map[key]])
237
+ end
238
+ end
239
+ new(transformed_hash)
240
+ end
241
+
242
+ # Returns the object in the form of hash
243
+ # @return [Hash] Returns the object in the form of hash
244
+ def to_hash
245
+ hash = {}
246
+ self.class.attribute_map.each_pair do |attr, param|
247
+ value = self.send(attr)
248
+ if value.nil?
249
+ is_nullable = self.class.openapi_nullable.include?(attr)
250
+ next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}"))
251
+ end
252
+
253
+ hash[param] = _to_hash(value)
254
+ end
255
+ hash
256
+ end
257
+
258
+ end
259
+
260
+ end
@@ -0,0 +1,15 @@
1
+ =begin
2
+ #iLoveVideoEditor API
3
+
4
+ #Cloud video rendering API for iLoveVideoEditor. Submit a `VideoJSON` payload, queue a render job, and download the resulting MP4. **Authentication** - **API Key** (`x-api-key` header) — accepted by render pipeline and tool endpoints. - **Bearer Token** (`Authorization: Bearer <jwt>`) — required for user-scoped project, asset, billing, and webhook endpoints. - Many endpoints accept either form of authentication. **SDKs** Official typed SDKs are available for JavaScript/TypeScript, PHP, Python, Ruby, and Go. See https://ilovevideoeditor.com/docs/sdks **Outbound Webhooks** Render lifecycle events (`render.completed`, `render.failed`) are delivered to your endpoints as signed HTTP POST requests. See the `Webhooks` tag and the root-level `x-webhook-docs` extension for the payload format (`RenderWebhookPayload`), signature headers, HMAC verification, and the retry policy.
5
+
6
+ The version of the OpenAPI document: 1.0.0
7
+
8
+ Generated by: https://openapi-generator.tech
9
+ Generator version: 7.22.0
10
+
11
+ =end
12
+
13
+ module ILoveVideoEditor
14
+ VERSION = '1.0.0'
15
+ end
@@ -0,0 +1,150 @@
1
+ =begin
2
+ #iLoveVideoEditor API
3
+
4
+ #Cloud video rendering API for iLoveVideoEditor. Submit a `VideoJSON` payload, queue a render job, and download the resulting MP4. **Authentication** - **API Key** (`x-api-key` header) — accepted by render pipeline and tool endpoints. - **Bearer Token** (`Authorization: Bearer <jwt>`) — required for user-scoped project, asset, billing, and webhook endpoints. - Many endpoints accept either form of authentication. **SDKs** Official typed SDKs are available for JavaScript/TypeScript, PHP, Python, Ruby, and Go. See https://ilovevideoeditor.com/docs/sdks **Outbound Webhooks** Render lifecycle events (`render.completed`, `render.failed`) are delivered to your endpoints as signed HTTP POST requests. See the `Webhooks` tag and the root-level `x-webhook-docs` extension for the payload format (`RenderWebhookPayload`), signature headers, HMAC verification, and the retry policy.
5
+
6
+ The version of the OpenAPI document: 1.0.0
7
+
8
+ Generated by: https://openapi-generator.tech
9
+ Generator version: 7.22.0
10
+
11
+ =end
12
+
13
+ # Common files
14
+ require 'ilovevideoeditor-sdk/api_client'
15
+ require 'ilovevideoeditor-sdk/api_error'
16
+ require 'ilovevideoeditor-sdk/api_model_base'
17
+ require 'ilovevideoeditor-sdk/version'
18
+ require 'ilovevideoeditor-sdk/configuration'
19
+
20
+ # Models
21
+ require 'ilovevideoeditor-sdk/models/api_key'
22
+ require 'ilovevideoeditor-sdk/models/api_key_with_secret'
23
+ require 'ilovevideoeditor-sdk/models/asset'
24
+ require 'ilovevideoeditor-sdk/models/asset_create'
25
+ require 'ilovevideoeditor-sdk/models/asset_upload_url_response'
26
+ require 'ilovevideoeditor-sdk/models/batch_delete_projects_request'
27
+ require 'ilovevideoeditor-sdk/models/batch_delete_result'
28
+ require 'ilovevideoeditor-sdk/models/billing_prices'
29
+ require 'ilovevideoeditor-sdk/models/billing_prices_tiers'
30
+ require 'ilovevideoeditor-sdk/models/billing_subscription'
31
+ require 'ilovevideoeditor-sdk/models/cancel_render200_response'
32
+ require 'ilovevideoeditor-sdk/models/create_api_key_request'
33
+ require 'ilovevideoeditor-sdk/models/create_asset201_response'
34
+ require 'ilovevideoeditor-sdk/models/create_checkout_session200_response'
35
+ require 'ilovevideoeditor-sdk/models/create_checkout_session_request'
36
+ require 'ilovevideoeditor-sdk/models/create_integration201_response'
37
+ require 'ilovevideoeditor-sdk/models/create_project200_response'
38
+ require 'ilovevideoeditor-sdk/models/create_workflow201_response'
39
+ require 'ilovevideoeditor-sdk/models/create_workflow_request'
40
+ require 'ilovevideoeditor-sdk/models/credit_balance'
41
+ require 'ilovevideoeditor-sdk/models/credit_balance_summary'
42
+ require 'ilovevideoeditor-sdk/models/credit_balance_usage'
43
+ require 'ilovevideoeditor-sdk/models/delete_project200_response'
44
+ require 'ilovevideoeditor-sdk/models/destination'
45
+ require 'ilovevideoeditor-sdk/models/destination_input'
46
+ require 'ilovevideoeditor-sdk/models/error'
47
+ require 'ilovevideoeditor-sdk/models/estimate_render_cost_request'
48
+ require 'ilovevideoeditor-sdk/models/get_asset_signed_url200_response'
49
+ require 'ilovevideoeditor-sdk/models/get_asset_upload_url_request'
50
+ require 'ilovevideoeditor-sdk/models/get_destination200_response'
51
+ require 'ilovevideoeditor-sdk/models/get_project200_response'
52
+ require 'ilovevideoeditor-sdk/models/get_project_stats200_response'
53
+ require 'ilovevideoeditor-sdk/models/get_render_download_url200_response'
54
+ require 'ilovevideoeditor-sdk/models/get_rendition200_response'
55
+ require 'ilovevideoeditor-sdk/models/get_subscription200_response'
56
+ require 'ilovevideoeditor-sdk/models/get_template200_response'
57
+ require 'ilovevideoeditor-sdk/models/get_usage200_response'
58
+ require 'ilovevideoeditor-sdk/models/get_workflow200_response'
59
+ require 'ilovevideoeditor-sdk/models/get_workflow_run200_response'
60
+ require 'ilovevideoeditor-sdk/models/health_check200_response'
61
+ require 'ilovevideoeditor-sdk/models/health_check_detailed200_response'
62
+ require 'ilovevideoeditor-sdk/models/health_check_detailed200_response_services'
63
+ require 'ilovevideoeditor-sdk/models/list_api_keys200_response'
64
+ require 'ilovevideoeditor-sdk/models/list_assets200_response'
65
+ require 'ilovevideoeditor-sdk/models/list_integrations200_response'
66
+ require 'ilovevideoeditor-sdk/models/list_invoices200_response'
67
+ require 'ilovevideoeditor-sdk/models/list_projects200_response'
68
+ require 'ilovevideoeditor-sdk/models/list_renditions200_response'
69
+ require 'ilovevideoeditor-sdk/models/list_templates200_response'
70
+ require 'ilovevideoeditor-sdk/models/list_webhook_subscriptions200_response'
71
+ require 'ilovevideoeditor-sdk/models/list_workflow_runs200_response'
72
+ require 'ilovevideoeditor-sdk/models/list_workflow_step_types200_response'
73
+ require 'ilovevideoeditor-sdk/models/list_workflows200_response'
74
+ require 'ilovevideoeditor-sdk/models/project'
75
+ require 'ilovevideoeditor-sdk/models/project_create'
76
+ require 'ilovevideoeditor-sdk/models/project_update'
77
+ require 'ilovevideoeditor-sdk/models/queue_render200_response'
78
+ require 'ilovevideoeditor-sdk/models/queue_render_request'
79
+ require 'ilovevideoeditor-sdk/models/refresh_render_url200_response'
80
+ require 'ilovevideoeditor-sdk/models/render_cost_estimate'
81
+ require 'ilovevideoeditor-sdk/models/render_cost_estimate_resolution'
82
+ require 'ilovevideoeditor-sdk/models/render_cost_estimate_tier'
83
+ require 'ilovevideoeditor-sdk/models/render_job'
84
+ require 'ilovevideoeditor-sdk/models/render_job_progress'
85
+ require 'ilovevideoeditor-sdk/models/render_list_item'
86
+ require 'ilovevideoeditor-sdk/models/render_template_request'
87
+ require 'ilovevideoeditor-sdk/models/render_webhook_payload'
88
+ require 'ilovevideoeditor-sdk/models/rendition'
89
+ require 'ilovevideoeditor-sdk/models/rendition_cancel_result'
90
+ require 'ilovevideoeditor-sdk/models/rendition_output'
91
+ require 'ilovevideoeditor-sdk/models/rendition_stats'
92
+ require 'ilovevideoeditor-sdk/models/run_workflow202_response'
93
+ require 'ilovevideoeditor-sdk/models/run_workflow_request'
94
+ require 'ilovevideoeditor-sdk/models/service_health'
95
+ require 'ilovevideoeditor-sdk/models/template'
96
+ require 'ilovevideoeditor-sdk/models/template_summary'
97
+ require 'ilovevideoeditor-sdk/models/test_integration200_response'
98
+ require 'ilovevideoeditor-sdk/models/tier_info'
99
+ require 'ilovevideoeditor-sdk/models/tier_info_credits'
100
+ require 'ilovevideoeditor-sdk/models/tool_job_request'
101
+ require 'ilovevideoeditor-sdk/models/tool_job_request_dimensions'
102
+ require 'ilovevideoeditor-sdk/models/tool_job_status'
103
+ require 'ilovevideoeditor-sdk/models/track_render_bandwidth200_response'
104
+ require 'ilovevideoeditor-sdk/models/update_workflow_request'
105
+ require 'ilovevideoeditor-sdk/models/upload_asset200_response'
106
+ require 'ilovevideoeditor-sdk/models/usage_log'
107
+ require 'ilovevideoeditor-sdk/models/video_json'
108
+ require 'ilovevideoeditor-sdk/models/video_json_destination'
109
+ require 'ilovevideoeditor-sdk/models/webhook_subscription'
110
+ require 'ilovevideoeditor-sdk/models/webhook_subscription_create'
111
+ require 'ilovevideoeditor-sdk/models/workflow'
112
+ require 'ilovevideoeditor-sdk/models/workflow_definition'
113
+ require 'ilovevideoeditor-sdk/models/workflow_run'
114
+ require 'ilovevideoeditor-sdk/models/workflow_run_step'
115
+ require 'ilovevideoeditor-sdk/models/workflow_step'
116
+ require 'ilovevideoeditor-sdk/models/workflow_variable'
117
+ require 'ilovevideoeditor-sdk/models/workspace_integration'
118
+ require 'ilovevideoeditor-sdk/models/workspace_integration_input'
119
+
120
+ # APIs
121
+ require 'ilovevideoeditor-sdk/api/api_keys_api'
122
+ require 'ilovevideoeditor-sdk/api/assets_api'
123
+ require 'ilovevideoeditor-sdk/api/billing_api'
124
+ require 'ilovevideoeditor-sdk/api/health_api'
125
+ require 'ilovevideoeditor-sdk/api/integrations_api'
126
+ require 'ilovevideoeditor-sdk/api/projects_api'
127
+ require 'ilovevideoeditor-sdk/api/render_api'
128
+ require 'ilovevideoeditor-sdk/api/renditions_api'
129
+ require 'ilovevideoeditor-sdk/api/templates_api'
130
+ require 'ilovevideoeditor-sdk/api/tools_api'
131
+ require 'ilovevideoeditor-sdk/api/webhooks_api'
132
+ require 'ilovevideoeditor-sdk/api/workflows_api'
133
+
134
+ module ILoveVideoEditor
135
+ class << self
136
+ # Customize default settings for the SDK using block.
137
+ # ILoveVideoEditor.configure do |config|
138
+ # config.username = "xxx"
139
+ # config.password = "xxx"
140
+ # end
141
+ # If no block given, return the default Configuration object.
142
+ def configure
143
+ if block_given?
144
+ yield(Configuration.default)
145
+ else
146
+ Configuration.default
147
+ end
148
+ end
149
+ end
150
+ end
@@ -0,0 +1,106 @@
1
+ require 'ilovevideoeditor-sdk'
2
+
3
+ module ILoveVideoEditor
4
+ # High-level iLoveVideoEditor client with polling and friendly method names.
5
+ #
6
+ # Usage:
7
+ # client = ILoveVideoEditor::Client.new(api_key: 'vf_live_xxx')
8
+ # result = client.render({ name: 'Hello', layers: [...] })
9
+ # puts result.download_url
10
+ class Client
11
+ RenderResult = Struct.new(
12
+ :job_id, :status, :progress, :url, :download_url,
13
+ :error, :created_at, :completed_at,
14
+ keyword_init: true
15
+ )
16
+
17
+ def initialize(api_key:, base_url: 'https://api.ilovevideoeditor.com')
18
+ raise ArgumentError, 'api_key is required' if api_key.nil? || api_key.empty?
19
+
20
+ ILoveVideoEditor.configure do |config|
21
+ config.host = base_url
22
+ config.api_key['x-api-key'] = api_key
23
+ end
24
+
25
+ @render_api = ILoveVideoEditor::RenderApi.new
26
+ @templates_api = ILoveVideoEditor::TemplatesApi.new
27
+ end
28
+
29
+ # Normalize the API progress payload ({done, total, percent}) to a percent number.
30
+ def self.progress_percent(progress)
31
+ return 0.0 if progress.nil?
32
+ return progress.to_f if progress.is_a?(Numeric)
33
+
34
+ progress.respond_to?(:percent) && progress.percent ? progress.percent.to_f : 0.0
35
+ end
36
+
37
+ # Submit a VideoJSON payload and block until the render finishes.
38
+ def render(video_json, poll_interval: 2, max_wait: 300, on_progress: nil)
39
+ body = ILoveVideoEditor::QueueRenderRequest.new(video_json: video_json)
40
+ queued = @render_api.queue_render(body)
41
+ job_id = queued.job_id
42
+
43
+ deadline = Time.now + max_wait
44
+ while Time.now < deadline
45
+ status = @render_api.get_render_status(job_id)
46
+ progress = self.class.progress_percent(status.progress)
47
+ on_progress&.call(status.status, progress)
48
+
49
+ if status.status == 'completed'
50
+ refresh = @render_api.refresh_render_url(job_id)
51
+ return RenderResult.new(
52
+ job_id: job_id,
53
+ status: status.status,
54
+ progress: progress,
55
+ url: status.url,
56
+ download_url: refresh.download_url,
57
+ error: status.error,
58
+ created_at: status.created_at,
59
+ completed_at: status.completed_at
60
+ )
61
+ end
62
+
63
+ if status.status == 'failed'
64
+ return RenderResult.new(
65
+ job_id: job_id,
66
+ status: status.status,
67
+ progress: progress,
68
+ error: status.error,
69
+ created_at: status.created_at,
70
+ completed_at: status.completed_at
71
+ )
72
+ end
73
+
74
+ sleep(poll_interval)
75
+ end
76
+
77
+ raise Timeout::Error, "Render #{job_id} did not complete within #{max_wait}s"
78
+ end
79
+
80
+ def get_render(job_id)
81
+ status = @render_api.get_render_status(job_id)
82
+ RenderResult.new(
83
+ job_id: status.job_id,
84
+ status: status.status,
85
+ progress: self.class.progress_percent(status.progress),
86
+ url: status.url,
87
+ error: status.error,
88
+ created_at: status.created_at,
89
+ completed_at: status.completed_at
90
+ )
91
+ end
92
+
93
+ def refresh_url(job_id)
94
+ result = @render_api.refresh_render_url(job_id)
95
+ result.download_url
96
+ end
97
+
98
+ def list_templates
99
+ @templates_api.list_templates.templates
100
+ end
101
+
102
+ def get_template(id)
103
+ @templates_api.get_template(id).template
104
+ end
105
+ end
106
+ end
@@ -0,0 +1,2 @@
1
+ require_relative 'generated/ilovevideoeditor-sdk'
2
+ require_relative 'ilovevideoeditor/client'