yt 0.25.13 → 0.32.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (96) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +305 -1
  3. data/MIT-LICENSE +1 -1
  4. data/README.md +86 -5
  5. data/YOUTUBE_IT.md +3 -3
  6. data/lib/yt.rb +5 -2
  7. data/lib/yt/actions/list.rb +3 -3
  8. data/lib/yt/associations/has_authentication.rb +33 -1
  9. data/lib/yt/associations/has_reports.rb +13 -18
  10. data/lib/yt/collections/assets.rb +2 -2
  11. data/lib/yt/collections/authentications.rb +9 -2
  12. data/lib/yt/collections/base.rb +3 -3
  13. data/lib/yt/collections/bulk_report_jobs.rb +28 -0
  14. data/lib/yt/collections/bulk_reports.rb +24 -0
  15. data/lib/yt/collections/claims.rb +22 -1
  16. data/lib/yt/collections/comment_threads.rb +41 -0
  17. data/lib/yt/collections/content_owners.rb +1 -1
  18. data/lib/yt/collections/group_infos.rb +27 -0
  19. data/lib/yt/collections/group_items.rb +45 -0
  20. data/lib/yt/collections/reports.rb +75 -13
  21. data/lib/yt/collections/revocations.rb +30 -0
  22. data/lib/yt/collections/video_groups.rb +29 -0
  23. data/lib/yt/collections/videos.rb +34 -9
  24. data/lib/yt/constants/geography.rb +326 -0
  25. data/lib/yt/errors/forbidden.rb +1 -3
  26. data/lib/yt/errors/no_items.rb +1 -3
  27. data/lib/yt/errors/request_error.rb +10 -7
  28. data/lib/yt/errors/server_error.rb +1 -3
  29. data/lib/yt/errors/unauthorized.rb +3 -3
  30. data/lib/yt/models/account.rb +12 -0
  31. data/lib/yt/models/advertising_options_set.rb +4 -4
  32. data/lib/yt/models/bulk_report.rb +23 -0
  33. data/lib/yt/models/bulk_report_job.rb +23 -0
  34. data/lib/yt/models/channel.rb +21 -12
  35. data/lib/yt/models/claim.rb +13 -2
  36. data/lib/yt/models/comment.rb +37 -0
  37. data/lib/yt/models/comment_thread.rb +50 -0
  38. data/lib/yt/models/content_detail.rb +6 -0
  39. data/lib/yt/models/content_owner.rb +31 -1
  40. data/lib/yt/models/group_info.rb +16 -0
  41. data/lib/yt/models/group_item.rb +15 -0
  42. data/lib/yt/models/resource.rb +3 -10
  43. data/lib/yt/models/revocation.rb +12 -0
  44. data/lib/yt/models/right_owner.rb +0 -2
  45. data/lib/yt/models/snippet.rb +24 -3
  46. data/lib/yt/models/video.rb +42 -11
  47. data/lib/yt/models/video_group.rb +186 -0
  48. data/lib/yt/request.rb +5 -3
  49. data/lib/yt/version.rb +2 -2
  50. data/spec/collections/comment_threads_spec.rb +46 -0
  51. data/spec/collections/playlist_items_spec.rb +1 -1
  52. data/spec/collections/reports_spec.rb +2 -2
  53. data/spec/constants/geography_spec.rb +16 -0
  54. data/spec/models/annotation_spec.rb +1 -1
  55. data/spec/models/claim_spec.rb +15 -3
  56. data/spec/models/comment_spec.rb +40 -0
  57. data/spec/models/comment_thread_spec.rb +93 -0
  58. data/spec/models/content_detail_spec.rb +7 -0
  59. data/spec/models/reference_spec.rb +2 -2
  60. data/spec/models/request_spec.rb +21 -0
  61. data/spec/models/resource_spec.rb +0 -15
  62. data/spec/models/video_spec.rb +1 -1
  63. data/spec/requests/as_account/account_spec.rb +16 -4
  64. data/spec/requests/as_account/authentications_spec.rb +1 -13
  65. data/spec/requests/as_account/channel_spec.rb +15 -45
  66. data/spec/requests/as_account/playlist_item_spec.rb +3 -3
  67. data/spec/requests/as_account/playlist_spec.rb +5 -32
  68. data/spec/requests/as_account/video_spec.rb +2022 -21
  69. data/spec/requests/as_content_owner/account_spec.rb +4 -0
  70. data/spec/requests/as_content_owner/bulk_report_job_spec.rb +19 -0
  71. data/spec/requests/as_content_owner/channel_spec.rb +59 -270
  72. data/spec/requests/as_content_owner/content_owner_spec.rb +89 -1
  73. data/spec/requests/as_content_owner/playlist_spec.rb +0 -15
  74. data/spec/requests/as_content_owner/video_group_spec.rb +112 -0
  75. data/spec/requests/as_content_owner/video_spec.rb +72 -146
  76. data/spec/requests/as_server_app/channel_spec.rb +1 -21
  77. data/spec/requests/as_server_app/comment_spec.rb +22 -0
  78. data/spec/requests/as_server_app/comment_thread_spec.rb +27 -0
  79. data/spec/requests/as_server_app/comment_threads_spec.rb +41 -0
  80. data/spec/requests/as_server_app/playlist_item_spec.rb +2 -2
  81. data/spec/requests/as_server_app/playlist_spec.rb +1 -22
  82. data/spec/requests/as_server_app/video_spec.rb +21 -19
  83. data/spec/requests/as_server_app/videos_spec.rb +5 -5
  84. data/spec/requests/unauthenticated/video_spec.rb +1 -9
  85. data/spec/spec_helper.rb +1 -1
  86. data/yt.gemspec +2 -1
  87. metadata +51 -17
  88. data/lib/yt/collections/ids.rb +0 -27
  89. data/lib/yt/config.rb +0 -54
  90. data/lib/yt/models/configuration.rb +0 -70
  91. data/lib/yt/models/description.rb +0 -58
  92. data/lib/yt/models/url.rb +0 -91
  93. data/spec/models/configuration_spec.rb +0 -44
  94. data/spec/models/description_spec.rb +0 -94
  95. data/spec/models/url_spec.rb +0 -84
  96. data/spec/requests/as_account/resource_spec.rb +0 -18
