ronnie 0.7.6
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +22 -0
- data/.rspec +2 -0
- data/.travis.yml +3 -0
- data/Gemfile +3 -0
- data/LICENSE +22 -0
- data/README.md +163 -0
- data/Rakefile +23 -0
- data/lib/faraday/response/raise_dio_error.rb +46 -0
- data/lib/ronnie/authentication.rb +33 -0
- data/lib/ronnie/client/albums.rb +50 -0
- data/lib/ronnie/client/artists.rb +23 -0
- data/lib/ronnie/client/collections/albums.rb +9 -0
- data/lib/ronnie/client/collections/artists.rb +9 -0
- data/lib/ronnie/client/collections.rb +85 -0
- data/lib/ronnie/client/playlists.rb +159 -0
- data/lib/ronnie/client/tracks.rb +32 -0
- data/lib/ronnie/client/users.rb +93 -0
- data/lib/ronnie/client.rb +39 -0
- data/lib/ronnie/configuration.rb +71 -0
- data/lib/ronnie/connection.rb +24 -0
- data/lib/ronnie/error.rb +34 -0
- data/lib/ronnie/request.rb +17 -0
- data/lib/ronnie/version.rb +3 -0
- data/lib/ronnie.rb +27 -0
- data/ronnie.gemspec +35 -0
- data/spec/faraday/response_spec.rb +0 -0
- data/spec/fixtures/cassettes/Ronnie_Client_Users/_add_playlists_to_collection/Add_Playlists_to_Collection/.yml +55 -0
- data/spec/fixtures/cassettes/Ronnie_Client_Users/_add_track_to_playlist/Add_Track_to_Playlist/.yml +61 -0
- data/spec/fixtures/cassettes/Ronnie_Client_Users/_add_tracks_to_collection/Add_Tracks_to_Collection/.yml +55 -0
- data/spec/fixtures/cassettes/Ronnie_Client_Users/_add_tracks_to_playlist/Add_Tracks_to_Playlist/.yml +61 -0
- data/spec/fixtures/cassettes/Ronnie_Client_Users/_album/Retrieve_Album/.yml +64 -0
- data/spec/fixtures/cassettes/Ronnie_Client_Users/_create_playlist/Create_a_Playlist/.yml +61 -0
- data/spec/fixtures/cassettes/Ronnie_Client_Users/_delete_playlist/Delete_a_Playlist/.yml +55 -0
- data/spec/fixtures/cassettes/Ronnie_Client_Users/_disable_collaboration/Disable_Collaboration/.yml +55 -0
- data/spec/fixtures/cassettes/Ronnie_Client_Users/_enable_public_collaboration/Enable_Public_Collaboration/.yml +55 -0
- data/spec/fixtures/cassettes/Ronnie_Client_Users/_enable_restricted_collaboration/Enable_Restricted_Collaboration/.yml +55 -0
- data/spec/fixtures/cassettes/Ronnie_Client_Users/_find_albums_by_artist/Find_Albums_by_Artist/.yml +260 -0
- data/spec/fixtures/cassettes/Ronnie_Client_Users/_find_albums_by_label/Find_Albums_by_Label/.yml +245 -0
- data/spec/fixtures/cassettes/Ronnie_Client_Users/_find_albums_by_upc/Find_Albums_by_UPC/.yml +55 -0
- data/spec/fixtures/cassettes/Ronnie_Client_Users/_find_artists_by_label/Find_Artists_by_Label/.yml +96 -0
- data/spec/fixtures/cassettes/Ronnie_Client_Users/_find_tracks_by_artist/Find_Tracks_by_Artist/.yml +156 -0
- data/spec/fixtures/cassettes/Ronnie_Client_Users/_find_tracks_by_isrc/Find_Tracks_by_ISRC/.yml +145 -0
- data/spec/fixtures/cassettes/Ronnie_Client_Users/_find_user/Find_User_by_E-mail_Address/.yml +58 -0
- data/spec/fixtures/cassettes/Ronnie_Client_Users/_follow/Follow_a_User/.yml +55 -0
- data/spec/fixtures/cassettes/Ronnie_Client_Users/_followers/Retrieve_Followers_of_Authorized_User/.yml +144 -0
- data/spec/fixtures/cassettes/Ronnie_Client_Users/_followers/Retrieve_Followers_of_a_User/.yml +58 -0
- data/spec/fixtures/cassettes/Ronnie_Client_Users/_following/Retrieve_Users_Following_Another_User/.yml +69 -0
- data/spec/fixtures/cassettes/Ronnie_Client_Users/_following/Retrieve_Users_Following_Authorized_User/.yml +144 -0
- data/spec/fixtures/cassettes/Ronnie_Client_Users/_follows_/Authorized_User_is_Following_a_User/.yml +144 -0
- data/spec/fixtures/cassettes/Ronnie_Client_Users/_playlist/Retrieve_Playlist/.yml +61 -0
- data/spec/fixtures/cassettes/Ronnie_Client_Users/_playlists/Retrieve_Playlists_by_Authorized_User/.yml +282 -0
- data/spec/fixtures/cassettes/Ronnie_Client_Users/_playlists/Retrieve_Playlists_by_User/.yml +67 -0
- data/spec/fixtures/cassettes/Ronnie_Client_Users/_playlists/Retrieve_Playlists_by_a_User/.yml +67 -0
- data/spec/fixtures/cassettes/Ronnie_Client_Users/_remove_playlists_from_collection/Remove_Playlists_from_Collection/.yml +55 -0
- data/spec/fixtures/cassettes/Ronnie_Client_Users/_remove_tracks_from_collection/Remove_Tracks_from_Collection/.yml +55 -0
- data/spec/fixtures/cassettes/Ronnie_Client_Users/_remove_tracks_from_playlist/Remove_Tracks_from_Playlist/.yml +61 -0
- data/spec/fixtures/cassettes/Ronnie_Client_Users/_search_albums/Search_Albums/.yml +95 -0
- data/spec/fixtures/cassettes/Ronnie_Client_Users/_search_artists/Search_Artists/.yml +66 -0
- data/spec/fixtures/cassettes/Ronnie_Client_Users/_search_playlists/Search_Playlists/.yml +110 -0
- data/spec/fixtures/cassettes/Ronnie_Client_Users/_search_tracks/Search_Tracks/.yml +65 -0
- data/spec/fixtures/cassettes/Ronnie_Client_Users/_search_users/Search_Users/.yml +64 -0
- data/spec/fixtures/cassettes/Ronnie_Client_Users/_sync_playlists/Sync_Playlists/.yml +55 -0
- data/spec/fixtures/cassettes/Ronnie_Client_Users/_sync_tracks/Sync_Tracks/.yml +55 -0
- data/spec/fixtures/cassettes/Ronnie_Client_Users/_unfollow/Unfollow_a_User/.yml +55 -0
- data/spec/fixtures/cassettes/Ronnie_Client_Users/_unsync_playlists/Unsync_Playlists/.yml +55 -0
- data/spec/fixtures/cassettes/Ronnie_Client_Users/_unsync_tracks/Unsync_Tracks/.yml +55 -0
- data/spec/fixtures/cassettes/Ronnie_Client_Users/_update_playlist/Update_Playlist/.yml +55 -0
- data/spec/fixtures/cassettes/Ronnie_Client_Users/_user/Retrieve_Authorized_User/.yml +58 -0
- data/spec/fixtures/cassettes/Ronnie_Client_Users/_user/Retrieve_User/.yml +58 -0
- data/spec/ronnie/client/albums_spec.rb +52 -0
- data/spec/ronnie/client/artists_spec.rb +28 -0
- data/spec/ronnie/client/collections_spec.rb +76 -0
- data/spec/ronnie/client/playlists_spec.rb +120 -0
- data/spec/ronnie/client/tracks_spec.rb +38 -0
- data/spec/ronnie/client/users_spec.rb +94 -0
- data/spec/ronnie/client_spec.rb +23 -0
- data/spec/ronnie_spec.rb +20 -0
- data/spec/spec_helper.rb +19 -0
- metadata +401 -0
@@ -0,0 +1,55 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: post
|
5
|
+
uri: http://api.rdio.com/1/
|
6
|
+
body:
|
7
|
+
encoding: US-ASCII
|
8
|
+
string: method=setAvailableOffline&keys=t15940486&offline=false
|
9
|
+
headers:
|
10
|
+
Authorization:
|
11
|
+
- OAuth oauth_consumer_key="ub9ebmvf7aee3pxcms9e5mh3", oauth_nonce="4262e005a788c75768343939b0a2f7ec",
|
12
|
+
oauth_signature="Kxi9uOKEJs1LLzWg0WAQdrIhR%2Fo%3D", oauth_signature_method="HMAC-SHA1",
|
13
|
+
oauth_timestamp="1350949219", oauth_token="ute6gf7jk4y5734hx42uxspfnhdkt42qt8habah6tkyvx4ay2xvhpt5faa2ddqc6",
|
14
|
+
oauth_version="1.0"
|
15
|
+
Content-Type:
|
16
|
+
- application/x-www-form-urlencoded
|
17
|
+
Accept:
|
18
|
+
- ! '*/*'
|
19
|
+
User-Agent:
|
20
|
+
- Ruby
|
21
|
+
response:
|
22
|
+
status:
|
23
|
+
code: 200
|
24
|
+
message: OK
|
25
|
+
headers:
|
26
|
+
X-Mashery-Responder:
|
27
|
+
- mashery-web3-lax.mashery.com
|
28
|
+
Content-Type:
|
29
|
+
- application/json
|
30
|
+
Connection:
|
31
|
+
- keep-alive
|
32
|
+
Content-Language:
|
33
|
+
- en
|
34
|
+
Vary:
|
35
|
+
- Accept-Language, Cookie
|
36
|
+
Cache-Control:
|
37
|
+
- no-cache
|
38
|
+
Access-Control-Allow-Origin:
|
39
|
+
- ! '*'
|
40
|
+
X-Version:
|
41
|
+
- '720'
|
42
|
+
Accept-Ranges:
|
43
|
+
- bytes
|
44
|
+
Content-Length:
|
45
|
+
- '32'
|
46
|
+
Date:
|
47
|
+
- Mon, 22 Oct 2012 23:40:11 GMT
|
48
|
+
Server:
|
49
|
+
- Mashery Proxy
|
50
|
+
body:
|
51
|
+
encoding: US-ASCII
|
52
|
+
string: ! '{"status": "ok", "result": true}'
|
53
|
+
http_version:
|
54
|
+
recorded_at: Mon, 22 Oct 2012 23:40:19 GMT
|
55
|
+
recorded_with: VCR 2.2.5
|
@@ -0,0 +1,55 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: post
|
5
|
+
uri: http://api.rdio.com/1/
|
6
|
+
body:
|
7
|
+
encoding: US-ASCII
|
8
|
+
string: method=setPlaylistFields&playlist=p1429320&name=updated+name&description=updated+description
|
9
|
+
headers:
|
10
|
+
Authorization:
|
11
|
+
- OAuth oauth_consumer_key="ub9ebmvf7aee3pxcms9e5mh3", oauth_nonce="c6ffeab740fe1194f4eab79d9eba661e",
|
12
|
+
oauth_signature="la%2Fwgp9OZ21hK8Ojv0ZxFhMgeFE%3D", oauth_signature_method="HMAC-SHA1",
|
13
|
+
oauth_timestamp="1350897369", oauth_token="ute6gf7jk4y5734hx42uxspfnhdkt42qt8habah6tkyvx4ay2xvhpt5faa2ddqc6",
|
14
|
+
oauth_version="1.0"
|
15
|
+
Content-Type:
|
16
|
+
- application/x-www-form-urlencoded
|
17
|
+
Accept:
|
18
|
+
- ! '*/*'
|
19
|
+
User-Agent:
|
20
|
+
- Ruby
|
21
|
+
response:
|
22
|
+
status:
|
23
|
+
code: 200
|
24
|
+
message: OK
|
25
|
+
headers:
|
26
|
+
X-Mashery-Responder:
|
27
|
+
- mashery-web4-lax.mashery.com
|
28
|
+
Content-Type:
|
29
|
+
- application/json
|
30
|
+
Connection:
|
31
|
+
- keep-alive
|
32
|
+
Content-Language:
|
33
|
+
- en
|
34
|
+
Vary:
|
35
|
+
- Accept-Language, Cookie
|
36
|
+
Cache-Control:
|
37
|
+
- no-cache
|
38
|
+
Access-Control-Allow-Origin:
|
39
|
+
- ! '*'
|
40
|
+
X-Version:
|
41
|
+
- '720'
|
42
|
+
Accept-Ranges:
|
43
|
+
- bytes
|
44
|
+
Content-Length:
|
45
|
+
- '32'
|
46
|
+
Date:
|
47
|
+
- Mon, 22 Oct 2012 09:16:04 GMT
|
48
|
+
Server:
|
49
|
+
- Mashery Proxy
|
50
|
+
body:
|
51
|
+
encoding: US-ASCII
|
52
|
+
string: ! '{"status": "ok", "result": true}'
|
53
|
+
http_version:
|
54
|
+
recorded_at: Mon, 22 Oct 2012 09:16:10 GMT
|
55
|
+
recorded_with: VCR 2.2.5
|
@@ -0,0 +1,58 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: post
|
5
|
+
uri: http://api.rdio.com/1/
|
6
|
+
body:
|
7
|
+
encoding: US-ASCII
|
8
|
+
string: method=currentUser
|
9
|
+
headers:
|
10
|
+
Authorization:
|
11
|
+
- OAuth oauth_consumer_key="ub9ebmvf7aee3pxcms9e5mh3", oauth_nonce="058f9687fa82d584ebaa8a1a6a8f3178",
|
12
|
+
oauth_signature="e8eIzwJXBeGgsGZ9FAner2tFaxc%3D", oauth_signature_method="HMAC-SHA1",
|
13
|
+
oauth_timestamp="1350881436", oauth_token="ute6gf7jk4y5734hx42uxspfnhdkt42qt8habah6tkyvx4ay2xvhpt5faa2ddqc6",
|
14
|
+
oauth_version="1.0"
|
15
|
+
Content-Type:
|
16
|
+
- application/x-www-form-urlencoded
|
17
|
+
Accept:
|
18
|
+
- ! '*/*'
|
19
|
+
User-Agent:
|
20
|
+
- Ruby
|
21
|
+
response:
|
22
|
+
status:
|
23
|
+
code: 200
|
24
|
+
message: OK
|
25
|
+
headers:
|
26
|
+
X-Mashery-Responder:
|
27
|
+
- mashery-web4-lax.mashery.com
|
28
|
+
Content-Type:
|
29
|
+
- application/json
|
30
|
+
Connection:
|
31
|
+
- keep-alive
|
32
|
+
Content-Language:
|
33
|
+
- en
|
34
|
+
Vary:
|
35
|
+
- Accept-Language, Cookie
|
36
|
+
Cache-Control:
|
37
|
+
- no-cache
|
38
|
+
Access-Control-Allow-Origin:
|
39
|
+
- ! '*'
|
40
|
+
X-Version:
|
41
|
+
- '720'
|
42
|
+
Accept-Ranges:
|
43
|
+
- bytes
|
44
|
+
Content-Length:
|
45
|
+
- '330'
|
46
|
+
Date:
|
47
|
+
- Mon, 22 Oct 2012 04:50:30 GMT
|
48
|
+
Server:
|
49
|
+
- Mashery Proxy
|
50
|
+
body:
|
51
|
+
encoding: US-ASCII
|
52
|
+
string: ! '{"status": "ok", "result": {"firstName": "Allen", "baseIcon": "user/3/2/8/000000000001b823/1/square-100.jpg",
|
53
|
+
"gender": "m", "url": "/people/allengoodman/", "key": "s112675", "lastName":
|
54
|
+
"Goodman", "libraryVersion": 280, "isProtected": false, "type": "s", "icon":
|
55
|
+
"http://cdn3.rd.io/user/3/2/8/000000000001b823/1/square-100.jpg"}}'
|
56
|
+
http_version:
|
57
|
+
recorded_at: Mon, 22 Oct 2012 04:50:36 GMT
|
58
|
+
recorded_with: VCR 2.2.5
|
@@ -0,0 +1,58 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: post
|
5
|
+
uri: http://api.rdio.com/1/
|
6
|
+
body:
|
7
|
+
encoding: US-ASCII
|
8
|
+
string: method=get&keys=s2913931
|
9
|
+
headers:
|
10
|
+
Authorization:
|
11
|
+
- OAuth oauth_consumer_key="ub9ebmvf7aee3pxcms9e5mh3", oauth_nonce="ed10631f209e412b1f03eaaf0fd97cbc",
|
12
|
+
oauth_signature="a25b87T0s9YM0risIYeBmbraFK8%3D", oauth_signature_method="HMAC-SHA1",
|
13
|
+
oauth_timestamp="1350881436", oauth_token="ute6gf7jk4y5734hx42uxspfnhdkt42qt8habah6tkyvx4ay2xvhpt5faa2ddqc6",
|
14
|
+
oauth_version="1.0"
|
15
|
+
Content-Type:
|
16
|
+
- application/x-www-form-urlencoded
|
17
|
+
Accept:
|
18
|
+
- ! '*/*'
|
19
|
+
User-Agent:
|
20
|
+
- Ruby
|
21
|
+
response:
|
22
|
+
status:
|
23
|
+
code: 200
|
24
|
+
message: OK
|
25
|
+
headers:
|
26
|
+
X-Mashery-Responder:
|
27
|
+
- mashery-web3-lax.mashery.com
|
28
|
+
Content-Type:
|
29
|
+
- application/json
|
30
|
+
Connection:
|
31
|
+
- keep-alive
|
32
|
+
Content-Language:
|
33
|
+
- en
|
34
|
+
Vary:
|
35
|
+
- Accept-Language, Cookie
|
36
|
+
Cache-Control:
|
37
|
+
- no-cache
|
38
|
+
Access-Control-Allow-Origin:
|
39
|
+
- ! '*'
|
40
|
+
X-Version:
|
41
|
+
- '720'
|
42
|
+
Accept-Ranges:
|
43
|
+
- bytes
|
44
|
+
Content-Length:
|
45
|
+
- '310'
|
46
|
+
Date:
|
47
|
+
- Mon, 22 Oct 2012 04:50:31 GMT
|
48
|
+
Server:
|
49
|
+
- Mashery Proxy
|
50
|
+
body:
|
51
|
+
encoding: US-ASCII
|
52
|
+
string: ! '{"status": "ok", "result": {"s2913931": {"firstName": "Jill", "baseIcon":
|
53
|
+
"user/no-user-image-square.jpg", "gender": "f", "url": "/people/JillSPeters/",
|
54
|
+
"key": "s2913931", "lastName": "Peters", "libraryVersion": 64, "isProtected":
|
55
|
+
null, "type": "s", "icon": "http://cdn3.rd.io/user/no-user-image-square.jpg"}}}'
|
56
|
+
http_version:
|
57
|
+
recorded_at: Mon, 22 Oct 2012 04:50:36 GMT
|
58
|
+
recorded_with: VCR 2.2.5
|
@@ -0,0 +1,52 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
require 'spec_helper'
|
3
|
+
|
4
|
+
describe Ronnie::Client::Users do
|
5
|
+
before do
|
6
|
+
@client = Ronnie::Client.new consumer_key: ENV['CONSUMER_KEY'],
|
7
|
+
consumer_secret: ENV['CONSUMER_SECRET']
|
8
|
+
|
9
|
+
@client.token = ENV['OAUTH_TOKEN']
|
10
|
+
@client.token_secret = ENV['OAUTH_TOKEN_SECRET']
|
11
|
+
end
|
12
|
+
|
13
|
+
describe '.album', :vcr do
|
14
|
+
context 'Retrieve Album' do
|
15
|
+
let(:album) { @client.album('a610550') }
|
16
|
+
|
17
|
+
it { expect(album['a610550'].name).to eq('Heaven Or Las Vegas') }
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
describe '.find_albums_by_artist', :vcr do
|
22
|
+
context 'Find Albums by Artist' do
|
23
|
+
let(:albums) { @client.find_albums_by_artist('r235282') }
|
24
|
+
|
25
|
+
it { expect(albums.first.name).to eq('Heaven Or Las Vegas') }
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
describe '.find_albums_by_label', :vcr do
|
30
|
+
context 'Find Albums by Label' do
|
31
|
+
let(:albums) { @client.find_albums_by_label('l2270') }
|
32
|
+
|
33
|
+
it { expect(albums.first.name).to eq('Odd Blood') }
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
# describe '.find_albums_by_upc', :vcr do
|
38
|
+
# context 'Find Albums by UPC' do
|
39
|
+
# let(:albums) { @client.find_albums_by_upc('652637001228') }
|
40
|
+
|
41
|
+
# it { expect(albums.first.name).to eq('Heaven Or Las Vegas') }
|
42
|
+
# end
|
43
|
+
# end
|
44
|
+
|
45
|
+
describe '.search_albums', :vcr do
|
46
|
+
context 'Search Albums' do
|
47
|
+
let(:albums) { @client.search_albums('Clear Moon') }
|
48
|
+
|
49
|
+
it { expect(albums[:results].first.name).to eq('Clear Moon') }
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
require 'spec_helper'
|
3
|
+
|
4
|
+
describe Ronnie::Client::Users do
|
5
|
+
before do
|
6
|
+
@client = Ronnie::Client.new consumer_key: ENV['CONSUMER_KEY'],
|
7
|
+
consumer_secret: ENV['CONSUMER_SECRET']
|
8
|
+
|
9
|
+
@client.token = ENV['OAUTH_TOKEN']
|
10
|
+
@client.token_secret = ENV['OAUTH_TOKEN_SECRET']
|
11
|
+
end
|
12
|
+
|
13
|
+
describe '.find_artists_by_label', :vcr do
|
14
|
+
context 'Find Artists by Label' do
|
15
|
+
let(:artists) { @client.find_artists_by_label('l2270') }
|
16
|
+
|
17
|
+
it { expect(artists.first.name).to eq('Yeasayer') }
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
describe '.search_artists', :vcr do
|
22
|
+
context 'Search Artists' do
|
23
|
+
let(:artists) { @client.search_artists('Mount Eerie') }
|
24
|
+
|
25
|
+
it { expect(artists[:results].first.name).to eq('Mount Eerie') }
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,76 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
require 'spec_helper'
|
3
|
+
|
4
|
+
describe Ronnie::Client::Users do
|
5
|
+
before do
|
6
|
+
@client = Ronnie::Client.new consumer_key: ENV['CONSUMER_KEY'],
|
7
|
+
consumer_secret: ENV['CONSUMER_SECRET']
|
8
|
+
|
9
|
+
@client.token = ENV['OAUTH_TOKEN']
|
10
|
+
@client.token_secret = ENV['OAUTH_TOKEN_SECRET']
|
11
|
+
end
|
12
|
+
|
13
|
+
describe '.add_playlists_to_collection', :vcr do
|
14
|
+
context 'Add Playlists to Collection' do
|
15
|
+
let(:collection) {@client.add_playlists_to_collection(['p1429320'])}
|
16
|
+
|
17
|
+
it { expect(collection).to eq(true) }
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
describe '.add_tracks_to_collection', :vcr do
|
22
|
+
context 'Add Tracks to Collection' do
|
23
|
+
let(:collection) {@client.add_tracks_to_collection(['t15940486'])}
|
24
|
+
|
25
|
+
it { expect(collection).to eq(true) }
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
describe '.remove_playlists_from_collection', :vcr do
|
30
|
+
context 'Remove Playlists from Collection' do
|
31
|
+
let(:collection) {@client.remove_playlists_from_collection(['p1429320'])}
|
32
|
+
|
33
|
+
it { expect(collection).to eq(true) }
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
describe '.remove_tracks_from_collection', :vcr do
|
38
|
+
context 'Remove Tracks from Collection' do
|
39
|
+
let(:collection) {@client.remove_tracks_from_collection(['t15940486'])}
|
40
|
+
|
41
|
+
it { expect(collection).to eq(true) }
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
describe '.sync_playlists', :vcr do
|
46
|
+
context 'Sync Playlists' do
|
47
|
+
let(:collection) {@client.sync_playlists(['p1429320'])}
|
48
|
+
|
49
|
+
it { expect(collection).to eq(true) }
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
describe '.sync_tracks', :vcr do
|
54
|
+
context 'Sync Tracks' do
|
55
|
+
let(:collection) {@client.sync_tracks(['t15940486'])}
|
56
|
+
|
57
|
+
it { expect(collection).to eq(true) }
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
describe '.unsync_playlists', :vcr do
|
62
|
+
context 'Unsync Playlists' do
|
63
|
+
let(:collection) {@client.unsync_playlists(['p1429320'])}
|
64
|
+
|
65
|
+
it { expect(collection).to eq(true) }
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
describe '.unsync_tracks', :vcr do
|
70
|
+
context 'Unsync Tracks' do
|
71
|
+
let(:collection) {@client.unsync_playlists(['t15940486'])}
|
72
|
+
|
73
|
+
it { expect(collection).to eq(true) }
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
@@ -0,0 +1,120 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
require 'spec_helper'
|
3
|
+
|
4
|
+
describe Ronnie::Client::Users do
|
5
|
+
before do
|
6
|
+
@client = Ronnie::Client.new consumer_key: ENV['CONSUMER_KEY'],
|
7
|
+
consumer_secret: ENV['CONSUMER_SECRET']
|
8
|
+
|
9
|
+
@client.token = ENV['OAUTH_TOKEN']
|
10
|
+
@client.token_secret = ENV['OAUTH_TOKEN_SECRET']
|
11
|
+
end
|
12
|
+
|
13
|
+
describe '.playlists', :vcr do
|
14
|
+
context 'Retrieve Playlists by a User' do
|
15
|
+
let(:playlists) { @client.playlists('s1678190') }
|
16
|
+
|
17
|
+
it { expect(playlists[:collab].first.owner).to eq('Allen Goodman') }
|
18
|
+
end
|
19
|
+
|
20
|
+
context 'Retrieve Playlists by Authorized User' do
|
21
|
+
let(:playlists) { @client.playlists }
|
22
|
+
|
23
|
+
it { expect(playlists[:owned].last.name).to eq('Last Train') }
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
describe '.search_playlists', :vcr do
|
28
|
+
context 'Search Playlists' do
|
29
|
+
let(:playlists) { @client.search_playlists('AirR&B&B') }
|
30
|
+
|
31
|
+
it { expect(playlists[:results].first[:key]).to eq('p882620') }
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
describe '.playlist', :vcr do
|
36
|
+
context 'Retrieve Playlist' do
|
37
|
+
let(:playlist) { @client.playlist('p87188') }
|
38
|
+
|
39
|
+
it { expect(playlist['p87188'].name).to eq('Families in Torment') }
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
describe '.update_playlist', :vcr do
|
44
|
+
context 'Update Playlist' do
|
45
|
+
let(:playlist) {
|
46
|
+
@client.update_playlist(
|
47
|
+
'p1429320', 'updated name', 'updated description'
|
48
|
+
)
|
49
|
+
}
|
50
|
+
|
51
|
+
it { expect(playlist).to eq(true) }
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
describe '.add_tracks_to_playlist', :vcr do
|
56
|
+
context 'Add Tracks to Playlist' do
|
57
|
+
let(:playlist) {
|
58
|
+
@client.add_tracks_to_playlist(['t15940486'], 'p1429320')
|
59
|
+
}
|
60
|
+
|
61
|
+
it { expect(playlist[:key]).to eq('p1429320') }
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
describe '.remove_tracks_from_playlist', :vcr do
|
66
|
+
context 'Remove Tracks from Playlist' do
|
67
|
+
let(:playlist) {
|
68
|
+
@client.remove_tracks_from_playlist(
|
69
|
+
['t15940486'], 0, 1, 'p1429320'
|
70
|
+
)
|
71
|
+
}
|
72
|
+
|
73
|
+
it { expect(playlist[:key]).to eq('p1429320') }
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
describe '.enable_public_collaboration', :vcr do
|
78
|
+
context 'Enable Public Collaboration' do
|
79
|
+
let (:playlist) { @client.enable_public_collaboration('p1429320') }
|
80
|
+
|
81
|
+
it { expect(playlist).to eq(true) }
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
describe '.enable_restricted_collaboration', :vcr do
|
86
|
+
context 'Enable Restricted Collaboration' do
|
87
|
+
let (:playlist) { @client.enable_restricted_collaboration('p1429320') }
|
88
|
+
|
89
|
+
it { expect(playlist).to eq(true) }
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
describe '.disable_collaboration', :vcr do
|
94
|
+
context 'Disable Collaboration' do
|
95
|
+
let (:playlist) { @client.disable_collaboration('p1429320') }
|
96
|
+
|
97
|
+
it { expect(playlist).to eq(true) }
|
98
|
+
end
|
99
|
+
end
|
100
|
+
|
101
|
+
describe '.create_playlist', :vcr do
|
102
|
+
context 'Create a Playlist' do
|
103
|
+
let(:playlist) {
|
104
|
+
@client.create_playlist(
|
105
|
+
'example name', 'example description', ['t20680151', 't20680150']
|
106
|
+
)
|
107
|
+
}
|
108
|
+
|
109
|
+
it { expect(playlist.name).to eq('example name') }
|
110
|
+
end
|
111
|
+
end
|
112
|
+
|
113
|
+
describe '.delete_playlist', :vcr do
|
114
|
+
context 'Delete a Playlist' do
|
115
|
+
let(:playlist) { @client.delete_playlist('p1431248') }
|
116
|
+
|
117
|
+
it { expect(playlist).to eq(true) }
|
118
|
+
end
|
119
|
+
end
|
120
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
require 'spec_helper'
|
3
|
+
|
4
|
+
describe Ronnie::Client::Users do
|
5
|
+
before do
|
6
|
+
@client = Ronnie::Client.new consumer_key: ENV['CONSUMER_KEY'],
|
7
|
+
consumer_secret: ENV['CONSUMER_SECRET']
|
8
|
+
|
9
|
+
@client.token = ENV['OAUTH_TOKEN']
|
10
|
+
@client.token_secret = ENV['OAUTH_TOKEN_SECRET']
|
11
|
+
end
|
12
|
+
|
13
|
+
describe '.find_tracks_by_artist', :vcr do
|
14
|
+
context 'Find Tracks by Artist' do
|
15
|
+
let(:tracks) { @client.find_tracks_by_artist('r235282') }
|
16
|
+
|
17
|
+
it { expect(tracks.first.name).to eq('Cherry-coloured Funk') }
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
describe '.find_tracks_by_isrc', :vcr do
|
22
|
+
context 'Find Tracks by ISRC' do
|
23
|
+
let(:tracks) { @client.find_tracks_by_isrc('GBAYE0200771') }
|
24
|
+
|
25
|
+
it { expect(tracks.first.name).to eq('Clocks') }
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
describe '.search_tracks', :vcr do
|
30
|
+
context 'Search Tracks' do
|
31
|
+
let(:tracks) { @client.search_tracks('Through The Trees pt. 2') }
|
32
|
+
|
33
|
+
it do
|
34
|
+
expect(tracks[:results].first.name).to eq('Through The Trees pt. 2')
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,94 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
require 'spec_helper'
|
3
|
+
|
4
|
+
describe Ronnie::Client::Users do
|
5
|
+
before do
|
6
|
+
@client = Ronnie::Client.new consumer_key: ENV['CONSUMER_KEY'],
|
7
|
+
consumer_secret: ENV['CONSUMER_SECRET']
|
8
|
+
|
9
|
+
@client.token = ENV['OAUTH_TOKEN']
|
10
|
+
@client.token_secret = ENV['OAUTH_TOKEN_SECRET']
|
11
|
+
end
|
12
|
+
|
13
|
+
describe '.user', :vcr do
|
14
|
+
context 'Retrieve User' do
|
15
|
+
let(:user) { @client.user('s2913931') }
|
16
|
+
|
17
|
+
it { expect(user['s2913931'].firstName).to eq('Jill') }
|
18
|
+
end
|
19
|
+
|
20
|
+
context 'Retrieve Authorized User' do
|
21
|
+
let(:user) { @client.user }
|
22
|
+
|
23
|
+
it { expect(user.firstName).to eq('Allen') }
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
describe '.find_user', :vcr do
|
28
|
+
context 'Find User by E-mail Address' do
|
29
|
+
let(:user) { @client.find_user('allen.goodman@me.com') }
|
30
|
+
|
31
|
+
it { expect(user.firstName).to eq('Allen') }
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
describe '.search_users', :vcr do
|
36
|
+
context 'Search Users' do
|
37
|
+
let(:users) { @client.search_users('Allen Goodman') }
|
38
|
+
|
39
|
+
it { expect(users[:results].last[:key]).to eq('s112675') }
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
describe ".followers", :vcr do
|
44
|
+
context 'Retrieve Followers of a User' do
|
45
|
+
let(:followers) { @client.followers('s2913931') }
|
46
|
+
|
47
|
+
it { expect(followers.first.firstName).to eq('Jay') }
|
48
|
+
end
|
49
|
+
|
50
|
+
context 'Retrieve Followers of Authorized User' do
|
51
|
+
let(:followers) { @client.followers }
|
52
|
+
|
53
|
+
it { expect(followers.first.firstName).to eq('Jill') }
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
describe '.following', :vcr do
|
58
|
+
context 'Retrieve Users Following Another User' do
|
59
|
+
let(:following) { @client.following('s2913931') }
|
60
|
+
|
61
|
+
it { expect(following.first.firstName).to eq('The A.V.') }
|
62
|
+
end
|
63
|
+
|
64
|
+
context 'Retrieve Users Following Authorized User' do
|
65
|
+
let(:following) { @client.following }
|
66
|
+
|
67
|
+
it { expect(following.first.firstName).to eq('Dan') }
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
describe '.follows?', :vcr do
|
72
|
+
context 'Authorized User is Following a User' do
|
73
|
+
let(:follows) { @client.follows?('s2684102') }
|
74
|
+
|
75
|
+
it { expect(follows).to eq(true) }
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
describe '.follow', :vcr do
|
80
|
+
context 'Follow a User' do
|
81
|
+
let(:follow) { @client.follow('s2913931') }
|
82
|
+
|
83
|
+
it { expect(follow).to be_true }
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
describe '.unfollow', :vcr do
|
88
|
+
let(:unfollow) { @client.unfollow('s2913931') }
|
89
|
+
|
90
|
+
context 'Unfollow a User' do
|
91
|
+
it { expect(unfollow).to be_true }
|
92
|
+
end
|
93
|
+
end
|
94
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Ronnie::Client do
|
4
|
+
describe '.api_endpoint' do
|
5
|
+
after(:each) do
|
6
|
+
Ronnie.reset
|
7
|
+
end
|
8
|
+
|
9
|
+
it 'defaults to http://api.rdio.com/' do
|
10
|
+
client = Ronnie::Client.new
|
11
|
+
|
12
|
+
expect(client.api_endpoint).to eq('http://api.rdio.com/')
|
13
|
+
end
|
14
|
+
|
15
|
+
it 'is configurable' do
|
16
|
+
Ronnie.api_endpoint = 'http://localhost/'
|
17
|
+
|
18
|
+
client = Ronnie::Client.new
|
19
|
+
|
20
|
+
expect(client.api_endpoint).to eq('http://localhost/')
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
data/spec/ronnie_spec.rb
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
require 'spec_helper'
|
3
|
+
|
4
|
+
describe Ronnie do
|
5
|
+
after do
|
6
|
+
Ronnie.reset
|
7
|
+
end
|
8
|
+
|
9
|
+
describe '.respond_to?' do
|
10
|
+
it 'is true if method exists' do
|
11
|
+
expect(Ronnie.respond_to?(:new, true)).to be_true
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
describe '.new' do
|
16
|
+
it 'is a Ronnie::Client' do
|
17
|
+
expect(Ronnie.new).to be_a Ronnie::Client
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|