yt 0.12.1 → 0.12.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 18325dbb4948849865dc28fd397fd535897a01f4
4
- data.tar.gz: 0e0403cf3d7642de760f34829d3df30c62ee59b1
3
+ metadata.gz: 9333b4d750412a49e64f7f9cb9630b427aa7c2e3
4
+ data.tar.gz: 2138e4b1baa893c8655df621e75b6137132385e1
5
5
  SHA512:
6
- metadata.gz: 4a0a8c815b079f11114666c2fa319778fc79dc2809e8948fbe88fc486d1c99d83ce0c57f461880c5017c46ddc7814cc205836dd57667bc8b916919ae196324d1
7
- data.tar.gz: 0ddc2f2bddc85318fe486caf411d7d20c151bd1f7c88735be6589be635cfcde16f52f6562dd72c277454688b804917321b78fe6d9457dda291fe4e2304d6a4ec
6
+ metadata.gz: 3f40ff61411c758ecd314b1bf81b1784ef87d90416e0073c7ec58a3cb29434a591d6e3d1a0e8dfc30d67868871991e14976023a43654e183a97f07447b60c1d7
7
+ data.tar.gz: bda762260ab03d9b85c373e0a6740b245a37ad2d2c629f747e26ef1030074804e038381e418e3c359c86022628fa24aac5cf931046bb54f2b17c751feb79d4d8
data/CHANGELOG.md CHANGED
@@ -6,6 +6,10 @@ 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.12.2 - 2014-09-09
10
+
11
+ * [ENHANCEMENT] Accept `part` in the `where` clause of Videos, so statistics and content details can be eagerly loaded.
12
+
9
13
  ## 0.12.1 - 2014-09-04
10
14
 
11
15
  * [ENHANCEMENT] Add `position` option to add_video (to specify where in a playlist to add a video)
data/README.md CHANGED
@@ -41,7 +41,7 @@ To install on your system, run
41
41
 
42
42
  To use inside a bundled Ruby project, add this line to the Gemfile:
43
43
 
44
- gem 'yt', '~> 0.12.1'
44
+ gem 'yt', '~> 0.12.2'
45
45
 
46
46
  Since the gem follows [Semantic Versioning](http://semver.org),
47
47
  indicating the full version in your Gemfile (~> *major*.*minor*.*patch*)
@@ -13,8 +13,15 @@ module Yt
13
13
 
14
14
  def attributes_for_new_item(data)
15
15
  id = use_list_endpoint? ? data['id'] : data['id']['videoId']
16
- snippet = data.fetch('snippet', {}).merge includes_tags: false
17
- {id: id, snippet: snippet, auth: @auth}
16
+ snippet = data['snippet'].merge includes_tags: false if data['snippet']
17
+ {}.tap do |attributes|
18
+ attributes[:id] = id
19
+ attributes[:snippet] = snippet
20
+ attributes[:status] = data['status']
21
+ attributes[:content_details] = data['contentDetails']
22
+ attributes[:statistics] = data['statistics']
23
+ attributes[:auth] = @auth
24
+ end
18
25
  end
19
26
 
20
27
  # @return [Hash] the parameters to submit to YouTube to list videos.
@@ -67,6 +67,18 @@ module Yt
67
67
  delegate :view_count, :like_count, :dislike_count, :favorite_count,
68
68
  :comment_count, to: :statistics_set
69
69
 
70
+ # Override Resource's new to set statistics and content details as well
71
+ # if the response includes them
72
+ def initialize(options = {})
73
+ super options
74
+ if options[:statistics]
75
+ @statistics_set = StatisticsSet.new data: options[:statistics]
76
+ end
77
+ if options[:content_details]
78
+ @content_detail = ContentDetail.new data: options[:content_details]
79
+ end
80
+ end
81
+
70
82
  # Returns the list of keyword tags associated with the video.
71
83
  # Since YouTube API only returns tags on Videos#list, the memoized
72
84
  # @snippet is erased if the video was instantiated through Video#search
data/lib/yt/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Yt
2
- VERSION = '0.12.1'
2
+ VERSION = '0.12.2'
3
3
  end
@@ -11,6 +11,20 @@ describe Yt::Video do
11
11
  end
12
12
  end
13
13
 
14
+ describe '#statistics_set' do
15
+ context 'given fetching a video returns statistics' do
16
+ let(:attrs) { {statistics: {"viewCount"=>"202"}} }
17
+ it { expect(video.statistics_set).to be_a Yt::StatisticsSet }
18
+ end
19
+ end
20
+
21
+ describe '#content_details' do
22
+ context 'given fetching a video returns content details' do
23
+ let(:attrs) { {content_details: {"definition"=>"hd"}} }
24
+ it { expect(video.content_detail).to be_a Yt::ContentDetail }
25
+ end
26
+ end
27
+
14
28
  describe '#update' do
15
29
  let(:attrs) { {id: 'MESycYJytkU', snippet: {'title'=>'old'}} }
16
30
  before { expect(video).to receive(:do_update).and_yield 'snippet'=>{'title'=>'new'} }
@@ -24,4 +24,17 @@ describe Yt::Collections::Videos, :server_app do
24
24
  specify 'with a chart parameter, only returns videos of that chart', :ruby2 do
25
25
  expect(videos.where(chart: 'mostPopular').size).to be 200
26
26
  end
27
+
28
+ context 'with a list of parts' do
29
+ let(:video_id) { 'MESycYJytkU' }
30
+ let(:part) { 'statistics,contentDetails' }
31
+ let(:video) { videos.where(id: 'MESycYJytkU', part: part).first }
32
+
33
+ specify 'load ONLY the specified parts of the videos' do
34
+ expect(video.instance_variable_defined? :@snippet).to be false
35
+ expect(video.instance_variable_defined? :@status).to be false
36
+ expect(video.instance_variable_defined? :@statistics_set).to be true
37
+ expect(video.instance_variable_defined? :@content_detail).to be true
38
+ end
39
+ end
27
40
  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.12.1
4
+ version: 0.12.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: 2014-09-04 00:00:00.000000000 Z
11
+ date: 2014-09-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport