yt 0.25.13 → 0.32.2

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 (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: