yt 0.25.18 → 0.25.19
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +5 -0
- data/lib/yt/collections/group_items.rb +44 -0
- data/lib/yt/models/group_item.rb +15 -0
- data/lib/yt/models/video_group.rb +6 -0
- data/lib/yt/version.rb +1 -1
- data/spec/requests/as_content_owner/video_group_spec.rb +13 -0
- metadata +4 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 027f85007663e5e62a0cfae07c66e09078ce0391
|
|
4
|
+
data.tar.gz: e1d99207ce02b83a05d60e3fe83d181cf2d20fbd
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: b2acbbbaf56554ff7e5b6334faefcd0f486513c1423c0ec30e77cd71f6172b1d3222144384f48396f2adcf985ca83a265f77d5cc60ef5ee36030f69d572b914a
|
|
7
|
+
data.tar.gz: 63960c6908b3ffe0d3ffc433734c68e8b94e13ee8f7bbdb1aab112b59cfbcbe578fd87646b24e1b16b8bd17817ba3f50fa036944bfd0c7f76b8f0a0c0d7df910
|
data/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,11 @@ For more information about changelogs, check
|
|
|
6
6
|
[Keep a Changelog](http://keepachangelog.com) and
|
|
7
7
|
[Vandamme](http://tech-angels.github.io/vandamme).
|
|
8
8
|
|
|
9
|
+
## 0.25.19 - 2016-01-15
|
|
10
|
+
|
|
11
|
+
* [FEATURE] Add `:group_items` to Yt::VideoGroup (list items of a group)
|
|
12
|
+
* [FEATURE] Add `:includes(:video)` to `Yt::VideoGroup#group_items` (eagerly loads all the videos)
|
|
13
|
+
|
|
9
14
|
## 0.25.18 - 2016-01-08
|
|
10
15
|
|
|
11
16
|
* [FEATURE] Add Yt::COUNTRIES and Yt::US_STATES
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
require 'yt/collections/base'
|
|
2
|
+
require 'yt/models/group_item'
|
|
3
|
+
|
|
4
|
+
module Yt
|
|
5
|
+
module Collections
|
|
6
|
+
# @private
|
|
7
|
+
class GroupItems < Base
|
|
8
|
+
|
|
9
|
+
private
|
|
10
|
+
|
|
11
|
+
def attributes_for_new_item(data)
|
|
12
|
+
super(data).tap do |attributes|
|
|
13
|
+
attributes[:video] = data['video']
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def list_params
|
|
18
|
+
super.tap do |params|
|
|
19
|
+
params[:path] = "/youtube/analytics/v1/groupItems"
|
|
20
|
+
params[:params] = {group_id: @parent.id}
|
|
21
|
+
if @auth.owner_name
|
|
22
|
+
params[:params][:on_behalf_of_content_owner] = @auth.owner_name
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def eager_load_items_from(items)
|
|
28
|
+
if included_relationships.include?(:video)
|
|
29
|
+
all_video_ids = items.map{|item| item['resource']['id']}.uniq
|
|
30
|
+
all_video_ids.each_slice(50) do |video_ids|
|
|
31
|
+
conditions = {id: video_ids.join(',')}
|
|
32
|
+
conditions[:part] = 'snippet,status,statistics,contentDetails'
|
|
33
|
+
videos = Collections::Videos.new(auth: @auth).where conditions
|
|
34
|
+
items.each do |item|
|
|
35
|
+
video = videos.find{|v| v.id == item['resource']['id']}
|
|
36
|
+
item['video'] = video if video
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
super
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
require 'yt/models/video'
|
|
2
|
+
|
|
3
|
+
module Yt
|
|
4
|
+
module Models
|
|
5
|
+
class GroupItem < Base
|
|
6
|
+
attr_reader :auth, :data, :video
|
|
7
|
+
|
|
8
|
+
def initialize(options = {})
|
|
9
|
+
@data = options[:data]
|
|
10
|
+
@auth = options[:auth]
|
|
11
|
+
@video = options[:video] if options[:video]
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -24,6 +24,12 @@ module Yt
|
|
|
24
24
|
# @return [Time] the date and time when the group was created.
|
|
25
25
|
delegate :published_at, to: :group_info
|
|
26
26
|
|
|
27
|
+
### ASSOCIATIONS ###
|
|
28
|
+
|
|
29
|
+
# @!attribute [r] group_items
|
|
30
|
+
# @return [Yt::Collections::GroupItems] the group’s items.
|
|
31
|
+
has_many :group_items
|
|
32
|
+
|
|
27
33
|
### ANALYTICS ###
|
|
28
34
|
|
|
29
35
|
# @macro reports
|
data/lib/yt/version.rb
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
require 'spec_helper'
|
|
2
2
|
require 'yt/models/video_group'
|
|
3
|
+
require 'yt/models/group_item'
|
|
3
4
|
|
|
4
5
|
describe Yt::VideoGroup, :partner do
|
|
5
6
|
subject(:video_group) { Yt::VideoGroup.new id: id, auth: $content_owner }
|
|
@@ -18,6 +19,18 @@ describe Yt::VideoGroup, :partner do
|
|
|
18
19
|
expect(video_group.item_count).not_to be_zero
|
|
19
20
|
end
|
|
20
21
|
|
|
22
|
+
specify '.group_items retrieves the group items' do
|
|
23
|
+
expect(video_group.group_items.count).to be_an(Integer)
|
|
24
|
+
expect(video_group.group_items.map{|g| g}).to all(be_a Yt::GroupItem)
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
specify '.group_items.includes(:video) eager-loads each video' do
|
|
28
|
+
item = video_group.group_items.includes(:video).first
|
|
29
|
+
expect(item.video.instance_variable_defined? :@snippet).to be true
|
|
30
|
+
expect(item.video.instance_variable_defined? :@status).to be true
|
|
31
|
+
expect(item.video.instance_variable_defined? :@statistics_set).to be true
|
|
32
|
+
end
|
|
33
|
+
|
|
21
34
|
describe 'multiple reports can be retrieved at once' do
|
|
22
35
|
metrics = {views: Integer, uniques: Integer,
|
|
23
36
|
estimated_minutes_watched: Integer, comments: Integer, likes: Integer,
|
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.
|
|
4
|
+
version: 0.25.19
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Claudio Baccigalupo
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2016-01-
|
|
11
|
+
date: 2016-01-15 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: activesupport
|
|
@@ -143,6 +143,7 @@ files:
|
|
|
143
143
|
- lib/yt/collections/device_flows.rb
|
|
144
144
|
- lib/yt/collections/file_details.rb
|
|
145
145
|
- lib/yt/collections/group_infos.rb
|
|
146
|
+
- lib/yt/collections/group_items.rb
|
|
146
147
|
- lib/yt/collections/ids.rb
|
|
147
148
|
- lib/yt/collections/live_streaming_details.rb
|
|
148
149
|
- lib/yt/collections/ownerships.rb
|
|
@@ -196,6 +197,7 @@ files:
|
|
|
196
197
|
- lib/yt/models/device_flow.rb
|
|
197
198
|
- lib/yt/models/file_detail.rb
|
|
198
199
|
- lib/yt/models/group_info.rb
|
|
200
|
+
- lib/yt/models/group_item.rb
|
|
199
201
|
- lib/yt/models/id.rb
|
|
200
202
|
- lib/yt/models/iterator.rb
|
|
201
203
|
- lib/yt/models/live_streaming_detail.rb
|