vzaar_api 2.0.0 → 2.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (56) hide show
  1. checksums.yaml +5 -5
  2. data/.gitignore +2 -0
  3. data/README.md +2 -2
  4. data/lib/vzaar_api/abstract.rb +1 -1
  5. data/lib/vzaar_api/lib/active_object.rb +9 -4
  6. data/lib/vzaar_api/lib/api.rb +2 -1
  7. data/lib/vzaar_api/lib/has_resource_url.rb +7 -4
  8. data/lib/vzaar_api/lib/paged_resource.rb +7 -2
  9. data/lib/vzaar_api/lib/will_paginate.rb +5 -1
  10. data/lib/vzaar_api/playlist.rb +1 -1
  11. data/lib/vzaar_api/signature/abstract.rb +17 -4
  12. data/lib/vzaar_api/signature/multipart.rb +1 -1
  13. data/lib/vzaar_api/signature/single.rb +1 -1
  14. data/lib/vzaar_api/strategy/image/abstract.rb +25 -0
  15. data/lib/vzaar_api/strategy/image/create.rb +21 -0
  16. data/lib/vzaar_api/strategy/image/update.rb +11 -0
  17. data/lib/vzaar_api/strategy/subtitle/create.rb +36 -0
  18. data/lib/vzaar_api/upload/s3.rb +2 -4
  19. data/lib/vzaar_api/version.rb +1 -1
  20. data/lib/vzaar_api/video/subtitle.rb +38 -0
  21. data/lib/vzaar_api/video.rb +8 -1
  22. data/lib/vzaar_api.rb +5 -0
  23. data/spec/fixtures/vcr_cassettes/signature/multipart_201.yml +20 -20
  24. data/spec/fixtures/vcr_cassettes/signature/multipart_422.yml +12 -12
  25. data/spec/fixtures/vcr_cassettes/signature/single_201.yml +20 -20
  26. data/spec/fixtures/vcr_cassettes/signature/single_422.yml +11 -11
  27. data/spec/fixtures/vcr_cassettes/subtitles/create_201.yml +58 -0
  28. data/spec/fixtures/vcr_cassettes/subtitles/create_422.yml +48 -0
  29. data/spec/fixtures/vcr_cassettes/subtitles/create_from_file_201.yml +63 -0
  30. data/spec/fixtures/vcr_cassettes/subtitles/delete_204.yml +52 -0
  31. data/spec/fixtures/vcr_cassettes/subtitles/paginate.yml +58 -0
  32. data/spec/fixtures/vcr_cassettes/subtitles/paginate_first.yml +58 -0
  33. data/spec/fixtures/vcr_cassettes/subtitles/paginate_last.yml +113 -0
  34. data/spec/fixtures/vcr_cassettes/subtitles/paginate_next.yml +113 -0
  35. data/spec/fixtures/vcr_cassettes/subtitles/update_200.yml +113 -0
  36. data/spec/fixtures/vcr_cassettes/subtitles/update_422.yml +104 -0
  37. data/spec/fixtures/vcr_cassettes/upload/multipart_201.yml +162 -144
  38. data/spec/fixtures/vcr_cassettes/upload/multipart_403.yml +12 -116545
  39. data/spec/fixtures/vcr_cassettes/upload/single_201.yml +12 -23353
  40. data/spec/fixtures/vcr_cassettes/upload/single_403.yml +12 -23341
  41. data/spec/fixtures/vcr_cassettes/videos/create/link_201.yml +24 -22
  42. data/spec/fixtures/vcr_cassettes/videos/create/path_201.yml +55 -23394
  43. data/spec/fixtures/vcr_cassettes/videos/image_frame_202.yml +61 -0
  44. data/spec/fixtures/vcr_cassettes/videos/image_frame_422.yml +48 -0
  45. data/spec/fixtures/vcr_cassettes/videos/image_upload_frame_202.yml +62 -0
  46. data/spec/fixtures/vcr_cassettes/videos/image_upload_frame_422.yml +49 -0
  47. data/spec/support/files/drex.jpg +0 -0
  48. data/spec/support/files/fr.vtt +4 -0
  49. data/spec/support/helpers.rb +2 -3
  50. data/spec/support/shared_examples.rb +23 -0
  51. data/spec/vzaar_api/signature/multipart_spec.rb +34 -21
  52. data/spec/vzaar_api/signature/single_spec.rb +27 -16
  53. data/spec/vzaar_api/subtitle_spec.rb +206 -0
  54. data/spec/vzaar_api/upload/s3_spec.rb +40 -37
  55. data/spec/vzaar_api/video_spec.rb +55 -2
  56. metadata +45 -4
@@ -1,9 +1,17 @@
1
1
  module VzaarApi
2
2
  module Upload
3
3
  describe S3 do
4
-
5
4
  subject { described_class.new attrs, signature }
6
5
 
6
+ shared_examples "handling AWS error" do |cassette_name|
7
+ it 'handles an AWS 403 error' do
8
+ VCR.use_cassette(cassette_name) do
9
+ err_msg = 'X-Amz-Date must be formated via ISO8601 Long format'
10
+ expect { subject.execute }.to raise_error(Error, err_msg)
11
+ end
12
+ end
13
+ end
14
+
7
15
  describe '#execute' do
8
16
  context 'when multipart' do
9
17
  let(:attrs) do
@@ -12,27 +20,29 @@ module VzaarApi
12
20
 
13
21
  let(:signature_attrs) do
14
22
  {
15
- access_key_id: 'access_key_id',
16
- key: 'vzaar/t22/063/source/t22063bd228834adc8b9c7d5fb320b2b3o/${filename}',
23
+ key: "vzaar/tEW/AYG/source/tEWAYGhS8O5M/${filename}",
17
24
  acl: 'private',
18
- policy: 'policy',
19
- signature: 'signature',
25
+ policy: "policy",
20
26
  success_action_status: '201',
21
- content_type: 'binary/octet-stream',
22
- guid: 't22063bd228834adc8b9c7d5fb320b2b3o',
27
+ guid: "tEWAYGhS8O5M",
23
28
  bucket: 'vzaar-upload-development',
24
29
  upload_hostname: 'https://vzaar-upload-development.s3.amazonaws.com',
25
30
  part_size: '5MB',
26
31
  part_size_in_bytes: 5242880,
27
- parts: 3
28
- }
32
+ parts: 3,
33
+ :"x-amz-credential"=>"xxx/us-east-1/s3/aws4_request",
34
+ :"x-amz-algorithm"=>"AWS4-HMAC-SHA256",
35
+ :"x-amz-date"=>"date",
36
+ :"x-amz-signature"=>"sig"}
29
37
  end
30
38
 
31
- let(:signature) { Signature::Multipart.new signature_attrs.merge(signature_attrs) }
39
+ let(:signature) do
40
+ Signature::Multipart.new signature_attrs.merge(signature_attrs)
41
+ end
32
42
 
33
43
  context 'when successful' do
34
44
  let(:expected_result) do
35
- { guid: 't22063bd228834adc8b9c7d5fb320b2b3o', title: 'video-title' }
45
+ { guid: "tEWAYGhS8O5M", title: 'video-title' }
36
46
  end
37
47
 
38
48
  it 'uploads the video file' do
@@ -43,15 +53,11 @@ module VzaarApi
43
53
  end
44
54
 
45
55
  context 'when unsuccessful' do
46
- it 'handles an AWS 403 error' do
47
- VCR.use_cassette('upload/multipart_403') do
48
- expect { subject.execute }.to raise_error(
49
- Error, 'The AWS Access Key Id you provided does not exist in our records.')
50
- end
51
- end
56
+ it_behaves_like "handling AWS error", 'upload/multipart_403'
52
57
 
53
58
  it 'handles an unexpected error' do
54
- allow(subject).to receive(:http_client).and_raise(SocketError, 'error message')
59
+ allow(subject)
60
+ .to receive(:http_client).and_raise(SocketError, 'error message')
55
61
  expect { subject.execute }.to raise_error(Error, 'error message')
56
62
  end
57
63
  end
@@ -61,19 +67,19 @@ module VzaarApi
61
67
  let(:attrs) do
62
68
  { path: 'spec/support/files/video-1.0MB.mp4', title: 'video-title' }
63
69
  end
64
-
65
70
  let(:signature_attrs) do
66
71
  {
67
- access_key_id: 'access_key_id',
68
- key: "vzaar/t20/d72/source/t20d722afb9294989bda5f7cf01b11346v/${filename}",
72
+ key: "vzaar/tDQ/Upo/source/tDQUpoW-63JI/${filename}",
69
73
  acl: 'private',
70
- policy: 'policy',
71
- signature: 'signature',
72
- success_action_status: "201",
73
- content_type: "binary/octet-stream",
74
- guid: "t20d722afb9294989bda5f7cf01b11346v",
75
- bucket: "vzaar-upload-development",
76
- upload_hostname: "https://vzaar-upload-development.s3.amazonaws.com"
74
+ policy: "policy",
75
+ success_action_status: '201',
76
+ guid: "tDQUpoW-63JI",
77
+ bucket: 'vzaar-upload-development',
78
+ upload_hostname: 'https://vzaar-upload-development.s3.amazonaws.com',
79
+ :"x-amz-credential"=> "xxxxx/us-east-1/s3/aws4_request",
80
+ :"x-amz-algorithm"=>"AWS4-HMAC-SHA256",
81
+ :"x-amz-date"=>"date",
82
+ :"x-amz-signature"=>"signature"
77
83
  }
