cloudconvert 0.0.5 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,18 @@
1
+ module CloudConvert
2
+ class Job < Entity
3
+ # @return [String]
4
+ attr_reader :id, :tag
5
+
6
+ # @return [Symbol]
7
+ symbol_attr_reader :status
8
+
9
+ # @return [CloudConvert::Collection<CloudConvert::Task>]
10
+ collection_attr_reader :Task, :tasks
11
+
12
+ # @return [OpenStruct]
13
+ struct_attr_reader :links
14
+
15
+ # @return [Time]
16
+ time_attr_reader :created_at, :started_at, :ended_at
17
+ end
18
+ end
@@ -0,0 +1,9 @@
1
+ module CloudConvert
2
+ module Middleware
3
+ class ParseJson < FaradayMiddleware::ParseJson
4
+ define_parser do |body, parser_options|
5
+ JSON.parse(body, object_class: OpenStruct) unless body.blank?
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ module CloudConvert
2
+ class Resource
3
+ attr_reader :client
4
+
5
+ def initialize(client)
6
+ @client = client
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,54 @@
1
+ module CloudConvert
2
+ module Resources
3
+ class Jobs < Resource
4
+ # @param params [Hash]
5
+ # @return [Collection<Job>]
6
+ def all(params = {})
7
+ Job.collection(client.get("/v2/jobs", params))
8
+ end
9
+
10
+ # @param id [String]
11
+ # @param params [Hash]
12
+ # @return [Job]
13
+ def find(id, params = {})
14
+ Job.result(client.get("/v2/jobs/#{id}", params))
15
+ end
16
+
17
+ # @param params [Hash]
18
+ # @return [Job]
19
+ def create(params)
20
+ schema = Schemacop::Schema.new do
21
+ type :hash, allow_obsolete_keys: true do
22
+ req :tasks, :array, min: 1 do
23
+ type :hash, allow_obsolete_keys: true do
24
+ req :operation, :string
25
+ end
26
+ end
27
+ end
28
+ end
29
+
30
+ schema.validate! params
31
+
32
+ payload = params.dup
33
+
34
+ payload[:tasks] = payload[:tasks].to_h do |task|
35
+ [task[:name], task.reject { |k| k == :name }]
36
+ end
37
+
38
+ Job.result(client.post("/v2/jobs", payload))
39
+ end
40
+
41
+ # @param id [String]
42
+ # @return [Job]
43
+ def wait(id)
44
+ Job.result(client.get("/v2/jobs/#{id}/wait", {}))
45
+ end
46
+
47
+ # @param id [String]
48
+ # @return [void]
49
+ def delete(id)
50
+ client.delete("/v2/jobs/#{id}")
51
+ end
52
+ end
53
+ end
54
+ end
@@ -0,0 +1,80 @@
1
+ module CloudConvert
2
+ module Resources
3
+ class Tasks < Resource
4
+ # @param params [Hash]
5
+ # @return [Collection<Task>]
6
+ def all(params = {})
7
+ Task.collection(client.get("/v2/tasks", params))
8
+ end
9
+
10
+ # @param id [String]
11
+ # @param params [Hash]
12
+ # @return [Task]
13
+ def find(id, params = {})
14
+ Task.result(client.get("/v2/tasks/#{id}", params))
15
+ end
16
+
17
+ # @param operation [String]
18
+ # @param params [Hash]
19
+ # @return [Task]
20
+ def create(params = {})
21
+ schema = Schemacop::Schema.new do
22
+ type :hash, allow_obsolete_keys: true do
23
+ req :operation, :string
24
+ req :input, :string unless params[:operation].nil? || params[:operation].start_with?("import")
25
+ end
26
+ end
27
+
28
+ schema.validate! params
29
+
30
+ Task.result(client.post("/v2/#{params[:operation]}", params))
31
+ end
32
+
33
+ # @param params [Hash]
34
+ # @return [Task]
35
+ def cancel(id)
36
+ Task.result(client.post("/v2/tasks/#{id}/cancel"))
37
+ end
38
+
39
+ # @param id [String]
40
+ # @return [void]
41
+ def delete(id)
42
+ client.delete("/v2/tasks/#{id}")
43
+ end
44
+
45
+ # @param params [Hash]
46
+ # @return [Task]
47
+ def retry(id)
48
+ Task.result(client.post("/v2/tasks/#{id}/retry"))
49
+ end
50
+
51
+ # @param id [String]
52
+ # @return [Task]
53
+ def wait(id)
54
+ Task.result(client.get("/v2/tasks/#{id}/wait"))
55
+ end
56
+
57
+ # @param file [File, String, IO] Either a String filename to a local file or an open IO object.
58
+ # @param task [Task] The "import/upload" Task to upload the file to.
59
+ # @return [void]
60
+ def upload(file, task)
61
+ unless task.operation == "import/upload"
62
+ raise ArgumentError.new("The task operation is not import/upload")
63
+ end
64
+
65
+ unless task.result && task.result.form && task.waiting?
66
+ raise ArgumentError.new("The task is not ready for uploading")
67
+ end
68
+
69
+ file = File.new(file) unless file.is_a? File
70
+
71
+ client.post(task.result.form.url, task.result.form.parameters.to_h.merge(file: file)) do |request|
72
+ request.headers.delete("Authorization")
73
+ request.headers["Content-Type"] = "multipart/form-data"
74
+ end
75
+
76
+ nil
77
+ end
78
+ end
79
+ end
80
+ end
@@ -0,0 +1,10 @@
1
+ module CloudConvert
2
+ module Resources
3
+ class Users < Resource
4
+ # @return [User]
5
+ def me
6
+ User.result(client.get("/v2/users/me"))
7
+ end
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,43 @@
1
+ module CloudConvert
2
+ class Task < Entity
3
+ # @return [String]
4
+ attr_reader :id, :name, :operation, :message, :code,
5
+ :engine, :engine_version, :host_name, :storage,
6
+ :job_id, :copy_of_task_id, :retry_of_task_id
7
+
8
+ # @return [Symbol]
9
+ symbol_attr_reader :status
10
+
11
+ # @return [Integer]
12
+ attr_reader :percent, :priority
13
+
14
+ # @return [CloudConvert::Collection<CloudConvert::Task>]
15
+ collection_attr_reader :Task, :depends_on_tasks, :retries
16
+
17
+ # @return [OpenStruct]
18
+ struct_attr_reader :payload, :result, :links
19
+
20
+ # @return [Time]
21
+ time_attr_reader :created_at, :started_at, :ended_at
22
+
23
+ # @return [Boolean]
24
+ def error?
25
+ status == :error
26
+ end
27
+
28
+ # @return [Boolean]
29
+ def finished?
30
+ status == :finished
31
+ end
32
+
33
+ # @return [Boolean]
34
+ def processing?
35
+ status == :processing
36
+ end
37
+
38
+ # @return [Boolean]
39
+ def waiting?
40
+ status == :waiting
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,18 @@
1
+ module CloudConvert
2
+ class User < Entity
3
+ # @return [Integer]
4
+ attr_reader :id, :credits
5
+
6
+ # @return [String]
7
+ attr_reader :username, :email
8
+
9
+ # @return [Boolean]
10
+ predicate_attr_reader :paying
11
+
12
+ # @return [OpenStruct]
13
+ struct_attr_reader :links
14
+
15
+ # @return [Time]
16
+ time_attr_reader :created_at
17
+ end
18
+ end
@@ -1,3 +1,3 @@
1
- module Cloudconvert
2
- VERSION = "0.0.5"
1
+ module CloudConvert
2
+ VERSION = "1.0.0"
3
3
  end