@@ -10,7 +10,7 @@ describe Yt::Channel, :server_app do
10
10
  it 'returns valid snippet data' do
11
11
  expect(channel.snippet).to be_a Yt::Snippet
12
12
  expect(channel.title).to be_a String
13
- expect(channel.description).to be_a Yt::Description
13
+ expect(channel.description).to be_a String
14
14
  expect(channel.thumbnail_url).to be_a String
15
15
  expect(channel.published_at).to be_a Time
16
16
  end
@@ -34,16 +34,6 @@ describe Yt::Channel, :server_app do
34
34
  end
35
35
  end
36
36
 
37
- context 'given an existing channel URL' do
38
- let(:attrs) { {url: 'youtube.com/fullscreen'} }
39
-
40
- specify 'provides access to its data' do
41
- expect(channel.id).to eq 'UCxO1tY8h1AhOz0T4ENwmpow'
42
- expect(channel.title).to eq 'Fullscreen'
43
- expect(channel.privacy_status).to eq 'public'
44
- end
45
- end
46
-
47
37
  context 'given an unknown channel ID' do
48
38
  let(:attrs) { {id: 'not-a-channel-id'} }
49
39
 
@@ -61,14 +51,4 @@ describe Yt::Channel, :server_app do
61
51
  it { expect(channel.videos.size).to be_zero }
62
52
  end
63
53
  end
64
-
65
- context 'given an unknown channel URL' do
66
- let(:attrs) { {url: 'youtube.com/--not-a-valid-url--'} }
67
-
68
- specify 'accessing its data raises an error' do
69
- expect{channel.id}.to raise_error Yt::Errors::NoItems
70
- expect{channel.title}.to raise_error Yt::Errors::NoItems
71
- expect{channel.status}.to raise_error Yt::Errors::NoItems
72
- end
73
- end
74
54
  end
@@ -0,0 +1,22 @@
1
+ require 'spec_helper'
2
+ require 'yt/models/comment'
3
+
4
+ describe Yt::Comment, :server_app do
5
+ subject(:comment) { Yt::Comment.new attrs }
6
+
7
+ context 'given an existing comment (non-reply) ID' do
8
+ let(:attrs) { {id: 'z13kc1bxpp22hzaxr04cd1kreurbjja41q00k'} }
9
+
10
+ it { expect(comment.parent_id).to be_nil }
11
+ it { expect(comment.text_display).to be_a String }
12
+ it { expect(comment.author_display_name).to be_a String }
13
+ it { expect(comment.like_count).to be_a Integer }
14
+ it { expect(comment.updated_at).to be_a Time }
15
+ end
16
+
17
+ context 'given an existing comment (reply) ID' do
18
+ let(:attrs) { {id: 'z13kc1bxpp22hzaxr04cd1kreurbjja41q00k.1458679991141996'} }
19
+
20
+ it { expect(comment.parent_id).to be_a String }
21
+ end
22
+ end
@@ -0,0 +1,27 @@
1
+ require 'spec_helper'
2
+ require 'yt/models/comment_thread'
3
+ require 'yt/models/comment'
4
+
5
+ describe Yt::CommentThread, :server_app do
6
+ subject(:comment_thread) { Yt::CommentThread.new attrs }
7
+
8
+ context 'given an existing comment thread ID about a channel' do
9
+ let(:attrs) { {id: 'z13kdnf4pursxnwr404cc3oz4zb0hjwirkg0k'} }
10
+
11
+ it { expect(comment_thread.video_id).to be_nil }
12
+ it { expect(comment_thread.total_reply_count).to be_an Integer }
13
+ it { expect(comment_thread.can_reply?).to be false }
14
+ it { expect(comment_thread).to be_public }
15
+
16
+ it { expect(comment_thread.top_level_comment).to be_a Yt::Comment }
17
+ it { expect(comment_thread.text_display).not_to be_empty }
18
+ it { expect(comment_thread.author_display_name).not_to be_empty }
19
+ it { expect(comment_thread.updated_at).to be_a Time }
20
+ it { expect(comment_thread.like_count).to be_a Integer }
21
+ end
22
+
23
+ context 'given an comment thread ID about a video' do
24
+ let(:attrs) { {id: 'z134e1gyav3qt3nnr22phjeavv2zdfef0'} }
25
+ it { expect(comment_thread.video_id).to be_a String }
26
+ end
27
+ end
@@ -0,0 +1,41 @@
1
+ # encoding: UTF-8
2
+ require 'spec_helper'
3
+ require 'yt/collections/comment_threads'
4
+ require 'yt/models/video'
5
+ require 'yt/models/channel'
6
+
7
+ describe Yt::Collections::CommentThreads, :server_app do
8
+ context "without parent association", :ruby2 do
9
+ subject(:comment_threads) { Yt::Collections::CommentThreads.new }
10
+
11
+ specify 'without given any of id, videoId, channelId or allThreadsRelatedToChannelId param, raise request error', :ruby2 do
12
+ expect{ comment_threads.size }.to raise_error(Yt::Errors::RequestError)
13
+ end
14
+
15
+ specify 'with a id param, only return one comment thread' do
16
+ expect(comment_threads.where(id: 'z13zytsilxbexh30e233gdyyttngfjfz104').size).to eq 1
17
+ end
18
+
19
+ specify 'with a videoId param, returns comment threads for the video', focus: true do
20
+ expect(comment_threads.where(videoId: 'MsplPPW7tFo').size).to be > 0
21
+ end
22
+
23
+ specify 'with a channelId param, returns comment threads for the channel' do
24
+ expect(comment_threads.where(channelId: 'UC-lHJZR3Gqxm24_Vd_AJ5Yw').size).to be > 0
25
+ end
26
+ end
27
+
28
+ context "with parent association", :ruby2 do
29
+ subject(:comment_threads) { Yt::Collections::CommentThreads.new parent: parent}
30
+
31
+ context "parent as video" do
32
+ let(:parent) { Yt::Models::Video.new id: 'MsplPPW7tFo' }
33
+ it { expect(comment_threads.size).to be > 0 }
34
+ end
35
+
36
+ context "parent as channel" do
37
+ let(:parent) { Yt::Models::Channel.new id: 'UC-lHJZR3Gqxm24_Vd_AJ5Yw' }
38
+ it { expect(comment_threads.size).to be > 0 }
39
+ end
40
+ end
41
+ end
@@ -5,12 +5,12 @@ describe Yt::PlaylistItem, :server_app do
5
5
  subject(:item) { Yt::PlaylistItem.new id: id }
6
6
 
7
7
  context 'given an existing playlist item' do
8
- let(:id) { 'PLjW_GNR5Ir0GMlbJzA-aW0UV8TchJFb8p3uzrLNcZKPY' }
8
+ let(:id) { 'UExTV1lrWXpPclBNVDlwSkc1U3Q1RzBXRGFsaFJ6R2tVNC4yQUE2Q0JEMTk4NTM3RTZC' }
9
9
 
10
10
  it 'returns valid snippet data' do
11
11
  expect(item.snippet).to be_a Yt::Snippet
12
12
  expect(item.title).to be_a String