78
84
  end
79
85
 
@@ -81,7 +87,7 @@ module VzaarApi
81
87
 
82
88
  context 'when successful' do
83
89
  let(:expected_result) do
84
- { guid: 't20d722afb9294989bda5f7cf01b11346v', title: 'video-title' }
90
+ { guid: "tDQUpoW-63JI", title: 'video-title' }
85
91
  end
86
92
 
87
93
  it 'uploads the video file' do
@@ -92,21 +98,18 @@ module VzaarApi
92
98
  end
93
99
 
94
100
  context 'when unsuccessful' do
95
- it 'handles an AWS 403 error' do
96
- VCR.use_cassette('upload/single_403') do
97
- expect { subject.execute }.to raise_error(
98
- Error, 'The AWS Access Key Id you provided does not exist in our records.')
99
- end
100
- end
101
+ it_behaves_like "handling AWS error", 'upload/single_403'
101
102
 
102
103
  it 'handles an unexpected error' do
103
- allow(subject).to receive(:http_client).and_raise(SocketError, 'error message')
104
+ allow(subject)
105
+ .to(receive(:http_client))
106
+ .and_raise(SocketError, 'error message')
107
+
104
108
  expect { subject.execute }.to raise_error(Error, 'error message')
105
109
  end
106
110
  end
107
111
  end
108
112
  end
109
-
110
113
  end
111
114
  end
112
115
  end
@@ -154,7 +154,7 @@ module VzaarApi
154
154
  it 'returns the new video' do
155
155
  VCR.use_cassette('videos/create/path_201') do
156
156
  video = described_class.create(attrs)
157
- expect(video.id).to eq 7574827
157
+ expect(video.id).to eq 1293123212
158
158
  end
159
159
  end
160
160
  end
@@ -169,7 +169,7 @@ module VzaarApi
169
169
  it 'returns the new video' do
170
170
  VCR.use_cassette('videos/create/link_201') do
171
171
  video = described_class.create(attrs)
172
- expect(video.id).to eq 7574826
172
+ expect(video.id).to eq 1293123213
173
173
  end
174
174
  end
175
175
  end
@@ -244,5 +244,58 @@ module VzaarApi
244
244
  end
245
245
  end
246
246
 
247
+ describe ".set_image_frame" do
248
+ let(:video_id) { 18322783 }
249
+
250
+ context "when params are valid" do
251
+ it 'returns the existing video' do
252
+ VCR.use_cassette('videos/image_frame_202') do
253
+ video = described_class.set_image_frame(video_id, time: 3)
254
+ expect(video.id).to eq video_id
255
+ end
256
+ end
257
+ end
258
+
259
+ context 'when invalid params are provided' do
260
+ it 'raises an error' do
261
+ VCR.use_cassette('videos/image_frame_422') do
262
+ expect { described_class.set_image_frame(video_id, {}) }
263
+ .to raise_error(Error, 'Invalid parameters: time is missing')
264
+ end
265
+ end
266
+ end
267
+ end
268
+
269
+ describe ".upload_image_frame" do
270
+ let(:video_id) { 18322783 }
271
+ let(:path) { 'spec/support/files/drex.jpg' }
272
+
273
+ context "when params are valid" do
274
+ it 'returns the existing video' do
275
+ VCR.use_cassette('videos/image_upload_frame_202') do
276
+ video = described_class.upload_image_frame(video_id, path: path)
277
+ expect(video.id).to eq video_id
278
+ end
279
+ end
280
+ end
281
+
282
+ context 'when path param is missing' do
283
+ it 'raises an error' do
284
+ expect { described_class.upload_image_frame(video_id, {}) }
285
+ .to raise_error(Error, 'Invalid parameters: path is missing')
286
+ end
287
+ end
288
+
289
+ context 'when file is too big' do
290
+ let(:path) { 'spec/support/files/video-12.0MB.mp4' }
291
+
292
+ it 'raises an error' do
293
+ VCR.use_cassette('videos/image_upload_frame_422') do
294
+ expect { described_class.upload_image_frame(video_id, path: path) }
295
+ .to raise_error(Error, 'File size exceeded: Max 10MB allowed')
296
+ end
297
+ end
298
+ end
299
+ end
247
300
  end