@@ -0,0 +1,54 @@
1
+ module CloudConvert
2
+ class Webhook
3
+ # Raised when a webhook is malformed
4
+ Error = Class.new(CloudConvert::Error)
5
+
6
+ # Raised when a webhook does not match the CloudConvert-Signature
7
+ InvalidSignature = Class.new(Error)
8
+
9
+ # Raised when a webhook does not have a CloudConvert-Signature
10
+ MissingSignature = Class.new(Error)
11
+
12
+ class << self
13
+ # @param payload [String] The full request body (the JSON string) of our request to the webhook URL.
14
+ # @return [Event]
15
+ def event(payload)
16
+ Event.new(JSON.parse(payload, object_class: OpenStruct))
17
+ end
18
+
19
+ # @param payload [String] The full request body (the JSON string) of our request to the webhook URL.
20
+ # @param signature [String] The value from the CloudConvert-Signature.
21
+ # @param secret [String] The signing secret from for your webhook settings.
22
+ # @return [Boolean]
23
+ def verify(payload, signature, secret)
24
+ OpenSSL::HMAC.hexdigest("SHA256", secret.to_s, payload.to_s) == signature
25
+ end
26
+
27
+ # @param payload [String] The full request body (the JSON string) of our request to the webhook URL.
28
+ # @param signature [String] The value from the CloudConvert-Signature.
29
+ # @param secret [String] The signing secret from for your webhook settings.
30
+ # @raise [MissingSignature, InvalidSignature]
31
+ # @return [Boolean]
32
+ def verify!(payload, signature, secret)
33
+ raise MissingSignature.new("Missing webhook signature") if signature.to_s.empty?
34
+ raise InvalidSignature.new("Invalid webhook signature") unless verify(payload, signature, secret)
35
+ true
36
+ end
37
+
38
+ # @param request [Request] The request to the webhook URL from CloudConvert.
39
+ # @param secret [String] The signing secret from for your webhook settings.
40
+ # @return [Boolean]
41
+ def verify_request(request, secret)
42
+ verify request.body.rewind && request.body.read, request.get_header("HTTP_CLOUDCONVERT_SIGNATURE"), secret
43
+ end
44
+
45
+ # @param request [Request] The request to the webhook URL from CloudConvert.
46
+ # @param secret [String] The signing secret from for your webhook settings.
47
+ # @raise [MissingSignature, InvalidSignature]
48
+ # @return [Boolean]
49
+ def verify_request!(request, secret)
50
+ verify! request.body.rewind && request.body.read, request.get_header("HTTP_CLOUDCONVERT_SIGNATURE"), secret
51
+ end
52
+ end
53
+ end
54
+ end
@@ -0,0 +1,29 @@
1
+ module CloudConvert::Webhook::Processor
2
+ extend ActiveSupport::Concern
3
+
4
+ # Raised when the webhook_secret has not been supplied
5
+ UnspecifiedSecret = Class.new(CloudConvert::Webhook::Error)
6
+
7
+ included do
8
+ before_action :authenticate_cloudconvert_request!, only: :create
9
+ skip_before_action :verify_authenticity_token, only: :create
10
+ end
11
+
12
+ def create
13
+ method = event.name.gsub(".", "_")
14
+ raise NoMethodError.new("#{name}##{method} not implemented") unless respond_to?(method, true)
15
+ send(method, event)
16
+ head(:ok)
17
+ end
18
+
19
+ private
20
+
21
+ def authenticate_cloudconvert_request!
22
+ raise UnspecifiedSecret.new unless respond_to?(:webhook_secret, true)
23
+ head(:bad_request) unless CloudConvert::Webhook.verify_request(request, webhook_secret(event))
24
+ end
25
+
26
+ def event
27
+ @event ||= CloudConvert::Webhook.event(request.body.read)
28
+ end
29
+ end
metadata CHANGED
@@ -1,37 +1,52 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cloudconvert
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
- - Pandurang Waghulde
8
- autorequire:
7
+ - Josias Montag
8
+ - Steve Lacey
9
+ autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
- date: 2014-05-15 00:00:00.000000000 Z
12
+ date: 2021-01-12 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
- name: bundler
15
+ name: activesupport
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - ">="
19
+ - !ruby/object:Gem::Version
20
+ version: '4.0'
21
+ type: :runtime
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - ">="
26
+ - !ruby/object:Gem::Version
27
+ version: '4.0'
28
+ - !ruby/object:Gem::Dependency
29
+ name: down
15
30
  requirement: !ruby/object:Gem::Requirement