13
- expect(item.description).to be_a Yt::Description
13
+ expect(item.description).to be_a String
14
14
  expect(item.thumbnail_url).to be_a String
15
15
  expect(item.published_at).to be_a Time
16
16
  expect(item.channel_id).to be_a String
@@ -10,7 +10,7 @@ describe Yt::Playlist, :server_app do
10
10
  it 'returns valid snippet data' do
11
11
  expect(playlist.snippet).to be_a Yt::Snippet
12
12
  expect(playlist.title).to be_a String
13
- expect(playlist.description).to be_a Yt::Description
13
+ expect(playlist.description).to be_a String
14
14
  expect(playlist.thumbnail_url).to be_a String
15
15
  expect(playlist.published_at).to be_a Time
16
16
  expect(playlist.tags).to be_an Array
@@ -24,31 +24,10 @@ describe Yt::Playlist, :server_app do
24
24
  it { expect(playlist.playlist_items.first).to be_a Yt::PlaylistItem }
25
25
  end
26
26
 
27
- context 'given an existing playlist URL' do
28
- let(:attrs) { {url: 'https://www.youtube.com/playlist?list=LLxO1tY8h1AhOz0T4ENwmpow'} }
29
-
30
- specify 'provides access to its data' do
31
- expect(playlist.id).to eq 'LLxO1tY8h1AhOz0T4ENwmpow'
32
- expect(playlist.title).to eq 'Liked videos'
33
- expect(playlist.privacy_status).to eq 'public'
34
- end
35
- end
36
-
37
27
  context 'given an unknown playlist' do
38
28
  let(:attrs) { {id: 'not-a-playlist-id'} }
39
29
 
40
30
  it { expect{playlist.snippet}.to raise_error Yt::Errors::NoItems }
41
31
  it { expect{playlist.status}.to raise_error Yt::Errors::NoItems }
42
32
  end
43
-
44
-
45
- context 'given an unknown playlist URL' do
46
- let(:attrs) { {url: 'youtube.com/--not-a-valid-url--'} }
47
-
48
- specify 'accessing its data raises an error' do
49
- expect{playlist.id}.to raise_error Yt::Errors::NoItems
50
- expect{playlist.title}.to raise_error Yt::Errors::NoItems
51
- expect{playlist.status}.to raise_error Yt::Errors::NoItems
52
- end
53
- end
54
33
  end
@@ -1,23 +1,25 @@
1
1
  require 'spec_helper'
2
2
  require 'yt/models/video'
3
+ require 'yt/collections/comment_threads'
3
4
 
4
5
  describe Yt::Video, :server_app do
5
6
  subject(:video) { Yt::Video.new attrs }
6
7
 
7
8
  context 'given an existing video ID' do
8
- let(:attrs) { {id: 'MESycYJytkU'} }
9
+ let(:attrs) { {id: '9bZkp7q19f0'} }
9
10
 
10
11
  it { expect(video.content_detail).to be_a Yt::ContentDetail }
11
12
 
12
13
  it 'returns valid snippet data' do
13
14
  expect(video.snippet).to be_a Yt::Snippet
14
15
  expect(video.title).to be_a String
15
- expect(video.description).to be_a Yt::Description
16
+ expect(video.description).to be_a String
16
17
  expect(video.thumbnail_url).to be_a String
17
18
  expect(video.published_at).to be_a Time
18
19
  expect(video.tags).to be_an Array
19
20
  expect(video.channel_id).to be_a String
20
21
  expect(video.channel_title).to be_a String
22
+ expect(video.channel_url).to be_a String
21
23
  expect(video.category_id).to be_a String
22
24
  expect(video.live_broadcast_content).to be_a String
23
25
  end
@@ -26,16 +28,6 @@ describe Yt::Video, :server_app do
26
28
  it { expect(video.statistics_set).to be_a Yt::StatisticsSet }
27
29
  end
28
30
 
29
- context 'given an existing video URL' do
30
- let(:attrs) { {url: 'https://www.youtube.com/watch?v=MESycYJytkU&list=LLxO1tY8h1AhOz0T4ENwmpow'} }
31
-
32
- specify 'provides access to its data' do
33
- expect(video.id).to eq 'MESycYJytkU'
34
- expect(video.title).to eq 'Fullscreen Creator Platform'
35
- expect(video.privacy_status).to eq 'public'
36
- end
37
- end
38
-
39
31
  context 'given an unknown video ID' do
40
32
  let(:attrs) { {id: 'not-a-video-id'} }
41
33
 
