yt 0.4.6 → 0.4.7

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2a36e77de08761577a50b1c22ef3757d64980e20
4
- data.tar.gz: 7ced9dacb0b1338f395d892340b7862b341917e1
3
+ metadata.gz: fe40139d2888a20c31bda3e4a1fecd43ddebe6d6
4
+ data.tar.gz: b4f3a450be5b5ac46206fa3365109ee44f42be16
5
5
  SHA512:
6
- metadata.gz: f6073f4c97083b01d27361dd15eff89c78449ffeb439d73e77d7de6188d840668239a91ab0d8854c45a4b4b0e474172451fcdaf8b4c6f0363e08a49d66f63320
7
- data.tar.gz: cf8985a9d6464f3fa606ec9192d7137eda6f1697ab4d707ead5b58de2eb01af7cdbbf97d7601adc6d9103ddeae3d75f41b44531e489d7b978b62299923d1eeea
6
+ metadata.gz: cfeb6a2919c6eec4fdbf5e1b13aba3dd267b02ab1b727a1a236c1bce6848bf3327f3ce93b153413b6553cf0078e2cef0fb049cb5f90478036ba09fc1e6d25510
7
+ data.tar.gz: 0917d9c6dab13d21710165497bf5f5f03124bfa6ba8394e18e7ba6e7b68a39c8aa7972e0c74be8f1fd51441884f6a4707a0cad9cb285841d4ea2b9252460081a
data/.travis.yml CHANGED
@@ -6,11 +6,11 @@ matrix:
6
6
  - rvm: 1.9.3
7
7
  gemfile: gemfiles/Gemfile.activesupport-3.x
8
8
  env:
9
- - secure: DAvQ18qN71nRGkM+kOklTi6InE3dM98BgQAagve2S8/D76VXc+Hyl1It+/v73CrCuDdKTJpVl2a7pc+W5x+JG+PDo4X4ZXFURyvv417nywJulsda4y/TcTe59WHFGTQ/maj3l5PLPmENpROBU8/2HBGOSny0aNNkbnRXrTx3dU4=
9
+ - secure: LuOkhCrHJomwu/Y/l/DIJjKn4zLMRDjtTThJxlANeY4w4S5sac5eGHMD1xxPeWLI7HI8ZIzdqcfOIaVpxts0jeHLLsPCErFl9gWxADCOeC1YSn/07vPhi7KxMEjkR1KbXk1coY4KFZqCByRGYi3s2DnH1HSAKks3ZVs12yhdn6A=
10
10
  - rvm: 2.0.0
11
11
  gemfile: gemfiles/Gemfile.activesupport-4.x
12
12
  env:
13
- - secure: D57A44s/W77P3JLarTwELEjIeFtOKVcUtM2M7fKot6qfiDGF3azsWUoW0rrQG6hCUSop32UUeYQdnUmdhqWc89k0jtVKpW1I3UyV36iacKXevsfe/w6Q4CCHCi3udPVsEvt36ZQ2LtGMs0seUxujDaI1sqrfn3zMSXyVcSTjceg=
13
+ - secure: XfoZvb34Vma3tCI5EuV/Pw0V8ISD/QQt9Rda4nTmSRYYSoqjPgrgJhAywnfDTR24ydEpoWJB9jlBq4kk1EywO9jHYoZ/gydzmAoBZ1riDqGvD1muK15gyHLsQu1KMk9jZTtTQ/qpi91rA4qrBWtARfcbhxayTyYjl9zcI8lPmzI=
14
14
  env:
15
15
  global:
16
16
  - secure: KFozlRmcSFzZIl8nXPZ5HIf+MAvgK4I7FYsTYyAMW7LsRJJ4NAJJCHAbWZUfmbqygUN188zj2y0TbQUu47lEf7v2XvJu6DFCYw+e4sk6lSW8V5jRzWl1f6DOKb1z+FBpUgJHj9OKykqjdtm3zVLWr56xm3fhB+ULDj8XVOVxyLk=
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- yt (0.4.6)
4
+ yt (0.4.7)
5
5
  activesupport