16
31
  requirements:
17
32
  - - "~>"
18
33
  - !ruby/object:Gem::Version
19
- version: '1.3'
20
- type: :development
34
+ version: '5.0'
35
+ type: :runtime
21
36
  prerelease: false
22
37
  version_requirements: !ruby/object:Gem::Requirement
23
38
  requirements:
24
39
  - - "~>"
25
40
  - !ruby/object:Gem::Version
26
- version: '1.3'
41
+ version: '5.0'
27
42
  - !ruby/object:Gem::Dependency
28
- name: rake
43
+ name: equalizer
29
44
  requirement: !ruby/object:Gem::Requirement
30
45
  requirements:
31
46
  - - ">="
32
47
  - !ruby/object:Gem::Version
33
48
  version: '0'
34
- type: :development
49
+ type: :runtime
35
50
  prerelease: false
36
51
  version_requirements: !ruby/object:Gem::Requirement
37
52
  requirements:
@@ -40,6 +55,34 @@ dependencies:
40
55
  version: '0'
41
56
  - !ruby/object:Gem::Dependency
42
57
  name: faraday
58
+ requirement: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - "~>"
61
+ - !ruby/object:Gem::Version
62
+ version: '1.0'
63
+ type: :runtime
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - "~>"
68
+ - !ruby/object:Gem::Version
69
+ version: '1.0'
70
+ - !ruby/object:Gem::Dependency
71
+ name: faraday_middleware
72
+ requirement: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - "~>"
75
+ - !ruby/object:Gem::Version
76
+ version: '1.0'
77
+ type: :runtime
78
+ prerelease: false
79
+ version_requirements: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - "~>"
82
+ - !ruby/object:Gem::Version
83
+ version: '1.0'
84
+ - !ruby/object:Gem::Dependency
85
+ name: forwardable
43
86
  requirement: !ruby/object:Gem::Requirement
