officialfm 0.0.2 → 0.0.3
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/LICENSE +22 -18
- data/README.md +3 -1
- data/Rakefile +1 -0
- data/changelog.md +4 -2
- data/lib/officialfm/users.rb +29 -0
- data/lib/officialfm/version.rb +1 -1
- data/test/fixtures/voted_playlists.json +50 -0
- data/test/fixtures/voted_tracks.json +96 -0
- data/test/users_test.rb +14 -0
- metadata +6 -2
data/LICENSE
CHANGED
@@ -1,20 +1,24 @@
|
|
1
|
-
Copyright (c) 2011 Amos Wenger
|
1
|
+
Copyright (c) 2011, Amos Wenger
|
2
|
+
All rights reserved.
|
2
3
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
the
|
4
|
+
Redistribution and use in source and binary forms, with or without
|
5
|
+
modification, are permitted provided that the following conditions are met:
|
6
|
+
* Redistributions of source code must retain the above copyright
|
7
|
+
notice, this list of conditions and the following disclaimer.
|
8
|
+
* Redistributions in binary form must reproduce the above copyright
|
9
|
+
notice, this list of conditions and the following disclaimer in the
|
10
|
+
documentation and/or other materials provided with the distribution.
|
11
|
+
* Neither the name of the <organization> nor the
|
12
|
+
names of its contributors may be used to endorse or promote products
|
13
|
+
derived from this software without specific prior written permission.
|
10
14
|
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
15
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
16
|
+
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
17
|
+
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
18
|
+
DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
|
19
|
+
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
20
|
+
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
21
|
+
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
22
|
+
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
23
|
+
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
24
|
+
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
data/README.md
CHANGED
@@ -81,7 +81,9 @@ the gem allows you to access it like this:
|
|
81
81
|
|
82
82
|
## Copyright
|
83
83
|
|
84
|
-
Copyright (c) 2011 Amos Wenger.
|
84
|
+
Copyright (c) 2011 Amos Wenger.
|
85
|
+
|
86
|
+
This project is distributed under the New BSD License. See LICENSE for details.
|
85
87
|
|
86
88
|
Based on [@pengwynn's Gowalla API wrapper](https://github.com/pengwynn/gowalla)
|
87
89
|
|
data/Rakefile
CHANGED
data/changelog.md
CHANGED
@@ -1,13 +1,15 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
+
## 0.0.3 May 18, 2011
|
4
|
+
* Added support for voted_playlists and voted_tracks requests
|
5
|
+
|
3
6
|
## 0.0.2 April 21, 2011
|
4
7
|
* s/Unofficial/Official, this gem is now endorsed by official.fm
|
5
8
|
* Playlist IDs no longer escaped
|
6
9
|
* Removed dependency on OAuth2, as it's not needed for the Simple API
|
7
10
|
* Better README
|
8
11
|
|
9
|
-
## 0.0.1 March
|
12
|
+
## 0.0.1 March 23, 2011
|
10
13
|
* Initial version
|
11
14
|
* Supports tracks, users, playlists
|
12
15
|
* Improved playlist support: tracks, running_time
|
13
|
-
|
data/lib/officialfm/users.rb
CHANGED
@@ -40,6 +40,20 @@ module OfficialFM
|
|
40
40
|
response.body
|
41
41
|
end
|
42
42
|
|
43
|
+
# Retrieve a list of the tracks this user has voted for
|
44
|
+
#
|
45
|
+
# @param [String] user_id: id or login
|
46
|
+
# @param [Integer] limit (50) limit per page
|
47
|
+
# @param [Bool] embed (false) should embed codes be included in the response
|
48
|
+
# @return [Hashie::Mash] Track list
|
49
|
+
def voted_tracks(user_id, options={})
|
50
|
+
response = connection.get do |req|
|
51
|
+
req.url "/user/#{user_id}/voted_tracks",
|
52
|
+
:api_embed_codes => options[:embed], :api_max_responses => options[:limit]
|
53
|
+
end
|
54
|
+
response.body
|
55
|
+
end
|
56
|
+
|
43
57
|
# Retrieve a list of the playlists of this user
|
44
58
|
#
|
45
59
|
# @param [String] user_id: id or login
|
@@ -54,6 +68,20 @@ module OfficialFM
|
|
54
68
|
response.body
|
55
69
|
end
|
56
70
|
|
71
|
+
# Retrieve a list of the playlists this user has voted for
|
72
|
+
#
|
73
|
+
# @param [String] user_id: id or login
|
74
|
+
# @param [Integer] limit (50) limit per page
|
75
|
+
# @param [Bool] embed (false) should embed codes be included in the response
|
76
|
+
# @return [Hashie::Mash] Playlist list
|
77
|
+
def voted_playlists(user_id, options={})
|
78
|
+
response = connection.get do |req|
|
79
|
+
req.url "/user/#{user_id}/voted_playlists",
|
80
|
+
:api_embed_codes => options[:embed], :api_max_responses => options[:limit]
|
81
|
+
end
|
82
|
+
response.body
|
83
|
+
end
|
84
|
+
|
57
85
|
# Retrieve a list of the contacts of this user
|
58
86
|
#
|
59
87
|
# @param [String] user_id: id or login
|
@@ -95,3 +123,4 @@ module OfficialFM
|
|
95
123
|
|
96
124
|
end
|
97
125
|
end
|
126
|
+
|
data/lib/officialfm/version.rb
CHANGED
@@ -0,0 +1,50 @@
|
|
1
|
+
[
|
2
|
+
{
|
3
|
+
"artwork_embed_code":"<iframe name=\"fairplayer\" width=\"220\" height=\"220\" scrolling=\"no\" frameborder=\"0\" src=\"http://official.fm/playlist/50786?fairplayer=artwork\"></iframe>",
|
4
|
+
"comments_count":0,
|
5
|
+
"created_at":"2011-01-02 17:24:34 UTC",
|
6
|
+
"description":"",
|
7
|
+
"id":50786,
|
8
|
+
"large_embed_code":"<iframe name=\"fairplayer\" width=\"220\" height=\"350\" scrolling=\"no\" frameborder=\"0\" src=\"http://official.fm/playlist/50786?fairplayer=large\"></iframe>",
|
9
|
+
"length":3757,
|
10
|
+
"mini_embed_code":"<iframe name=\"fairplayer\" width=\"34\" height=\"18\" scrolling=\"no\" frameborder=\"0\" src=\"http://official.fm/playlist/50786?fairplayer=mini\"></iframe>",
|
11
|
+
"name":"Top 20 (Most played) cover songs in 2010 ",
|
12
|
+
"password":null,
|
13
|
+
"picture_absolute_url":"http://cdn.official.fm/playlist_pictures/50/50786_small.jpg",
|
14
|
+
"plays_count":43,
|
15
|
+
"private":false,
|
16
|
+
"shuffle":false,
|
17
|
+
"small_embed_code":"<iframe name=\"fairplayer\" width=\"100%\" height=\"40\" scrolling=\"no\" frameborder=\"0\" src=\"http://official.fm/playlist/50786?fairplayer=small\"></iframe>",
|
18
|
+
"standard_embed_code":"<iframe name=\"fairplayer\" width=\"160\" height=\"240\" scrolling=\"no\" frameborder=\"0\" src=\"http://official.fm/playlist/50786?fairplayer=standard\"></iframe>",
|
19
|
+
"tracks":[1155,11519,64985,81107,19550,35878,70976,2408,12349,67940,12093,4149,67938,12645,78956,8277,15914],
|
20
|
+
"tracks_count":17,
|
21
|
+
"tracks_list":"1155,11519,64985,81107,19550,35878,70976,2408,12349,67940,12093,4149,67938,12645,78956,8277,15914",
|
22
|
+
"user_id":152,
|
23
|
+
"votes_count":7
|
24
|
+
}
|
25
|
+
,
|
26
|
+
{
|
27
|
+
"artwork_embed_code":"<iframe name=\"fairplayer\" width=\"220\" height=\"220\" scrolling=\"no\" frameborder=\"0\" src=\"http://official.fm/playlist/50195?fairplayer=artwork\"></iframe>",
|
28
|
+
"comments_count":0,
|
29
|
+
"created_at":"2010-12-23 18:17:14 UTC",
|
30
|
+
"description":null,
|
31
|
+
"id":50195,
|
32
|
+
"large_embed_code":"<iframe name=\"fairplayer\" width=\"220\" height=\"350\" scrolling=\"no\" frameborder=\"0\" src=\"http://official.fm/playlist/50195?fairplayer=large\"></iframe>",
|
33
|
+
"length":1322,
|
34
|
+
"mini_embed_code":"<iframe name=\"fairplayer\" width=\"34\" height=\"18\" scrolling=\"no\" frameborder=\"0\" src=\"http://official.fm/playlist/50195?fairplayer=mini\"></iframe>",
|
35
|
+
"name":"top 5 2010",
|
36
|
+
"password":null,
|
37
|
+
"picture_absolute_url":"http://cdn.official.fm/track_pictures/175/175408_small.jpg",
|
38
|
+
"plays_count":9,
|
39
|
+
"private":false,
|
40
|
+
"shuffle":false,
|
41
|
+
"small_embed_code":"<iframe name=\"fairplayer\" width=\"100%\" height=\"40\" scrolling=\"no\" frameborder=\"0\" src=\"http://official.fm/playlist/50195?fairplayer=small\"></iframe>",
|
42
|
+
"standard_embed_code":"<iframe name=\"fairplayer\" width=\"160\" height=\"240\" scrolling=\"no\" frameborder=\"0\" src=\"http://official.fm/playlist/50195?fairplayer=standard\"></iframe>",
|
43
|
+
"tracks":[175408,143269,139463,184871,184620],
|
44
|
+
"tracks_count":5,
|
45
|
+
"tracks_list":"175408,143269,139463,184871,184620",
|
46
|
+
"user_id":39714,
|
47
|
+
"votes_count":3
|
48
|
+
}
|
49
|
+
|
50
|
+
]
|
@@ -0,0 +1,96 @@
|
|
1
|
+
[
|
2
|
+
{
|
3
|
+
"artist_string":"Various Artist",
|
4
|
+
"artwork_embed_code":"<iframe name=\"fairplayer\" width=\"220\" height=\"220\" scrolling=\"no\" frameborder=\"0\" src=\"http://official.fm/track/60526?fairplayer=artwork\"></iframe>",
|
5
|
+
"buy_url":"",
|
6
|
+
"comments_count":3,
|
7
|
+
"concatinated_genres":"Electronic",
|
8
|
+
"concatinated_tags":null,
|
9
|
+
"country_id":"FR",
|
10
|
+
"created_at":"2009-11-01 01:07:10 UTC",
|
11
|
+
"derived_by":null,
|
12
|
+
"derived_type":"original",
|
13
|
+
"description":"",
|
14
|
+
"downloadable":true,
|
15
|
+
"downloads_count":276,
|
16
|
+
"genres":["Electronic"],
|
17
|
+
"id":60526,
|
18
|
+
"isrc":null,
|
19
|
+
"label":"No Label",
|
20
|
+
"label_none":false,
|
21
|
+
"large_embed_code":"<iframe name=\"fairplayer\" width=\"220\" height=\"350\" scrolling=\"no\" frameborder=\"0\" src=\"http://official.fm/track/60526?fairplayer=large\"></iframe>",
|
22
|
+
"length":2694,
|
23
|
+
"license_type":1,
|
24
|
+
"lyrics":null,
|
25
|
+
"mini_embed_code":"<iframe name=\"fairplayer\" width=\"34\" height=\"18\" scrolling=\"no\" frameborder=\"0\" src=\"http://official.fm/track/60526?fairplayer=mini\"></iframe>",
|
26
|
+
"original_track_id":null,
|
27
|
+
"original_track_string":null,
|
28
|
+
"password":null,
|
29
|
+
"picture_absolute_url":"http://cdn.official.fm/track_pictures/60/60526_small.jpg",
|
30
|
+
"playlists_count":3,
|
31
|
+
"plays_count":716,
|
32
|
+
"pr_url":"",
|
33
|
+
"private":false,
|
34
|
+
"require_valid_email":false,
|
35
|
+
"small_embed_code":"<iframe name=\"fairplayer\" width=\"100%\" height=\"40\" scrolling=\"no\" frameborder=\"0\" src=\"http://official.fm/track/60526?fairplayer=small\"></iframe>",
|
36
|
+
"standard_embed_code":"<iframe name=\"fairplayer\" width=\"160\" height=\"240\" scrolling=\"no\" frameborder=\"0\" src=\"http://official.fm/track/60526?fairplayer=standard\"></iframe>",
|
37
|
+
"status":"Complete",
|
38
|
+
"tags":[],
|
39
|
+
"title":"QuelqueChosed'HasBeen",
|
40
|
+
"url_1":"",
|
41
|
+
"url_1_name":"",
|
42
|
+
"url_2":"",
|
43
|
+
"url_2_name":"",
|
44
|
+
"user_id":35966,
|
45
|
+
"votes_count":18,
|
46
|
+
"web_url":""
|
47
|
+
}
|
48
|
+
,
|
49
|
+
{
|
50
|
+
"artist_string":"Various Artist",
|
51
|
+
"artwork_embed_code":"<iframe name=\"fairplayer\" width=\"220\" height=\"220\" scrolling=\"no\" frameborder=\"0\" src=\"http://official.fm/track/48163?fairplayer=artwork\"></iframe>",
|
52
|
+
"buy_url":"",
|
53
|
+
"comments_count":2,
|
54
|
+
"concatinated_genres":"Electronic,Mixtape,Pop",
|
55
|
+
"concatinated_tags":null,
|
56
|
+
"country_id":"FR",
|
57
|
+
"created_at":"2009-08-08 16:12:33 UTC",
|
58
|
+
"derived_by":null,
|
59
|
+
"derived_type":"original",
|
60
|
+
"description":"",
|
61
|
+
"downloadable":true,
|
62
|
+
"downloads_count":591,
|
63
|
+
"genres":["Electronic","Mixtape","Pop"],
|
64
|
+
"id":48163,
|
65
|
+
"isrc":null,
|
66
|
+
"label":null,
|
67
|
+
"label_none":true,
|
68
|
+
"large_embed_code":"<iframe name=\"fairplayer\" width=\"220\" height=\"350\" scrolling=\"no\" frameborder=\"0\" src=\"http://official.fm/track/48163?fairplayer=large\"></iframe>",
|
69
|
+
"length":3482,
|
70
|
+
"license_type":1,
|
71
|
+
"lyrics":null,
|
72
|
+
"mini_embed_code":"<iframe name=\"fairplayer\" width=\"34\" height=\"18\" scrolling=\"no\" frameborder=\"0\" src=\"http://official.fm/track/48163?fairplayer=mini\"></iframe>",
|
73
|
+
"original_track_id":null,
|
74
|
+
"original_track_string":null,
|
75
|
+
"password":null,
|
76
|
+
"picture_absolute_url":"http://cdn.official.fm/track_pictures/48/48163_small.jpg",
|
77
|
+
"playlists_count":10,
|
78
|
+
"plays_count":896,
|
79
|
+
"pr_url":"",
|
80
|
+
"private":false,
|
81
|
+
"require_valid_email":false,
|
82
|
+
"small_embed_code":"<iframe name=\"fairplayer\" width=\"100%\" height=\"40\" scrolling=\"no\" frameborder=\"0\" src=\"http://official.fm/track/48163?fairplayer=small\"></iframe>",
|
83
|
+
"standard_embed_code":"<iframe name=\"fairplayer\" width=\"160\" height=\"240\" scrolling=\"no\" frameborder=\"0\" src=\"http://official.fm/track/48163?fairplayer=standard\"></iframe>",
|
84
|
+
"status":"Complete",
|
85
|
+
"tags":[],
|
86
|
+
"title":"SummerALaMode Mix by SALM",
|
87
|
+
"url_1":"",
|
88
|
+
"url_1_name":"",
|
89
|
+
"url_2":"",
|
90
|
+
"url_2_name":"",
|
91
|
+
"user_id":35966,
|
92
|
+
"votes_count":18,
|
93
|
+
"web_url":""
|
94
|
+
}
|
95
|
+
|
96
|
+
]
|
data/test/users_test.rb
CHANGED
@@ -36,6 +36,13 @@ class UsersTest < Test::Unit::TestCase
|
|
36
36
|
tracks[0].artist_string.should == 'Hercules and Love Affair'
|
37
37
|
end
|
38
38
|
|
39
|
+
should "retrieve the first two tracks nddrylliog has voted for" do
|
40
|
+
stub_get('http://api.official.fm/user/nddrylliog/voted_tracks?key=GNXbH3zYb25F1I7KVEEN&format=json&api_embed_codes=&api_max_responses=2', 'voted_tracks.json')
|
41
|
+
tracks = @client.voted_tracks('nddrylliog', :limit => 2)
|
42
|
+
tracks.size.should == 2
|
43
|
+
tracks[0].title.should == "QuelqueChosed'HasBeen"
|
44
|
+
end
|
45
|
+
|
39
46
|
should "retrieve the first two playlists of chab" do
|
40
47
|
stub_get('http://api.official.fm/user/chab/playlists?key=GNXbH3zYb25F1I7KVEEN&format=json&api_embed_codes=&api_max_responses=2', 'user_playlists.json')
|
41
48
|
playlists = @client.user_playlists('chab', :limit => 2)
|
@@ -44,6 +51,13 @@ class UsersTest < Test::Unit::TestCase
|
|
44
51
|
playlists[1].user_id.should == 8735 # chab's user id
|
45
52
|
end
|
46
53
|
|
54
|
+
should "retrieve the first two playlists bencolon has voted for" do
|
55
|
+
stub_get('http://api.official.fm/user/bencolon/voted_playlists?key=GNXbH3zYb25F1I7KVEEN&format=json&api_embed_codes=&api_max_responses=2', 'voted_playlists.json')
|
56
|
+
playlists = @client.voted_playlists('bencolon', :limit => 2)
|
57
|
+
playlists.size.should == 2
|
58
|
+
playlists[1].id.should == 50195
|
59
|
+
end
|
60
|
+
|
47
61
|
should "retrieve the first two contacts of chab" do
|
48
62
|
stub_get('http://api.official.fm/user/chab/contacts?key=GNXbH3zYb25F1I7KVEEN&format=json&api_max_responses=2', 'user_contacts.json')
|
49
63
|
contacts = @client.user_contacts('chab', :limit => 2)
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: officialfm
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.0.
|
5
|
+
version: 0.0.3
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Amos Wenger
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2011-
|
13
|
+
date: 2011-05-18 00:00:00 +02:00
|
14
14
|
default_executable:
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
@@ -161,6 +161,8 @@ files:
|
|
161
161
|
- test/fixtures/user_subscribers.json
|
162
162
|
- test/fixtures/user_subscriptions.json
|
163
163
|
- test/fixtures/user_tracks.json
|
164
|
+
- test/fixtures/voted_playlists.json
|
165
|
+
- test/fixtures/voted_tracks.json
|
164
166
|
- test/helper.rb
|
165
167
|
- test/playlists_test.rb
|
166
168
|
- test/tracks_test.rb
|
@@ -208,6 +210,8 @@ test_files:
|
|
208
210
|
- test/fixtures/user_subscribers.json
|
209
211
|
- test/fixtures/user_subscriptions.json
|
210
212
|
- test/fixtures/user_tracks.json
|
213
|
+
- test/fixtures/voted_playlists.json
|
214
|
+
- test/fixtures/voted_tracks.json
|
211
215
|
- test/helper.rb
|
212
216
|
- test/playlists_test.rb
|
213
217
|
- test/tracks_test.rb
|