6
6
 
7
7
  GEM
data/HISTORY.md CHANGED
@@ -6,6 +6,7 @@ v0.4 - 2014/05/09
6
6
  * Supports also ActiveSupport 3 and Ruby 1.9.3 (not just AS4 + Ruby 2)
7
7
  * Fix parsing annotation and timestamps longer than 1 hour
8
8
  * Fix delegating tags from resources to snippets
9
+ * Two options to add videos to a playlist: fail or not if a video is missing
9
10
 
10
11
  v0.3.0 - 2014/04/16
11
12
  --------------------
data/README.md CHANGED
@@ -4,10 +4,10 @@ Yt
4
4
  Yt helps you write apps that need to interact with the YouTube API V3.
5
5
 
6
6
  [![Gem Version](https://badge.fury.io/rb/yt.svg)](http://badge.fury.io/rb/yt)
7
- [![Dependency Status](https://gemnasium.com/fullscreeninc/yt.png)](https://gemnasium.com/fullscreeninc/yt)
8
- [![Build Status](https://travis-ci.org/fullscreeninc/yt.png?branch=master)](https://travis-ci.org/fullscreeninc/yt)
9
- [![Coverage Status](https://coveralls.io/repos/fullscreeninc/yt/badge.png?)](https://coveralls.io/r/fullscreeninc/yt)
10
- [![Code Climate](https://codeclimate.com/github/fullscreeninc/yt.png)](https://codeclimate.com/github/fullscreeninc/yt)
7
+ [![Dependency Status](https://gemnasium.com/Fullscreen/yt.png)](https://gemnasium.com/Fullscreen/yt)
8
+ [![Build Status](https://travis-ci.org/Fullscreen/yt.png?branch=master)](https://travis-ci.org/Fullscreen/yt)
9
+ [![Coverage Status](https://coveralls.io/repos/Fullscreen/yt/badge.png?)](https://coveralls.io/r/Fullscreen/yt)
10
+ [![Code Climate](https://codeclimate.com/github/Fullscreen/yt.png)](https://codeclimate.com/github/Fullscreen/yt)
11
11
 
12
12
  After [registering your app](#registering-your-app), you can run commands like:
13
13
 
@@ -25,7 +25,7 @@ video.duration #=> 86
25
25
  video.annotations.count #=> 1
26
26
  ```
27
27
 
28
- The **full documentation** is available at [rubydoc.info](http://rubydoc.info/github/fullscreeninc/yt/master/frames).
28
+ The **full documentation** is available at [rubydoc.info](http://rubydoc.info/github/Fullscreen/yt/master/frames).
29
29
 
30
30
  Available resources
31
31
  ===================
@@ -33,7 +33,7 @@ Available resources
33
33
  Yt::Account
34
34
  -----------
35
35
 
36
- Use [Yt::Account](http://rubydoc.info/github/fullscreeninc/yt/master/Yt/Account) to:
36
+ Use [Yt::Account](http://rubydoc.info/github/Fullscreen/yt/master/Yt/Account) to:
37
37
 
38
38
  * authenticate as a YouTube account
39
39
  * read attributes of the account
@@ -52,7 +52,7 @@ account.channel #=> #<Yt::Channel @id=...>
52
52
  Yt::Channel
53
53
  -----------
54
54
 
55
- Use [Yt::Channel](http://rubydoc.info/github/fullscreeninc/yt/master/Yt/Channel) to:
55
+ Use [Yt::Channel](http://rubydoc.info/github/Fullscreen/yt/master/Yt/Channel) to:
56
56
 
57
57
  * read attributes of a channel
58
58
  * access the videos of a channel
@@ -85,7 +85,7 @@ channel.delete_playlists title: 'New playlist' #=> [true]
85
85
  Yt::Video
86
86
  -----------
87
87
 
88
- Use [Yt::Video](http://rubydoc.info/github/fullscreeninc/yt/master/Yt/Video) to:
88
+ Use [Yt::Video](http://rubydoc.info/github/Fullscreen/yt/master/Yt/Video) to:
89
89
 
90
90
  * read attributes of a video
91
91
  * access the annotations of a video
@@ -110,7 +110,7 @@ video.like #=> true
110
110
  Yt::Playlist
111
111
  ------------
112
112
 
113
- Use [Yt::Playlist](http://rubydoc.info/github/fullscreeninc/yt/master/Yt/Playlist) to:
113
+ Use [Yt::Playlist](http://rubydoc.info/github/Fullscreen/yt/master/Yt/Playlist) to:
114
114
 
115
115
  * read attributes of a playlist
116
116
  * access the items of a playlist
@@ -139,7 +139,7 @@ playlist.delete_playlist_items title: 'Fullscreen Creator Platform' #=> [true]
139
139
  Yt::Annotation
140
140
  --------------
141
141
 
142
- Use [Yt::Annotation](http://rubydoc.info/github/fullscreeninc/yt/master/Yt/Annotation) to:
142
+ Use [Yt::Annotation](http://rubydoc.info/github/Fullscreen/yt/master/Yt/Annotation) to:
143
143
 
144
144
  * read attributes of an annotation
145
145
 
@@ -276,7 +276,7 @@ To install on your system, run
276
276
 
277
277
  To use inside a bundled Ruby project, add this line to the Gemfile:
278
278
 
279
- gem 'yt', '~> 0.4.6'
279
+ gem 'yt', '~> 0.4.7'
280
280
 
281
281
  Since the gem follows [Semantic Versioning](http://semver.org),
282
282
  indicating the full version in your Gemfile (~> *major*.*minor*.*patch*)
@@ -11,6 +11,10 @@ module Yt
11
11
  end
12
12
 
13
13
  def add_video(video_id)
14
+ playlist_items.insert({id: video_id, kind: :video}, ignore_not_found: true)
15
+ end
16
+
17
+ def add_video!(video_id)
14
18
  playlist_items.insert id: video_id, kind: :video
15
19
  end
16
20
 
@@ -18,6 +22,10 @@ module Yt
18
22
  video_ids.map{|video_id| add_video video_id}
19
23
  end
20
24
 
25
+ def add_videos!(video_ids = [])
26
+ video_ids.map{|video_id| add_video! video_id}
27
+ end
28
+
21
29
  def delete_playlist_items(attrs = {})
22
30
  playlist_items.delete_all attrs
23
31
  end
@@ -5,12 +5,14 @@ module Yt
5
5
  module Collections
6
6
  class PlaylistItems < Resources
7
7
 
8
- # options are id and kind
9
- def insert(options = {}) #
10
- resource = {kind: "youtube##{options[:kind]}"}
11
- resource["#{options[:kind]}Id"] = options[:id]
8
+ # attrs are id and kind
9
+ def insert(attrs = {}, options = {}) #
10
+ resource = {kind: "youtube##{attrs[:kind]}"}
11
+ resource["#{attrs[:kind]}Id"] = attrs[:id]
12
12
  snippet = {playlistId: @parent.id, resourceId: resource}
13
13
  do_insert body: {snippet: snippet}, params: {part: 'snippet,status'}
14
+ rescue Yt::RequestError => error
15
+ raise error unless options[:ignore_not_found] && error.reasons.include?('videoNotFound')
14
16
  end
15
17
 
16
18
  def delete_all(params = {})
data/lib/yt/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Yt
2
- VERSION = '0.4.6'
2
+ VERSION = '0.4.7'
3
3
  end
@@ -1,6 +1,8 @@
1
1
  require 'spec_helper'
2
2
  require 'yt/associations/playlist_items'
3
3
 
4
+ # TODO: Delete playlist item after tests that create them
5
+
4
6
  describe Yt::Associations::PlaylistItems, scenario: :device_app do
5
7
  before :all do
6
8
  account = Yt.configuration.account
@@ -11,26 +13,51 @@ describe Yt::Associations::PlaylistItems, scenario: :device_app do
11
13
  describe '#playlist_items' do
12
14
  let(:video_id) { 'MESycYJytkU' }
13
15
  before { @playlist.add_video video_id }
14
- # TODO: after, delete playlist item
15
16
 
16
17
  it { expect(@playlist.playlist_items.count).to be > 0 }
17
18
  it { expect(@playlist.playlist_items.first).to be_a Yt::PlaylistItem }
18
19
  end
19
20
 
20
21
  describe '#add_video' do
21
- let(:video_id) { 'MESycYJytkU' }
22
- # TODO: after, delete playlist item
23
- it { expect(@playlist.add_video video_id).to be_a Yt::PlaylistItem }
24
- it { expect{@playlist.add_video video_id}.to change{@playlist.playlist_items.count}.by(1) }
22
+ context 'given an existing video' do
23
+ let(:video_id) { 'MESycYJytkU' }
24
+ it { expect(@playlist.add_video video_id).to be_a Yt::PlaylistItem }
25
+ it { expect{@playlist.add_video video_id}.to change{@playlist.playlist_items.count}.by(1) }
26
+ end
27
+
28
+ context 'given an unknown video' do
29
+ let(:video_id) { 'not-a-video' }
30
+ it { expect(@playlist.add_video video_id).to be_nil }
31
+ it { expect{@playlist.add_video video_id}.not_to change{@playlist.playlist_items.count} }
32
+ end
33
+ end
34
+
35
+ describe '#add_video!' do
36
+ context 'given an existing video' do
37
+ let(:video_id) { 'MESycYJytkU' }
38
+ it { expect(@playlist.add_video video_id).to be_a Yt::PlaylistItem }
39
+ end
40
+
41
+ context 'given an unknown video' do
42
+ let(:video_id) { 'not-a-video' }
43
+ it { expect{@playlist.add_video! video_id}.to raise_error Yt::RequestError }
44
+ end
25
45
  end
26
46
 
27
47
  describe '#add_videos' do
28
- let(:video_ids) { ['MESycYJytkU'] * 2 }
29
- # TODO: after, delete playlist items
30
- it { expect(@playlist.add_videos video_ids).to have(2).items }
31
- it { expect{@playlist.add_videos video_ids}.to change{@playlist.playlist_items.count}.by(2) }
48
+ context 'given one existing and one unknown video' do
49
+ let(:video_ids) { ['MESycYJytkU', 'not-a-video'] }
50
+ it { expect(@playlist.add_videos video_ids).to have(2).items }
51
+ it { expect{@playlist.add_videos video_ids}.to change{@playlist.playlist_items.count}.by(1) }
52
+ end
32
53
  end
33
54
 
55
+ describe '#add_videos!' do
56
+ context 'given one existing and one unknown video' do
57
+ let(:video_ids) { ['MESycYJytkU', 'not-a-video'] }
58
+ it { expect{@playlist.add_videos! video_ids}.to raise_error Yt::RequestError }
59
+ end
60
+ end
34
61
 
35
62
  describe '#delete_playlist_items' do
36
63
  let(:video_id) { 'MESycYJytkU' }
data/yt.gemspec CHANGED
@@ -11,7 +11,7 @@ Gem::Specification.new do |spec|
11
11
  spec.description = %q{Youtube V3 API client.}
12
12
  spec.summary = %q{Yt makes it easy to interact with Youtube V3 API by
13
13
  providing a modular, intuitive and tested Ruby-style API.}
14
- spec.homepage = "http://github.com/fullscreeninc/yt"
14
+ spec.homepage = "http://github.com/Fullscreen/yt"
15
15
  spec.license = "MIT"
16
16
 
17
17
  spec.required_ruby_version = '>= 1.9.3'
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.4.6
4
+ version: 0.4.7
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-05-12 00:00:00.000000000 Z
11
+ date: 2014-05-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -211,7 +211,7 @@ files:
211
211
  - spec/support/device_app.rb
212
212
  - spec/support/server_app.rb
213
213
  - yt.gemspec
214
- homepage: http://github.com/fullscreeninc/yt
214
+ homepage: http://github.com/Fullscreen/yt
215
215
  licenses:
216
216
  - MIT
217
217
  metadata: {}