248
301
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vzaar_api
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0
4
+ version: 2.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - vzaar
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-07-13 00:00:00.000000000 Z
11
+ date: 2019-01-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httpclient
@@ -221,11 +221,16 @@ files:
221
221
  - lib/vzaar_api/signature/factory.rb
222
222
  - lib/vzaar_api/signature/multipart.rb
223
223
  - lib/vzaar_api/signature/single.rb
224
+ - lib/vzaar_api/strategy/image/abstract.rb
225
+ - lib/vzaar_api/strategy/image/create.rb
226
+ - lib/vzaar_api/strategy/image/update.rb
227
+ - lib/vzaar_api/strategy/subtitle/create.rb
224
228
  - lib/vzaar_api/strategy/video/create.rb
225
229
  - lib/vzaar_api/upload/s3.rb
226
230
  - lib/vzaar_api/upload/virtual_file.rb
227
231
  - lib/vzaar_api/version.rb
228
232
  - lib/vzaar_api/video.rb
233
+ - lib/vzaar_api/video/subtitle.rb
229
234
  - spec/fixtures/vcr_cassettes/categories/each_item.yml
230
235
  - spec/fixtures/vcr_cassettes/categories/find.yml
231
236
  - spec/fixtures/vcr_cassettes/categories/find_404.yml
@@ -269,6 +274,16 @@ files:
269
274
  - spec/fixtures/vcr_cassettes/signature/multipart_422.yml
270
275
  - spec/fixtures/vcr_cassettes/signature/single_201.yml
271
276
  - spec/fixtures/vcr_cassettes/signature/single_422.yml
277
+ - spec/fixtures/vcr_cassettes/subtitles/create_201.yml
278
+ - spec/fixtures/vcr_cassettes/subtitles/create_422.yml
279
+ - spec/fixtures/vcr_cassettes/subtitles/create_from_file_201.yml
280
+ - spec/fixtures/vcr_cassettes/subtitles/delete_204.yml
281
+ - spec/fixtures/vcr_cassettes/subtitles/paginate.yml
282
+ - spec/fixtures/vcr_cassettes/subtitles/paginate_first.yml
283
+ - spec/fixtures/vcr_cassettes/subtitles/paginate_last.yml
284
+ - spec/fixtures/vcr_cassettes/subtitles/paginate_next.yml
285
+ - spec/fixtures/vcr_cassettes/subtitles/update_200.yml
286
+ - spec/fixtures/vcr_cassettes/subtitles/update_422.yml
272
287
  - spec/fixtures/vcr_cassettes/upload/multipart_201.yml
273
288
  - spec/fixtures/vcr_cassettes/upload/multipart_403.yml
274
289
  - spec/fixtures/vcr_cassettes/upload/single_201.yml
@@ -282,16 +297,23 @@ files:
282
297
  - spec/fixtures/vcr_cassettes/videos/delete_204.yml
283
298
  - spec/fixtures/vcr_cassettes/videos/find.yml
284
299
  - spec/fixtures/vcr_cassettes/videos/find_404.yml
300
+ - spec/fixtures/vcr_cassettes/videos/image_frame_202.yml
301
+ - spec/fixtures/vcr_cassettes/videos/image_frame_422.yml
302
+ - spec/fixtures/vcr_cassettes/videos/image_upload_frame_202.yml
303
+ - spec/fixtures/vcr_cassettes/videos/image_upload_frame_422.yml
285
304
  - spec/fixtures/vcr_cassettes/videos/paginate_first.yml
286
305
  - spec/fixtures/vcr_cassettes/videos/paginate_last.yml
287
306
  - spec/fixtures/vcr_cassettes/videos/paginate_next.yml
288
307
  - spec/fixtures/vcr_cassettes/videos/paginate_previous.yml
289
308
  - spec/spec_helper.rb
309
+ - spec/support/files/drex.jpg
310
+ - spec/support/files/fr.vtt
290
311
  - spec/support/files/video-1.0MB.mp4
291
312
  - spec/support/files/video-12.0MB.mp4
292
313
  - spec/support/files/video-4.9MB.mp4
293
314
  - spec/support/files/video-5.0MB.mp4
294
315
  - spec/support/helpers.rb
316
+ - spec/support/shared_examples.rb
295
317
  - spec/vzaar_api/category_spec.rb
296
318
  - spec/vzaar_api/encoding_preset_spec.rb
297
319
  - spec/vzaar_api/ingest_recipe_spec.rb
@@ -301,6 +323,7 @@ files:
301
323
  - spec/vzaar_api/signature/factory_spec.rb
302
324
  - spec/vzaar_api/signature/multipart_spec.rb