@@ -45,14 +37,24 @@ describe Yt::Video, :server_app do
45
37
  it { expect{video.statistics_set}.to raise_error Yt::Errors::NoItems }
46
38
  end
47
39
 
48
- context 'given an unknown video URL' do
49
- let(:attrs) { {url: 'youtube.com/--not-a-valid-url--'} }
40
+ describe 'associations' do
41
+ let(:attrs) { {id: 'MsplPPW7tFo'} }
42
+
43
+ describe '#comment_threads' do
44
+ it { expect(video.comment_threads).to be_a Yt::Collections::CommentThreads }
45
+ it { expect(video.comment_threads.first.top_level_comment).to be_a Yt::Models::Comment }
46
+ end
50
47
 
51
- specify 'accessing its data raises an error' do
52
- expect{video.id}.to raise_error Yt::Errors::NoItems
53
- expect{video.title}.to raise_error Yt::Errors::NoItems
54
- expect{video.status}.to raise_error Yt::Errors::NoItems
48
+ describe '#comment_threads.each_cons' do
49
+ it {
50
+ comment_threads = []
51
+ video.comment_threads.each_cons(2).take_while do |items|
52
+ comment_threads += items
53
+ comment_threads.size < 6
54
+ end
55
+ expect(comment_threads.size).to be 6
56
+ }
55
57
  end
56
58
  end
59
+ end
57
60
 
58
- end
@@ -14,7 +14,7 @@ describe Yt::Collections::Videos, :server_app do
14
14
  end
15
15
 
16
16
  context 'with a list of video IDs, only returns the videos matching those IDs' do
17
- let(:video_id) { 'MESycYJytkU' }
17
+ let(:video_id) { '9bZkp7q19f0' }
18
18
  let(:videos_by_id) { videos.where id: "#{video_id},invalid" }
19
19
 
20
20
  it { expect(videos_by_id.size).to be 1 }
@@ -22,13 +22,13 @@ describe Yt::Collections::Videos, :server_app do
22
22
  end
23
23
 
24
24
  specify 'with a chart parameter, only returns videos of that chart', :ruby2 do
25
- expect(videos.where(chart: 'mostPopular').size).to be 30
25
+ expect(videos.where(chart: 'mostPopular').size).to be 200
26
26
  end
27
27
 
28
28
  context 'with a list of parts' do
29
- let(:video_id) { 'MESycYJytkU' }
29
+ let(:video_id) { '9bZkp7q19f0' }
30
30
  let(:part) { 'statistics,contentDetails' }
31
- let(:video) { videos.where(id: 'MESycYJytkU', part: part).first }
31
+ let(:video) { videos.where(id: '9bZkp7q19f0', part: part).first }
32
32
 
33
33
  specify 'load ONLY the specified parts of the videos' do
34
34
  expect(video.instance_variable_defined? :@snippet).to be false
@@ -37,4 +37,4 @@ describe Yt::Collections::Videos, :server_app do
37
37
  expect(video.instance_variable_defined? :@content_detail).to be true
38
38
  end
39
39
  end
40
- end
40
+ end
@@ -5,18 +5,10 @@ describe Yt::Video do
5
5
  subject(:video) { Yt::Video.new id: id }
6
6
 
7
7
  context 'given a public video with annotations' do
8
- let(:id) { 'MESycYJytkU' }
8
+ let(:id) { '9bZkp7q19f0' }
9
9
 
10
10
  it { expect(video.annotations).to be_a Yt::Collections::Annotations }
11
11
  it { expect(video.annotations.first).to be_a Yt::Annotation }
12
12
  it { expect(video.annotations.size).to be > 0 }
13
13
  end
14
-
15
- context 'given a private video' do
16
- let(:id) { 'JzDEc54FVTc' }
17
-
18
- it { expect(video.annotations).to be_a Yt::Collections::Annotations }
19
- it { expect(video.annotations.count).to be_zero }
20
- it { expect(video.annotations.size).to be_zero }
21
- end
22
14
  end
@@ -1,7 +1,7 @@
1
1
  require 'simplecov'
2
2
  require 'coveralls'
3
3
 
4
- SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
4
+ SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter.new [
5
5
  SimpleCov::Formatter::HTMLFormatter,
6
6
  Coveralls::SimpleCov::Formatter
7
7
  ]
data/yt.gemspec CHANGED
@@ -22,6 +22,7 @@ Gem::Specification.new do |spec|
22
22
  spec.require_paths = ["lib"]
23
23
 
24
24
  spec.add_dependency 'activesupport' # '3 (Ruby 1.9) or 4 (Ruby 2)'
25
+ spec.add_dependency 'yt-support', '>= 0.1'
25
26
 
26
27
  # For development / Code coverage / Documentation
27
28
  spec.add_development_dependency 'bundler' #, '~> 1.0'
@@ -29,4 +30,4 @@ Gem::Specification.new do |spec|
29
30
  spec.add_development_dependency 'rake' #, '~> 10.0'
30
31
  spec.add_development_dependency 'yard' #, '~> 0.8.0'
31
32
  spec.add_development_dependency 'coveralls' #, '~> 0.7.0'
32
- end
33
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: yt
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.25.13
4
+ version: 0.32.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Claudio Baccigalupo
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-12-05 00:00:00.000000000 Z
11
+ date: 2018-05-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: yt-support
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0.1'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0.1'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: bundler
29
43
  requirement: !ruby/object:Gem::Requirement
@@ -134,15 +148,19 @@ files:
134
148
  - lib/yt/collections/assets.rb
135
149
  - lib/yt/collections/authentications.rb
136
150
  - lib/yt/collections/base.rb
151
+ - lib/yt/collections/bulk_report_jobs.rb
152
+ - lib/yt/collections/bulk_reports.rb
137
153
  - lib/yt/collections/channels.rb
138
154
  - lib/yt/collections/claim_histories.rb
139
155
  - lib/yt/collections/claims.rb
156
+ - lib/yt/collections/comment_threads.rb
140
157
  - lib/yt/collections/content_details.rb
141
158
  - lib/yt/collections/content_owner_details.rb
142
159
  - lib/yt/collections/content_owners.rb
143
160
  - lib/yt/collections/device_flows.rb
144
161
  - lib/yt/collections/file_details.rb
145
- - lib/yt/collections/ids.rb
162
+ - lib/yt/collections/group_infos.rb
163
+ - lib/yt/collections/group_items.rb
146
164
  - lib/yt/collections/live_streaming_details.rb
147
165
  - lib/yt/collections/ownerships.rb
148
166
  - lib/yt/collections/partnered_channels.rb
@@ -156,6 +174,7 @@ files:
156
174
  - lib/yt/collections/reports.rb
157
175
  - lib/yt/collections/resources.rb
158
176
  - lib/yt/collections/resumable_sessions.rb
177
+ - lib/yt/collections/revocations.rb
159
178
  - lib/yt/collections/snippets.rb
160
179
  - lib/yt/collections/statistics_sets.rb
161
180
  - lib/yt/collections/statuses.rb
@@ -164,8 +183,9 @@ files:
164
183
  - lib/yt/collections/subscriptions.rb
165
184
  - lib/yt/collections/user_infos.rb
166
185
  - lib/yt/collections/video_categories.rb
186
+ - lib/yt/collections/video_groups.rb
167
187
  - lib/yt/collections/videos.rb
168
- - lib/yt/config.rb
188
+ - lib/yt/constants/geography.rb
169
189
  - lib/yt/errors/forbidden.rb
170
190
  - lib/yt/errors/missing_auth.rb
171
191
  - lib/yt/errors/no_items.rb
@@ -180,17 +200,21 @@ files:
180
200
  - lib/yt/models/asset_snippet.rb
181
201
  - lib/yt/models/authentication.rb
182
202
  - lib/yt/models/base.rb
203
+ - lib/yt/models/bulk_report.rb
204
+ - lib/yt/models/bulk_report_job.rb
183
205
  - lib/yt/models/channel.rb
184
206
  - lib/yt/models/claim.rb
185
207
  - lib/yt/models/claim_event.rb
186
208
  - lib/yt/models/claim_history.rb
187
- - lib/yt/models/configuration.rb
209
+ - lib/yt/models/comment.rb
210
+ - lib/yt/models/comment_thread.rb
188
211
  - lib/yt/models/content_detail.rb
189
212
  - lib/yt/models/content_owner.rb
190
213
  - lib/yt/models/content_owner_detail.rb
191
- - lib/yt/models/description.rb
192
214
  - lib/yt/models/device_flow.rb
193
215
  - lib/yt/models/file_detail.rb
216
+ - lib/yt/models/group_info.rb
217
+ - lib/yt/models/group_item.rb
194
218
  - lib/yt/models/id.rb
195
219
  - lib/yt/models/iterator.rb
196
220
  - lib/yt/models/live_streaming_detail.rb
