simple_youtube 3.0.0 → 3.0.1
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.
- data/.bundle/config +1 -0
- data/.gitignore +5 -0
- data/Gemfile +3 -0
- data/README.markdown +179 -0
- data/Rakefile +2 -0
- data/lib/simple_youtube.rb +5 -2
- data/lib/simple_youtube/activeyoutube.rb +3 -2
- data/lib/simple_youtube/version.rb +4 -0
- data/simple_youtube.gemspec +28 -0
- data/spec/fakeweb_helper.rb +12 -12
- data/spec/spec_helper.rb +4 -3
- data/spec/youtube_update_spec.rb +43 -23
- metadata +47 -12
data/.bundle/config
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
--- {}
|
data/Gemfile
ADDED
data/README.markdown
ADDED
@@ -0,0 +1,179 @@
|
|
1
|
+
simple_youtube works with the YouTube v2 API to...
|
2
|
+
|
3
|
+
1) Read(:get) YouTube data with no API Key
|
4
|
+
|
5
|
+
2) Update(:put) YouTube video data using your Gdata API Key and OAuth. Pass in your OAuth token/secret. Watch Ryan B's great [Simple OmniAuth screencast](http://railscasts.com/episodes/241-simple-omniauth) for OAuth set up in Rails. Beforehand you'll also need to [authenticate and authorize your host to use the Google APIs](http://code.google.com/apis/accounts/docs/RegistrationForWebAppsAuto.html) to get a developer(x_gdata_key) key and host(host_secret) key
|
6
|
+
|
7
|
+
3) Currently no Create or Delete functionality.
|
8
|
+
|
9
|
+
I have tried to cover most of the examples from the [YouTube API reference](http://code.google.com/apis/youtube/2.0/reference.html)
|
10
|
+
|
11
|
+
`gem install simple_youtube`
|
12
|
+
|
13
|
+
## Video
|
14
|
+
|
15
|
+
### :get a single video uid
|
16
|
+
|
17
|
+
[http://gdata.youtube.com/feeds/api/videos/wOzOc0xxJu8?v=2](http://gdata.youtube.com/feeds/api/videos/wOzOc0xxJu8?v=2)
|
18
|
+
|
19
|
+
video_uid = Youtube::Video.find(:scope => 'wOzOc0xxJu8', :params => {:v => '2'})
|
20
|
+
video_uid.entry.size # => 1
|
21
|
+
video_uid.entry[0].title # => "Michael Watford - So Into You (Dub Mix)"
|
22
|
+
|
23
|
+
### :get top 5 'ruby on rails' videos
|
24
|
+
|
25
|
+
[http://gdata.youtube.com/feeds/api/videos?q=ruby+on+rails&max-results=5&v=2](http://gdata.youtube.com/feeds/api/videos?q=ruby+on+rails&max-results=5&v=2)
|
26
|
+
|
27
|
+
video_search = Youtube::Video.find(:params => {:q => 'ruby on rails', :"max-results" => '5', :v => '2'})
|
28
|
+
video_search.entry.size # => 5
|
29
|
+
video_search.title # => "YouTube Videos matching query: ruby on rails"
|
30
|
+
video_search.entry[3].link[1].href # => http://gdata.youtube.com/feeds/api/videos/UCB57Npj9U0/responses?v=2
|
31
|
+
|
32
|
+
|
33
|
+
### :get related videos
|
34
|
+
|
35
|
+
[http://gdata.youtube.com/feeds/api/videos/rFVHjZYoq4Q/related?v=2](http://gdata.youtube.com/feeds/api/videos/rFVHjZYoq4Q/related?v=2)
|
36
|
+
|
37
|
+
video_related = Youtube::Video.find(:scope => 'rFVHjZYoq4Q', :type => 'related', :params => {:v => '2'})
|
38
|
+
video_related.entry.size # => 25
|
39
|
+
video_related.entry[24].author.uri # => http://gdata.youtube.com/feeds/api/users/neodracco
|
40
|
+
|
41
|
+
|
42
|
+
### :get video responses
|
43
|
+
|
44
|
+
[http://gdata.youtube.com/feeds/api/videos/rFVHjZYoq4Q/responses?v=2](http://gdata.youtube.com/feeds/api/videos/rFVHjZYoq4Q/responses?v=2)
|
45
|
+
|
46
|
+
video_responses = Youtube::Video.find(:scope => 'rFVHjZYoq4Q', :type => 'responses', :params => {:v => '2'})
|
47
|
+
video_responses.entry[1].group.category # => Music
|
48
|
+
|
49
|
+
|
50
|
+
### :get video comments
|
51
|
+
|
52
|
+
[http://gdata.youtube.com/feeds/api/videos/rFVHjZYoq4Q/comments?v=2](http://gdata.youtube.com/feeds/api/videos/rFVHjZYoq4Q/comments?v=2)
|
53
|
+
|
54
|
+
video_comments = Youtube::Video.find(:scope => 'rFVHjZYoq4Q', :type => 'comments', :params => {:v => '2'})
|
55
|
+
video_comments.entry[0].content # => Come up to my first ever e on this about 14-15 years ago, ahh too long...
|
56
|
+
|
57
|
+
|
58
|
+
### :get top 11 videos in Comedy category/tag
|
59
|
+
|
60
|
+
[http://gdata.youtube.com/feeds/api/videos?category=Comedy&max-results=11&v=2](http://gdata.youtube.com/feeds/api/videos?category=Comedy&max-results=11&v=2)
|
61
|
+
|
62
|
+
video_category = Youtube::Video.find(:params => {:category => 'Comedy', :"max-results" => '11', :v => '2'})
|
63
|
+
video_category.entry.size # => 11
|
64
|
+
video_category.entry[9].category[2].term # => Harry Potter
|
65
|
+
video_category.entry[0].category[1].term # => Comedy
|
66
|
+
|
67
|
+
|
68
|
+
### :get top 5 videos in Comedy category/tag, excluding Film category/tag
|
69
|
+
|
70
|
+
[http://gdata.youtube.com/feeds/api/videos?category=Comedy%2C-Film&max-results=5&v=2](http://gdata.youtube.com/feeds/api/videos?category=Comedy%2C-Film&max-results=5&v=2)
|
71
|
+
|
72
|
+
video_category_comedy_exclude_film = Youtube::Video.find(:params => {:category => 'Comedy,-Film', :"max-results" => '5', :v => '2'})
|
73
|
+
video_category_comedy_exclude_film.entry[1].category.size # => 18
|
74
|
+
video_category_comedy_exclude_film.entry[1].category.each { |category| puts 'film' if category.term.eql?('Film') } #=> nil
|
75
|
+
|
76
|
+
|
77
|
+
### :get videos in david, beckham,(News or Sports) category/tags
|
78
|
+
|
79
|
+
[http://gdata.youtube.com/feeds/api/videos?category=david%2Cbeckham%2CNews%7CSports&v=2](http://gdata.youtube.com/feeds/api/videos?category=david%2Cbeckham%2CNews%7CSports&v=2)
|
80
|
+
|
81
|
+
video_category_david_beckham_news_or_sports = Youtube::Video.find(:params => {:category => 'david,beckham,News|Sports', :v => '2'})
|
82
|
+
video_category_david_beckham_news_or_sports.entry[7].category[1].label # => Sports
|
83
|
+
video_category_david_beckham_news_or_sports.entry[7].category[2].term # => david
|
84
|
+
|
85
|
+
### :put an updated video
|
86
|
+
|
87
|
+
video_uid = "video_uid"
|
88
|
+
user_name = "user_name"
|
89
|
+
update_xml = IO.read('fixture/video_update.xml')
|
90
|
+
oauth_token = "oauth_token"
|
91
|
+
oauth_token_secret = "oauth_token_secret"
|
92
|
+
x_gdata_key = "x_gdata_key"
|
93
|
+
host = "www.host.com"
|
94
|
+
host_secret = "host_secret"
|
95
|
+
|
96
|
+
response = Youtube::Video.update(video_uid, user_name, update_xml, oauth_token, oauth_token_secret, x_gdata_key, host, host_secret)
|
97
|
+
response.code # => 200
|
98
|
+
|
99
|
+
## Standardfeed
|
100
|
+
|
101
|
+
### :get top rated videos from today
|
102
|
+
|
103
|
+
[http://gdata.youtube.com/feeds/api/standardfeeds/top_rated?time=today&v=2](http://gdata.youtube.com/feeds/api/standardfeeds/top_rated?time=today&v=2)
|
104
|
+
|
105
|
+
standardfeed_topratedtoday = Youtube::Standardfeed.find(:type => 'top_rated', :params => {:time => 'today', :v => '2'})
|
106
|
+
standardfeed_topratedtoday.entry[16].author.name = "ZOMGitsCriss"
|
107
|
+
|
108
|
+
### :get top rated videos from jp
|
109
|
+
|
110
|
+
[http://gdata.youtube.com/feeds/api/standardfeeds/JP/top_rated?v=2](http://gdata.youtube.com/feeds/api/standardfeeds/JP/top_rated?v=2)
|
111
|
+
|
112
|
+
standardfeed_toprated_jp = Youtube::Standardfeed.find(:scope => 'JP', :type => 'top_rated', :params => {:v => '2'})
|
113
|
+
standardfeed_toprated_jp.id = "tag:youtube.com,2008:standardfeed:jp:top_rated"
|
114
|
+
standardfeed_toprated_jp.entry[1].link[4].href = "http://gdata.youtube.com/feeds/api/standardfeeds/jp/top_rated/v/BQ9YtJC-Kd8?v=2"
|
115
|
+
|
116
|
+
|
117
|
+
### :get top rated comedy videos from jp
|
118
|
+
|
119
|
+
[http://gdata.youtube.com/feeds/api/standardfeeds/JP/top_rated?category=Comedy&max-results=11&v=2]("http://gdata.youtube.com/feeds/api/standardfeeds/jp/top_rated/v/7hYGkqc1gqE?v=2")
|
120
|
+
|
121
|
+
standardfeed_toprated_jp_comedy = Youtube::Standardfeed.find(:scope => 'JP', :type => 'top_rated', :params => {:category => 'Comedy', :"max-results" => '11', :v => '2'})
|
122
|
+
standardfeed_toprated_jp_comedy.entry[1].link[4].href = "http://gdata.youtube.com/feeds/api/standardfeeds/jp/top_rated/v/7hYGkqc1gqE?v=2"
|
123
|
+
|
124
|
+
|
125
|
+
## User
|
126
|
+
|
127
|
+
### :get a single user
|
128
|
+
|
129
|
+
[http://gdata.youtube.com/feeds/api/users/neodracco](http://gdata.youtube.com/feeds/api/users/neodracco)
|
130
|
+
|
131
|
+
user_search = Youtube::User.find(:scope => 'neodracco')
|
132
|
+
user_search.entry.size => 1
|
133
|
+
|
134
|
+
### :get ionysis favourite videos
|
135
|
+
|
136
|
+
[http://gdata.youtube.com/feeds/api/users/ionysis/favorites?v=2](http://gdata.youtube.com/feeds/api/users/ionysis/favorites?v=2)
|
137
|
+
|
138
|
+
user_ionysis_favourites = Youtube::User.find(:scope => 'ionysis', :type => 'favorites', :params => {:v => '2'})
|
139
|
+
user_ionysis_favourites.entry[7].statistics.favoriteCount) = "9586"
|
140
|
+
user_ionysis_favourites.entry[7].rating[1].numLikes) = "2568"
|
141
|
+
|
142
|
+
### :get cyanure1982 playlists
|
143
|
+
|
144
|
+
[http://gdata.youtube.com/feeds/api/users/cyanure1982/playlists?v=2](http://gdata.youtube.com/feeds/api/users/cyanure1982/playlists?v=2)
|
145
|
+
|
146
|
+
user_cyanure1982_playlists = Youtube::User.find(:scope => 'cyanure1982', :type => 'playlists', :params => {:v => '2'})
|
147
|
+
user_cyanure1982_playlists.entry[2].title) = "shinnenkai"
|
148
|
+
|
149
|
+
### :get ionysis subscriptions
|
150
|
+
|
151
|
+
[http://gdata.youtube.com/feeds/api/users/ionysis/subscriptions?v=2](http://gdata.youtube.com/feeds/api/users/ionysis/subscriptions?v=2)
|
152
|
+
|
153
|
+
user_ionysis_subscriptions = Youtube::User.find(:scope => 'ionysis', :type => 'subscriptions', :params => {:v => '2'})
|
154
|
+
user_ionysis_subscriptions.entry[0].title) = "Videos published by : vinyljunkie07"
|
155
|
+
|
156
|
+
### :get vinyljunkie07 contacts
|
157
|
+
|
158
|
+
[http://gdata.youtube.com/feeds/api/users/vinyljunkie07/contacts?v=2](http://gdata.youtube.com/feeds/api/users/vinyljunkie07/contacts?v=2)
|
159
|
+
|
160
|
+
user_vinyljunkie07_contacts = Youtube::User.find(:scope => 'vinyljunkie07', :type => 'contacts', :params => {:v => '2'})
|
161
|
+
user_vinyljunkie07_contacts.entry[18].id) "tag:youtube.com,2008:user:vinyljunkie07:contact:CrackerSchool"
|
162
|
+
|
163
|
+
|
164
|
+
## Playlist
|
165
|
+
|
166
|
+
### :get the cyanure1982 playlist - shinnenkai(D00BDE6AA710D50C)
|
167
|
+
|
168
|
+
[http://gdata.youtube.com/feeds/api/playlists/D00BDE6AA710D50C?max-results=14&v=2](http://gdata.youtube.com/feeds/api/playlists/D00BDE6AA710D50C?max-results=14&v=2)
|
169
|
+
|
170
|
+
playlist_cyanure1982 = Youtube::Playlist.find(:scope => 'D00BDE6AA710D50C', :params => {:"max-results" => '14', :v => '2'})
|
171
|
+
playlist_cyanure1982.entry.size = 14
|
172
|
+
playlist_cyanure1982.entry[7].group.keywords = "nu, jazz, club, house, Jazztronik, dj, Yukihiro, Fukutomi, Mondo, Grosso, Daishi, Dance, FreeTEMPO, FPM, KJM, Kentaro, Takizawa"
|
173
|
+
|
174
|
+
simple_youtube is derived from the active_youtube gem from the [Quark ruby blog](http://www.quarkruby.com/2008/2/12/active-youtube)
|
175
|
+
|
176
|
+
Big Thanks to the Quark crew for the inspiration!!!
|
177
|
+
|
178
|
+
|
179
|
+
|
data/Rakefile
ADDED
data/lib/simple_youtube.rb
CHANGED
@@ -1,2 +1,5 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
module SimpleYoutube
|
2
|
+
ROOT = File.dirname(__FILE__) + '/..'
|
3
|
+
end
|
4
|
+
|
5
|
+
Dir[SimpleYoutube::ROOT + '/lib/simple_youtube/**/*.rb'].each { |file| require file }
|
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'rubygems'
|
2
2
|
require 'active_resource'
|
3
|
-
|
3
|
+
|
4
|
+
require SimpleYoutube::ROOT + "/lib/simple_youtube/entry_interface_shim"
|
4
5
|
|
5
6
|
class ActiveYoutube < ActiveResource::Base
|
6
7
|
|
@@ -14,6 +15,6 @@ class ActiveYoutube < ActiveResource::Base
|
|
14
15
|
headers['Accept'] = "application/atom+xml"
|
15
16
|
path = "#{prefix()}#{collection_name}#{'/' if scope}#{scope}#{'/' if type}#{type}#{query_string(query)}"
|
16
17
|
instantiate_record(format.decode(connection.get(path, headers).body))
|
17
|
-
end
|
18
|
+
end
|
18
19
|
|
19
20
|
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "simple_youtube/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = 'simple_youtube'
|
7
|
+
s.version = SimpleYoutube::VERSION
|
8
|
+
s.authors = ['James Shipton']
|
9
|
+
s.email = ['ionysis@gmail.com']
|
10
|
+
s.homepage = 'https://github.com/jamesshipton/simple_youtube'
|
11
|
+
s.summary = 'ActiveResource extension to Gdata Youtube API.'
|
12
|
+
s.description = 'ActiveResource extension to Gdata Youtube API, anonymous Reads, Updates using your API key and OAuth, no Create or Delete access.'
|
13
|
+
|
14
|
+
s.rubyforge_project = 'simple_youtube'
|
15
|
+
|
16
|
+
s.files = `git ls-files`.split("\n")
|
17
|
+
s.test_files = `git ls-files -- spec/*`.split("\n")
|
18
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
19
|
+
s.require_paths = ["lib"]
|
20
|
+
|
21
|
+
s.add_dependency 'activeresource', '~> 3.1'
|
22
|
+
s.add_dependency 'oauth', '~> 0.4'
|
23
|
+
|
24
|
+
s.add_development_dependency 'fakeweb', '~> 1.3'
|
25
|
+
s.add_development_dependency 'rspec', '~> 2.6'
|
26
|
+
s.add_development_dependency 'debugger'
|
27
|
+
s.add_development_dependency 'rake'
|
28
|
+
end
|
data/spec/fakeweb_helper.rb
CHANGED
@@ -1,22 +1,22 @@
|
|
1
1
|
require 'fakeweb'
|
2
2
|
|
3
|
-
module FakewebHelper
|
4
|
-
# Make sure nothing gets out (IMPORTANT)
|
3
|
+
module FakewebHelper
|
4
|
+
# Make sure nothing gets out (IMPORTANT)
|
5
5
|
FakeWeb.allow_net_connect = false
|
6
6
|
|
7
|
-
# Turns a fixture file name into a full path
|
8
|
-
def fixture_file(filename)
|
9
|
-
return '' if filename == ''
|
10
|
-
|
11
|
-
end
|
7
|
+
# Turns a fixture file name into a full path
|
8
|
+
def fixture_file(filename)
|
9
|
+
return '' if filename == ''
|
10
|
+
"#{SimpleYoutube::ROOT}/spec/fixture/#{filename}"
|
11
|
+
end
|
12
12
|
|
13
|
-
# Convenience methods for stubbing URLs to fixtures
|
14
|
-
def stub_get(url, filename)
|
15
|
-
FakeWeb.register_uri(:get, url, :response => fixture_file(filename))
|
13
|
+
# Convenience methods for stubbing URLs to fixtures
|
14
|
+
def stub_get(url, filename)
|
15
|
+
FakeWeb.register_uri(:get, url, :response => fixture_file(filename))
|
16
16
|
end
|
17
|
-
|
17
|
+
|
18
18
|
def stub_http_error(http_type, url, error_code, error_message)
|
19
|
-
FakeWeb.register_uri(http_type, url, :status => [error_code, error_message])
|
19
|
+
FakeWeb.register_uri(http_type, url, :status => [error_code, error_message])
|
20
20
|
end
|
21
21
|
|
22
22
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,7 +1,8 @@
|
|
1
|
-
require
|
2
|
-
|
1
|
+
require 'simple_youtube'
|
2
|
+
|
3
|
+
require 'fakeweb_helper'
|
3
4
|
|
4
5
|
RSpec.configure do |c|
|
5
6
|
c.treat_symbols_as_metadata_keys_with_true_values = true
|
6
|
-
c.color_enabled = true
|
7
|
+
c.color_enabled = true
|
7
8
|
end
|
data/spec/youtube_update_spec.rb
CHANGED
@@ -1,31 +1,51 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe 'YoutubeUpdateSpec' do
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
host_secret = "host_secret"
|
11
|
-
oauth_token = "oauth_token"
|
4
|
+
it 'updates a video on youtube' do
|
5
|
+
consumer = double('consumer')
|
6
|
+
access_token = double('access_token')
|
7
|
+
host = 'www.host.com'
|
8
|
+
host_secret = 'host_secret'
|
9
|
+
oauth_token = 'oauth_token'
|
12
10
|
oauth_token_secret = "oauth_token_secret"
|
13
|
-
x_gdata_key =
|
14
|
-
video_uid =
|
15
|
-
user_name =
|
16
|
-
update_xml = IO.read('fixture/video_update.xml')
|
17
|
-
|
18
|
-
OAuth::Consumer.should_receive(:new).
|
19
|
-
|
20
|
-
|
11
|
+
x_gdata_key = 'x_gdata_key'
|
12
|
+
video_uid = 'video_uid'
|
13
|
+
user_name = 'user_name'
|
14
|
+
update_xml = IO.read(SimpleYoutube::ROOT + '/spec/fixture/video_update.xml')
|
15
|
+
|
16
|
+
OAuth::Consumer.should_receive(:new).
|
17
|
+
with(
|
18
|
+
host,
|
19
|
+
host_secret,
|
20
|
+
{ :site => 'https://www.google.com',
|
21
|
+
:request_token_path => '/accounts/OAuthGetRequestToken',
|
22
|
+
:authorize_path => '/accounts/OAuthAuthorizeToken',
|
23
|
+
:access_token_path => '/accounts/OAuthGetAccessToken' }).
|
24
|
+
and_return(consumer)
|
25
|
+
|
26
|
+
OAuth::AccessToken.should_receive(:new).
|
27
|
+
with(consumer, oauth_token, oauth_token_secret).
|
28
|
+
and_return(access_token)
|
29
|
+
|
30
|
+
access_token.should_receive(:put).
|
31
|
+
with(
|
32
|
+
"http://gdata.youtube.com/feeds/api/users/#{user_name}/uploads/#{video_uid}",
|
33
|
+
update_xml,
|
34
|
+
{ 'Accept' => 'application/atom+xml',
|
35
|
+
'Content-Type' => 'application/atom+xml',
|
36
|
+
'X-GData-Key' => "key=#{x_gdata_key}" }).
|
37
|
+
and_return(Net::HTTPResponse.new(1.0, 200, 'OK'))
|
38
|
+
|
39
|
+
response = Youtube::Video.update(
|
40
|
+
video_uid,
|
41
|
+
user_name,
|
42
|
+
update_xml,
|
43
|
+
oauth_token,
|
44
|
+
oauth_token_secret,
|
45
|
+
x_gdata_key,
|
46
|
+
host,
|
47
|
+
host_secret)
|
21
48
|
|
22
|
-
access_token.should_receive(:put).with("http://gdata.youtube.com/feeds/api/users/#{user_name}/uploads/#{video_uid}", update_xml, {'Accept' => 'application/atom+xml', 'Content-Type' => 'application/atom+xml', 'X-GData-Key' => x_gdata_key}).and_return(Net::HTTPResponse.new(1.0, 200, "OK")
|
23
|
-
)
|
24
|
-
|
25
|
-
response = Youtube::Video.update(video_uid, user_name, update_xml, oauth_token, oauth_token_secret, x_gdata_key, host, host_secret)
|
26
|
-
|
27
49
|
response.code.should == 200
|
28
|
-
|
29
50
|
end
|
30
|
-
|
31
51
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: simple_youtube
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.0.
|
4
|
+
version: 3.0.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2013-03-13 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activeresource
|
16
|
-
requirement: &
|
16
|
+
requirement: &70351174725400 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '3.1'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70351174725400
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: oauth
|
27
|
-
requirement: &
|
27
|
+
requirement: &70351174724540 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ~>
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0.4'
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70351174724540
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: fakeweb
|
38
|
-
requirement: &
|
38
|
+
requirement: &70351174723540 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ~>
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '1.3'
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70351174723540
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: rspec
|
49
|
-
requirement: &
|
49
|
+
requirement: &70351174722920 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ~>
|
@@ -54,7 +54,29 @@ dependencies:
|
|
54
54
|
version: '2.6'
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *70351174722920
|
58
|
+
- !ruby/object:Gem::Dependency
|
59
|
+
name: debugger
|
60
|
+
requirement: &70351174722260 !ruby/object:Gem::Requirement
|
61
|
+
none: false
|
62
|
+
requirements:
|
63
|
+
- - ! '>='
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: '0'
|
66
|
+
type: :development
|
67
|
+
prerelease: false
|
68
|
+
version_requirements: *70351174722260
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rake
|
71
|
+
requirement: &70351174721180 !ruby/object:Gem::Requirement
|
72
|
+
none: false
|
73
|
+
requirements:
|
74
|
+
- - ! '>='
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: '0'
|
77
|
+
type: :development
|
78
|
+
prerelease: false
|
79
|
+
version_requirements: *70351174721180
|
58
80
|
description: ActiveResource extension to Gdata Youtube API, anonymous Reads, Updates
|
59
81
|
using your API key and OAuth, no Create or Delete access.
|
60
82
|
email:
|
@@ -63,10 +85,17 @@ executables: []
|
|
63
85
|
extensions: []
|
64
86
|
extra_rdoc_files: []
|
65
87
|
files:
|
88
|
+
- .bundle/config
|
89
|
+
- .gitignore
|
90
|
+
- Gemfile
|
91
|
+
- README.markdown
|
92
|
+
- Rakefile
|
93
|
+
- lib/simple_youtube.rb
|
66
94
|
- lib/simple_youtube/activeyoutube.rb
|
67
95
|
- lib/simple_youtube/entry_interface_shim.rb
|
96
|
+
- lib/simple_youtube/version.rb
|
68
97
|
- lib/simple_youtube/youtube.rb
|
69
|
-
-
|
98
|
+
- simple_youtube.gemspec
|
70
99
|
- spec/fakeweb_helper.rb
|
71
100
|
- spec/fixture/playlist_cyanure1982.xml
|
72
101
|
- spec/fixture/standardfeed_toprated_jp.xml
|
@@ -102,14 +131,20 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
102
131
|
- - ! '>='
|
103
132
|
- !ruby/object:Gem::Version
|
104
133
|
version: '0'
|
134
|
+
segments:
|
135
|
+
- 0
|
136
|
+
hash: 4037484550341055447
|
105
137
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
106
138
|
none: false
|
107
139
|
requirements:
|
108
140
|
- - ! '>='
|
109
141
|
- !ruby/object:Gem::Version
|
110
142
|
version: '0'
|
143
|
+
segments:
|
144
|
+
- 0
|
145
|
+
hash: 4037484550341055447
|
111
146
|
requirements: []
|
112
|
-
rubyforge_project:
|
147
|
+
rubyforge_project: simple_youtube
|
113
148
|
rubygems_version: 1.8.15
|
114
149
|
signing_key:
|
115
150
|
specification_version: 3
|