303
325
  - spec/vzaar_api/signature/single_spec.rb
326
+ - spec/vzaar_api/subtitle_spec.rb
304
327
  - spec/vzaar_api/upload/s3_spec.rb
305
328
  - spec/vzaar_api/video_spec.rb
306
329
  - spec/vzaar_api/vzaar_api_spec.rb
@@ -327,10 +350,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
327
350
  version: '0'
328
351
  requirements: []
329
352
  rubyforge_project:
330
- rubygems_version: 2.6.12
353
+ rubygems_version: 2.7.6
331
354
  signing_key:
332
355
  specification_version: 4
333
- summary: vzaar-2.0.0
356
+ summary: vzaar-2.0.1
334
357
  test_files:
335
358
  - spec/fixtures/vcr_cassettes/categories/each_item.yml
336
359
  - spec/fixtures/vcr_cassettes/categories/find.yml
@@ -375,6 +398,16 @@ test_files:
375
398
  - spec/fixtures/vcr_cassettes/signature/multipart_422.yml
376
399
  - spec/fixtures/vcr_cassettes/signature/single_201.yml
377
400
  - spec/fixtures/vcr_cassettes/signature/single_422.yml
401
+ - spec/fixtures/vcr_cassettes/subtitles/create_201.yml
402
+ - spec/fixtures/vcr_cassettes/subtitles/create_422.yml
403
+ - spec/fixtures/vcr_cassettes/subtitles/create_from_file_201.yml
404
+ - spec/fixtures/vcr_cassettes/subtitles/delete_204.yml
405
+ - spec/fixtures/vcr_cassettes/subtitles/paginate.yml
406
+ - spec/fixtures/vcr_cassettes/subtitles/paginate_first.yml
407
+ - spec/fixtures/vcr_cassettes/subtitles/paginate_last.yml
408
+ - spec/fixtures/vcr_cassettes/subtitles/paginate_next.yml
409
+ - spec/fixtures/vcr_cassettes/subtitles/update_200.yml
410
+ - spec/fixtures/vcr_cassettes/subtitles/update_422.yml
378
411
  - spec/fixtures/vcr_cassettes/upload/multipart_201.yml
379
412
  - spec/fixtures/vcr_cassettes/upload/multipart_403.yml
380
413
  - spec/fixtures/vcr_cassettes/upload/single_201.yml
@@ -388,16 +421,23 @@ test_files:
388
421
  - spec/fixtures/vcr_cassettes/videos/delete_204.yml
389
422
  - spec/fixtures/vcr_cassettes/videos/find.yml
390
423
  - spec/fixtures/vcr_cassettes/videos/find_404.yml
424
+ - spec/fixtures/vcr_cassettes/videos/image_frame_202.yml
425
+ - spec/fixtures/vcr_cassettes/videos/image_frame_422.yml
426
+ - spec/fixtures/vcr_cassettes/videos/image_upload_frame_202.yml
427
+ - spec/fixtures/vcr_cassettes/videos/image_upload_frame_422.yml
391
428
  - spec/fixtures/vcr_cassettes/videos/paginate_first.yml
392
429
  - spec/fixtures/vcr_cassettes/videos/paginate_last.yml
393
430
  - spec/fixtures/vcr_cassettes/videos/paginate_next.yml
394
431
  - spec/fixtures/vcr_cassettes/videos/paginate_previous.yml
395
432
  - spec/spec_helper.rb
433
+ - spec/support/files/drex.jpg
434
+ - spec/support/files/fr.vtt
396
435
  - spec/support/files/video-1.0MB.mp4
397
436
  - spec/support/files/video-12.0MB.mp4
398
437
  - spec/support/files/video-4.9MB.mp4
399
438
  - spec/support/files/video-5.0MB.mp4
400
439
  - spec/support/helpers.rb
440
+ - spec/support/shared_examples.rb
401
441
  - spec/vzaar_api/category_spec.rb
402
442
  - spec/vzaar_api/encoding_preset_spec.rb
403
443
  - spec/vzaar_api/ingest_recipe_spec.rb
@@ -407,6 +447,7 @@ test_files:
407
447
  - spec/vzaar_api/signature/factory_spec.rb
408
448
  - spec/vzaar_api/signature/multipart_spec.rb
409
449
  - spec/vzaar_api/signature/single_spec.rb
450
+ - spec/vzaar_api/subtitle_spec.rb
410
451
  - spec/vzaar_api/upload/s3_spec.rb
411
452
  - spec/vzaar_api/video_spec.rb
412
453
  - spec/vzaar_api/vzaar_api_spec.rb