@@ -205,19 +229,21 @@ files:
205
229
  - lib/yt/models/reference.rb
206
230
  - lib/yt/models/resource.rb
207
231
  - lib/yt/models/resumable_session.rb
232
+ - lib/yt/models/revocation.rb
208
233
  - lib/yt/models/right_owner.rb
209
234
  - lib/yt/models/snippet.rb
210
235
  - lib/yt/models/statistics_set.rb
211
236
  - lib/yt/models/status.rb
212
237
  - lib/yt/models/subscription.rb
213
238
  - lib/yt/models/timestamp.rb
214
- - lib/yt/models/url.rb
215
239
  - lib/yt/models/user_info.rb
216
240
  - lib/yt/models/video.rb
217
241
  - lib/yt/models/video_category.rb
242
+ - lib/yt/models/video_group.rb
218
243
  - lib/yt/request.rb
219
244
  - lib/yt/version.rb
220
245
  - spec/collections/claims_spec.rb
246
+ - spec/collections/comment_threads_spec.rb
221
247
  - spec/collections/playlist_items_spec.rb
222
248
  - spec/collections/playlists_spec.rb
223
249
  - spec/collections/policies_spec.rb
@@ -225,6 +251,7 @@ files:
225
251
  - spec/collections/reports_spec.rb
226
252
  - spec/collections/subscriptions_spec.rb
227
253
  - spec/collections/videos_spec.rb
254
+ - spec/constants/geography_spec.rb
228
255
  - spec/errors/forbidden_spec.rb
229
256
  - spec/errors/missing_auth_spec.rb
230
257
  - spec/errors/no_items_spec.rb
@@ -238,10 +265,10 @@ files:
238
265
  - spec/models/claim_event_spec.rb
239
266
  - spec/models/claim_history_spec.rb
240
267
  - spec/models/claim_spec.rb
241
- - spec/models/configuration_spec.rb
268
+ - spec/models/comment_spec.rb
269
+ - spec/models/comment_thread_spec.rb
242
270
  - spec/models/content_detail_spec.rb
243
271
  - spec/models/content_owner_detail_spec.rb
244
- - spec/models/description_spec.rb
245
272
  - spec/models/file_detail_spec.rb
246
273
  - spec/models/live_streaming_detail_spec.rb
247
274
  - spec/models/ownership_spec.rb
@@ -259,7 +286,6 @@ files:
259
286
  - spec/models/statistics_set_spec.rb
260
287
  - spec/models/status_spec.rb
261
288
  - spec/models/subscription_spec.rb
262
- - spec/models/url_spec.rb
263
289
  - spec/models/video_category_spec.rb
264
290
  - spec/models/video_spec.rb
265
291
  - spec/requests/as_account/account_spec.rb
@@ -268,21 +294,25 @@ files:
268
294
  - spec/requests/as_account/channels_spec.rb
269
295
  - spec/requests/as_account/playlist_item_spec.rb
270
296
  - spec/requests/as_account/playlist_spec.rb
271
- - spec/requests/as_account/resource_spec.rb
272
297
  - spec/requests/as_account/thumbnail.jpg
273
298
  - spec/requests/as_account/video.mp4
274
299
  - spec/requests/as_account/video_spec.rb
275
300
  - spec/requests/as_content_owner/account_spec.rb
276
301
  - spec/requests/as_content_owner/advertising_options_set_spec.rb
277
302
  - spec/requests/as_content_owner/asset_spec.rb
303
+ - spec/requests/as_content_owner/bulk_report_job_spec.rb
278
304
  - spec/requests/as_content_owner/channel_spec.rb
279
305
  - spec/requests/as_content_owner/claim_history_spec.rb
280
306
  - spec/requests/as_content_owner/content_owner_spec.rb
281
307
  - spec/requests/as_content_owner/match_policy_spec.rb
282
308
  - spec/requests/as_content_owner/ownership_spec.rb
283
309
  - spec/requests/as_content_owner/playlist_spec.rb
310
+ - spec/requests/as_content_owner/video_group_spec.rb
284
311
  - spec/requests/as_content_owner/video_spec.rb
285
312
  - spec/requests/as_server_app/channel_spec.rb
313
+ - spec/requests/as_server_app/comment_spec.rb
314
+ - spec/requests/as_server_app/comment_thread_spec.rb
315
+ - spec/requests/as_server_app/comment_threads_spec.rb
286
316
  - spec/requests/as_server_app/playlist_item_spec.rb
287
317
  - spec/requests/as_server_app/playlist_spec.rb