44
87
  requirements:
45
88
  - - ">="
@@ -66,28 +109,265 @@ dependencies:
66
109
  - - ">="
67
110
  - !ruby/object:Gem::Version
68
111
  version: '0'
69
- description: Ruby wrapper for Cloud Convert
112
+ - !ruby/object:Gem::Dependency
113
+ name: memoizable
114
+ requirement: !ruby/object:Gem::Requirement
115
+ requirements:
116
+ - - "~>"
117
+ - !ruby/object:Gem::Version
118
+ version: '0.4'
119
+ type: :runtime
120
+ prerelease: false
121
+ version_requirements: !ruby/object:Gem::Requirement
122
+ requirements:
123
+ - - "~>"
124
+ - !ruby/object:Gem::Version
125
+ version: '0.4'
126
+ - !ruby/object:Gem::Dependency
127
+ name: mimemagic
128
+ requirement: !ruby/object:Gem::Requirement
129
+ requirements:
130
+ - - "~>"
131
+ - !ruby/object:Gem::Version
132
+ version: 0.3.5
133
+ type: :runtime
134
+ prerelease: false
135
+ version_requirements: !ruby/object:Gem::Requirement
136
+ requirements:
137
+ - - "~>"
138
+ - !ruby/object:Gem::Version
139
+ version: 0.3.5
140
+ - !ruby/object:Gem::Dependency
141
+ name: openssl
142
+ requirement: !ruby/object:Gem::Requirement
143
+ requirements:
144
+ - - ">="
145
+ - !ruby/object:Gem::Version
146
+ version: '0'
147
+ type: :runtime
148
+ prerelease: false
149
+ version_requirements: !ruby/object:Gem::Requirement
150
+ requirements:
151
+ - - ">="
152
+ - !ruby/object:Gem::Version
153
+ version: '0'
154
+ - !ruby/object:Gem::Dependency
155
+ name: ostruct
156
+ requirement: !ruby/object:Gem::Requirement
157
+ requirements:
158
+ - - ">="
159
+ - !ruby/object:Gem::Version
160
+ version: '0'
161
+ type: :runtime
162
+ prerelease: false
163
+ version_requirements: !ruby/object:Gem::Requirement
164
+ requirements:
165
+ - - ">="
166
+ - !ruby/object:Gem::Version
167
+ version: '0'
168
+ - !ruby/object:Gem::Dependency
169
+ name: schemacop
170
+ requirement: !ruby/object:Gem::Requirement
171
+ requirements:
172
+ - - "~>"
173
+ - !ruby/object:Gem::Version
174
+ version: '2.4'
175
+ type: :runtime
176
+ prerelease: false
177
+ version_requirements: !ruby/object:Gem::Requirement
178
+ requirements:
179
+ - - "~>"
180
+ - !ruby/object:Gem::Version
181
+ version: '2.4'
182
+ - !ruby/object:Gem::Dependency
183
+ name: dotenv
184
+ requirement: !ruby/object:Gem::Requirement
185
+ requirements:
186
+ - - "~>"
187
+ - !ruby/object:Gem::Version
188
+ version: '2.7'
189
+ type: :development
190
+ prerelease: false
191
+ version_requirements: !ruby/object:Gem::Requirement
192
+ requirements:
193
+ - - "~>"
194
+ - !ruby/object:Gem::Version
195
+ version: '2.7'
196
+ - !ruby/object:Gem::Dependency
197
+ name: rake
198
+ requirement: !ruby/object:Gem::Requirement
199
+ requirements:
200
+ - - "~>"
201
+ - !ruby/object:Gem::Version
202
+ version: '13.0'
203
+ type: :development
204
+ prerelease: false
205
+ version_requirements: !ruby/object:Gem::Requirement
206
+ requirements:
207
+ - - "~>"
208
+ - !ruby/object:Gem::Version
209
+ version: '13.0'
210
+ - !ruby/object:Gem::Dependency
211
+ name: climate_control
212
+ requirement: !ruby/object:Gem::Requirement
213
+ requirements:
214
+ - - ">="
215
+ - !ruby/object:Gem::Version
216
+ version: '0'
217
+ type: :development
218
+ prerelease: false
219
+ version_requirements: !ruby/object:Gem::Requirement
220
+ requirements:
221
+ - - ">="
222
+ - !ruby/object:Gem::Version
223
+ version: '0'
224
+ - !ruby/object:Gem::Dependency
225
+ name: pry
226
+ requirement: !ruby/object:Gem::Requirement
227
+ requirements:
228
+ - - ">="
229
+ - !ruby/object:Gem::Version
230
+ version: '0'
231
+ type: :development
232
+ prerelease: false
233
+ version_requirements: !ruby/object:Gem::Requirement
234
+ requirements:
235
+ - - ">="
236
+ - !ruby/object:Gem::Version
237
+ version: '0'
238
+ - !ruby/object:Gem::Dependency
239
+ name: rack
240
+ requirement: !ruby/object:Gem::Requirement
241
+ requirements:
242
+ - - "~>"
243
+ - !ruby/object:Gem::Version
244
+ version: '2.2'
245
+ type: :development
246
+ prerelease: false
247
+ version_requirements: !ruby/object:Gem::Requirement
248
+ requirements:
249
+ - - "~>"
250
+ - !ruby/object:Gem::Version
251
+ version: '2.2'
252
+ - !ruby/object:Gem::Dependency
253
+ name: rspec
254
+ requirement: !ruby/object:Gem::Requirement
255
+ requirements:
256
+ - - "~>"
257
+ - !ruby/object:Gem::Version
258
+ version: '3.0'
259
+ type: :development
260
+ prerelease: false
261
+ version_requirements: !ruby/object:Gem::Requirement
262
+ requirements:
263
+ - - "~>"
264
+ - !ruby/object:Gem::Version
265
+ version: '3.0'
266
+ - !ruby/object:Gem::Dependency
267
+ name: rubocop
268
+ requirement: !ruby/object:Gem::Requirement
269
+ requirements:
270
+ - - "~>"
271
+ - !ruby/object:Gem::Version
272
+ version: '1.5'
273
+ type: :development
274
+ prerelease: false
275
+ version_requirements: !ruby/object:Gem::Requirement
276
+ requirements:
277
+ - - "~>"
278
+ - !ruby/object:Gem::Version
279
+ version: '1.5'
280
+ - !ruby/object:Gem::Dependency
281
+ name: securerandom
282
+ requirement: !ruby/object:Gem::Requirement
283
+ requirements:
284
+ - - ">="
285
+ - !ruby/object:Gem::Version
286
+ version: '0'
287
+ type: :development
288
+ prerelease: false
289
+ version_requirements: !ruby/object:Gem::Requirement
290
+ requirements:
291
+ - - ">="
292
+ - !ruby/object:Gem::Version
293
+ version: '0'
294
+ - !ruby/object:Gem::Dependency
295
+ name: simplecov
296
+ requirement: !ruby/object:Gem::Requirement
297
+ requirements:
298
+ - - "~>"
299
+ - !ruby/object:Gem::Version
300
+ version: '0.16'
301
+ type: :development
302
+ prerelease: false
303
+ version_requirements: !ruby/object:Gem::Requirement
304
+ requirements:
305
+ - - "~>"
306
+ - !ruby/object:Gem::Version
307
+ version: '0.16'
308
+ - !ruby/object:Gem::Dependency
309
+ name: webmock
310
+ requirement: !ruby/object:Gem::Requirement
311
+ requirements:
312
+ - - ">="
313
+ - !ruby/object:Gem::Version
314
+ version: '0'
315
+ type: :development
316
+ prerelease: false
317
+ version_requirements: !ruby/object:Gem::Requirement
318
+ requirements:
319
+ - - ">="
320
+ - !ruby/object:Gem::Version
321
+ version: '0'
322
+ - !ruby/object:Gem::Dependency
323
+ name: vcr
324
+ requirement: !ruby/object:Gem::Requirement
325
+ requirements:
326
+ - - "~>"
327
+ - !ruby/object:Gem::Version
328
+ version: '6.0'
329
+ type: :development
330
+ prerelease: false
331
+ version_requirements: !ruby/object:Gem::Requirement
332
+ requirements:
333
+ - - "~>"
334
+ - !ruby/object:Gem::Version
335
+ version: '6.0'
336
+ description: A Ruby interface to the CloudConvert API v2.
70
337
  email:
71
- - pandurang.plw@gmail.com
338
+ - josias@montag.info
339
+ - steve@steve.ly
72
340
  executables: []
73
341
  extensions: []
74
342
  extra_rdoc_files: []
75
343
  files:
76
- - ".gitignore"
77
- - Gemfile
78
344
  - LICENSE.txt
79
345
  - README.md
80
- - Rakefile
81
346
  - cloudconvert.gemspec
82
347
  - lib/cloudconvert.rb
83
- - lib/cloudconvert/configuration.rb
84
- - lib/cloudconvert/conversion.rb
348
+ - lib/cloudconvert/base.rb
349
+ - lib/cloudconvert/client.rb
350
+ - lib/cloudconvert/collection.rb
351
+ - lib/cloudconvert/entity.rb
352
+ - lib/cloudconvert/error.rb
353
+ - lib/cloudconvert/event.rb
354
+ - lib/cloudconvert/file.rb
355
+ - lib/cloudconvert/job.rb
356
+ - lib/cloudconvert/middleware.rb
357
+ - lib/cloudconvert/resource.rb
358
+ - lib/cloudconvert/resources/jobs.rb
359
+ - lib/cloudconvert/resources/tasks.rb
360
+ - lib/cloudconvert/resources/users.rb
361
+ - lib/cloudconvert/task.rb
362
+ - lib/cloudconvert/user.rb
85
363
  - lib/cloudconvert/version.rb
86
- homepage: https://github.com/pandurang90/cloudconvert
364
+ - lib/cloudconvert/webhook.rb
365
+ - lib/cloudconvert/webhook/processor.rb
366
+ homepage: https://cloudconvert.com/api/v2
87
367
  licenses:
88
368
  - MIT
89
369
  metadata: {}
90
- post_install_message:
370
+ post_install_message:
91
371
  rdoc_options: []
92
372
  require_paths:
93
373
  - lib
@@ -95,16 +375,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
95
375
  requirements:
96
376
  - - ">="
97
377
  - !ruby/object:Gem::Version
98
- version: '0'
378
+ version: '2.7'
99
379
  required_rubygems_version: !ruby/object:Gem::Requirement
100
380
  requirements:
101
381
  - - ">="
102
382
  - !ruby/object:Gem::Version
103
383
  version: '0'
104
384
  requirements: []
105
- rubyforge_project:
106
- rubygems_version: 2.2.0
107
- signing_key:
385
+ rubygems_version: 3.1.4
386
+ signing_key:
108
387
  specification_version: 4
109
- summary: Ruby wrapper for Cloud Convert
388
+ summary: A Ruby interface to the CloudConvert API v2.
110
389
  test_files: []