288
318
  - spec/requests/as_server_app/video_spec.rb
@@ -312,13 +342,14 @@ required_rubygems_version: !ruby/object:Gem::Requirement
312
342
  version: '0'
313
343
  requirements: []
314
344
  rubyforge_project:
315
- rubygems_version: 2.5.0
345
+ rubygems_version: 2.7.6
316
346
  signing_key:
317
347
  specification_version: 4
318
348
  summary: Yt makes it easy to interact with Youtube V3 API by providing a modular,
319
349
  intuitive and tested Ruby-style API.
320
350
  test_files:
321
351
  - spec/collections/claims_spec.rb
352
+ - spec/collections/comment_threads_spec.rb
322
353
  - spec/collections/playlist_items_spec.rb
323
354
  - spec/collections/playlists_spec.rb
324
355
  - spec/collections/policies_spec.rb
@@ -326,6 +357,7 @@ test_files:
326
357
  - spec/collections/reports_spec.rb
327
358
  - spec/collections/subscriptions_spec.rb
328
359
  - spec/collections/videos_spec.rb
360
+ - spec/constants/geography_spec.rb
329
361
  - spec/errors/forbidden_spec.rb
330
362
  - spec/errors/missing_auth_spec.rb
331
363
  - spec/errors/no_items_spec.rb
@@ -339,10 +371,10 @@ test_files:
339
371
  - spec/models/claim_event_spec.rb
340
372
  - spec/models/claim_history_spec.rb
341
373
  - spec/models/claim_spec.rb
342
- - spec/models/configuration_spec.rb
374
+ - spec/models/comment_spec.rb
375
+ - spec/models/comment_thread_spec.rb
343
376
  - spec/models/content_detail_spec.rb
344
377
  - spec/models/content_owner_detail_spec.rb
345
- - spec/models/description_spec.rb
346
378
  - spec/models/file_detail_spec.rb
347
379
  - spec/models/live_streaming_detail_spec.rb
348
380
  - spec/models/ownership_spec.rb
@@ -360,7 +392,6 @@ test_files:
360
392
  - spec/models/statistics_set_spec.rb
361
393
  - spec/models/status_spec.rb
362
394
  - spec/models/subscription_spec.rb
363
- - spec/models/url_spec.rb
364
395
  - spec/models/video_category_spec.rb
365
396
  - spec/models/video_spec.rb
366
397
  - spec/requests/as_account/account_spec.rb
@@ -369,21 +400,25 @@ test_files:
369
400
  - spec/requests/as_account/channels_spec.rb
370
401
  - spec/requests/as_account/playlist_item_spec.rb
371
402
  - spec/requests/as_account/playlist_spec.rb
372
- - spec/requests/as_account/resource_spec.rb
373
403
  - spec/requests/as_account/thumbnail.jpg
374
404
  - spec/requests/as_account/video.mp4
375
405
  - spec/requests/as_account/video_spec.rb
376
406
  - spec/requests/as_content_owner/account_spec.rb
377
407
  - spec/requests/as_content_owner/advertising_options_set_spec.rb
378
408
  - spec/requests/as_content_owner/asset_spec.rb
409
+ - spec/requests/as_content_owner/bulk_report_job_spec.rb
379
410
  - spec/requests/as_content_owner/channel_spec.rb
380
411
  - spec/requests/as_content_owner/claim_history_spec.rb
381
412
  - spec/requests/as_content_owner/content_owner_spec.rb
382
413
  - spec/requests/as_content_owner/match_policy_spec.rb
383
414
  - spec/requests/as_content_owner/ownership_spec.rb
384
415
  - spec/requests/as_content_owner/playlist_spec.rb
416
+ - spec/requests/as_content_owner/video_group_spec.rb
385
417
  - spec/requests/as_content_owner/video_spec.rb
386
418
  - spec/requests/as_server_app/channel_spec.rb
419
+ - spec/requests/as_server_app/comment_spec.rb
420
+ - spec/requests/as_server_app/comment_thread_spec.rb
421
+ - spec/requests/as_server_app/comment_threads_spec.rb
387
422
  - spec/requests/as_server_app/playlist_item_spec.rb
388
423
  - spec/requests/as_server_app/playlist_spec.rb
389
424
  - spec/requests/as_server_app/video_spec.rb
@@ -392,4 +427,3 @@ test_files:
392
427
  - spec/spec_helper.rb
393
428
  - spec/support/fail_matcher.rb
394
429
  - spec/support/global_hooks.rb
395
- has_rdoc: