lastfm 1.6.1 → 1.7.0

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/README.rdoc CHANGED
@@ -11,11 +11,14 @@ A Ruby interface for Last.fm Web Services v2.0
11
11
 
12
12
  # open 'http://www.last.fm/api/auth/?api_key=xxxxxxxxxxx&token=xxxxxxxx' and grant the application
13
13
 
14
- lastfm.session = lastfm.auth.get_session(token)['key']
14
+ lastfm.session = lastfm.auth.get_session(:token => token)['key']
15
15
 
16
+ lastfm.track.love(:artist => 'Hujiko Pro', :track => 'acid acid 7riddim')
17
+ lastfm.track.scrobble(:artist => 'Hujiko Pro', :track => 'acid acid 7riddim')
18
+ lastfm.track.update_now_playing(:artist => 'Hujiko Pro', :track => 'acid acid 7riddim')
19
+
20
+ # deprecated style
16
21
  lastfm.track.love('Hujiko Pro', 'acid acid 7riddim')
17
- lastfm.track.scrobble('Hujiko Pro', 'acid acid 7riddim')
18
- lastfm.track.update_now_playing('Hujiko Pro', 'acid acid 7riddim')
19
22
 
20
23
  == Supported API Methods
21
24
 
data/lastfm.gemspec CHANGED
@@ -12,7 +12,7 @@ Gem::Specification.new do |gem|
12
12
  gem.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
13
13
  gem.name = %q{lastfm}
14
14
  gem.require_paths = ["lib"]
15
- gem.version = "1.6.1"
15
+ gem.version = "1.7.0"
16
16
 
17
17
  gem.add_dependency "xml-simple"
18
18
  gem.add_dependency "httparty"
data/lib/lastfm/util.rb CHANGED
@@ -5,11 +5,31 @@ class Lastfm
5
5
  end
6
6
 
7
7
  def self.build_options(args, mandatory, optional)
8
+ if args.first.is_a?(Hash)
9
+ build_options_from_hash(args.first, mandatory, optional)
10
+ else
11
+ build_options_from_array(args, mandatory, optional)
12
+ end
13
+ end
14
+
15
+ def self.build_options_from_hash(options, mandatory, optional)
16
+ mandatory.each do |name|
17
+ raise ArgumentError.new("%s is required" % name) unless options[name]
18
+ end
19
+
20
+ optional.each do |name, value|
21
+ options[name] ||= value.kind_of?(Proc) ? value.call : value
22
+ end
23
+
24
+ options
25
+ end
26
+
27
+ def self.build_options_from_array(values, mandatory, optional)
8
28
  options = {}
9
29
 
10
30
  mandatory.each_with_index do |name, index|
11
- raise ArgumentError.new('%s is required' % name) unless args[index]
12
- options[name] = args[index]
31
+ raise ArgumentError.new('%s is required' % name) unless values[index]
32
+ options[name] = values[index]
13
33
  end
14
34
 
15
35
  optional.each_with_index do |name, index|
@@ -17,7 +37,7 @@ class Lastfm
17
37
  if value.kind_of?(Proc)
18
38
  value = value.call
19
39
  end
20
- options[name[0]] = args[index + mandatory.size] || value
40
+ options[name[0]] = values[index + mandatory.size] || value
21
41
  end
22
42
 
23
43
  options
@@ -13,7 +13,7 @@ describe '#album' do
13
13
  :artist => 'Cher', :album => 'Believe'
14
14
  }).and_return(make_response('album_get_info'))
15
15
 
16
- album = @lastfm.album.get_info('Cher', 'Believe')
16
+ album = @lastfm.album.get_info(:artist => 'Cher', :album => 'Believe')
17
17
  album['name'].should == 'Believe'
18
18
  album['artist'].should == 'Cher'
19
19
  album['id'].should == '2026126'
@@ -13,7 +13,7 @@ describe '#artist' do
13
13
  :artist => 'Cher'
14
14
  }).and_return(make_response('artist_get_info'))
15
15
 
16
- artist = @lastfm.artist.get_info('Cher')
16
+ artist = @lastfm.artist.get_info(:artist => 'Cher')
17
17
  artist['name'].should == 'Cher'
18
18
  artist['mbid'].should == 'bfcc6d75-a6a5-4bc6-8282-47aec8531818'
19
19
  artist['url'].should == 'http://www.last.fm/music/Cher'
@@ -27,7 +27,7 @@ describe '#artist' do
27
27
  :artist => 'Cher'
28
28
  }).and_return(make_response('artist_get_events'))
29
29
 
30
- events = @lastfm.artist.get_events('Cher')
30
+ events = @lastfm.artist.get_events(:artist => 'Cher')
31
31
  events.size.should == 1
32
32
  events[0]['title'].should == 'Cher'
33
33
  events[0]['artists'].size.should == 2
@@ -51,7 +51,7 @@ describe '#artist' do
51
51
  :artist => 'kid606'
52
52
  }).and_return(make_response('artist_get_similar'))
53
53
 
54
- artists = @lastfm.artist.get_similar('kid606')
54
+ artists = @lastfm.artist.get_similar(:artist => 'kid606')
55
55
  artists.size.should == 2
56
56
  artists[1]['name'].should == 'Venetian Snares'
57
57
  artists[1]['mbid'].should == '56abaa47-0101-463b-b37e-e961136fec39'
@@ -60,7 +60,7 @@ describe '#artist' do
60
60
  artists[1]['image'].should == ['http://userserve-ak.last.fm/serve/160/211799.jpg']
61
61
  end
62
62
  end
63
-
63
+
64
64
  describe '#get_tags' do
65
65
  it 'should get artist tags' do
66
66
  @lastfm.should_receive(:request).with('artist.getTags', {
@@ -70,7 +70,7 @@ describe '#artist' do
70
70
  :autocorrect => nil
71
71
  }).and_return(make_response('artist_get_tags'))
72
72
 
73
- tags = @lastfm.artist.get_tags('zebrahead', 'test')
73
+ tags = @lastfm.artist.get_tags(:artist => 'zebrahead', :user => 'test')
74
74
  tags.size.should == 2
75
75
  tags[0]['name'].should == 'punk'
76
76
  tags[1]['name'].should == 'Awesome'
@@ -85,7 +85,7 @@ describe '#artist' do
85
85
  :page => 3,
86
86
  }).and_return(make_response('artist_search'))
87
87
 
88
- tracks = @lastfm.artist.search('RADWIMPS', 10, 3)
88
+ tracks = @lastfm.artist.search(:artist => 'RADWIMPS', :limit => 10, :page => 3)
89
89
  tracks['results']['for'].should == 'RADWIMPS'
90
90
  tracks['results']['totalResults'].should == '3'
91
91
  tracks['results']['artistmatches']['artist'].size.should == 3
@@ -10,8 +10,8 @@ describe '#event' do
10
10
  @lastfm.should_receive(:request).with('event.getInfo', {
11
11
  :event => 1073657
12
12
  }).and_return(make_response('event_get_info'))
13
- info = @lastfm.event.get_info(1073657)
13
+ info = @lastfm.event.get_info(:event => 1073657)
14
14
  info['title'].should == 'Neko Case'
15
15
  end
16
16
  end
17
- end
17
+ end
@@ -16,7 +16,7 @@ describe '#geo' do
16
16
  :page => nil
17
17
  }).and_return(make_response('geo_get_events'))
18
18
 
19
- events = @lastfm.geo.get_events('Boulder')
19
+ events = @lastfm.geo.get_events(:location => 'Boulder')
20
20
  events.size.should == 1
21
21
  events[0]['title'].should == 'Transistor Festival'
22
22
  events[0]['artists'].size.should == 2
@@ -16,7 +16,7 @@ describe '#library' do
16
16
  :limit => nil,
17
17
  :page => nil
18
18
  }).and_return(make_response('library_get_tracks'))
19
- tracks = @lastfm.library.get_tracks('test', 'foo', 'bar')
19
+ tracks = @lastfm.library.get_tracks(:user => 'test', :artist => 'foo', :album => 'bar')
20
20
  tracks[0]['name'].should == 'Learning to Live'
21
21
  tracks.size.should == 1
22
22
  end
@@ -29,7 +29,7 @@ describe '#library' do
29
29
  :limit => nil,
30
30
  :page => nil
31
31
  }).and_return(make_response('library_get_artists'))
32
- artists = @lastfm.library.get_artists('test')
32
+ artists = @lastfm.library.get_artists(:user => 'test')
33
33
  artists[1]['name'].should == 'Dark Castle'
34
34
  artists.size.should == 2
35
35
  end
@@ -15,7 +15,7 @@ describe '#tag' do
15
15
  :page => nil
16
16
  }).and_return(make_response('tag_get_top_artists'))
17
17
 
18
- artists = @lastfm.tag.get_top_artists('Disco')
18
+ artists = @lastfm.tag.get_top_artists(:tag => 'Disco')
19
19
  artists.size.should == 5
20
20
  artists[0]['name'].should == 'Bee Gees'
21
21
  artists[0]['url'].should == 'http://www.last.fm/music/Bee+Gees'
@@ -15,7 +15,11 @@ describe '#track' do
15
15
  :tags => 'aaa,bbb,ccc'
16
16
  }, :post, true, true).and_return(@ok_response)
17
17
 
18
- @lastfm.track.add_tags('foo artist', 'foo track', 'aaa,bbb,ccc').should be_true
18
+ @lastfm.track.add_tags(
19
+ :artist => 'foo artist',
20
+ :track => 'foo track',
21
+ :tags => 'aaa,bbb,ccc'
22
+ ).should be_true
19
23
  end
20
24
  end
21
25
 
@@ -26,7 +30,7 @@ describe '#track' do
26
30
  :track => 'foo track',
27
31
  }, :post, true, true).and_return(@ok_response)
28
32
 
29
- @lastfm.track.ban('foo artist', 'foo track').should be_true
33
+ @lastfm.track.ban(:artist => 'foo artist', :track => 'foo track').should be_true
30
34
  end
31
35
  end
32
36
 
@@ -38,7 +42,10 @@ describe '#track' do
38
42
  :username => 'youpy',
39
43
  }).and_return(make_response('track_get_info'))
40
44
 
41
- track = @lastfm.track.get_info('Cher', 'Believe', 'youpy')
45
+ track = @lastfm.track.get_info(
46
+ :artist => 'Cher',
47
+ :track => 'Believe',
48
+ :username => 'youpy')
42
49
  track['name'].should == 'Believe'
43
50
  track['album']['image'].size.should == 4
44
51
  track['album']['image'].first['size'].should == 'small'
@@ -54,7 +61,10 @@ describe '#track' do
54
61
  :username => 'youpy',
55
62
  }).and_return(make_response('track_get_info_force_array'))
56
63
 
57
- track = @lastfm.track.get_info('Cher', 'Believe', 'youpy')
64
+ track = @lastfm.track.get_info(
65
+ :artist => 'Cher',
66
+ :track => 'Believe',
67
+ :username => 'youpy')
58
68
  track['album']['image'].size.should == 1
59
69
  track['album']['image'].first['size'].should == 'small'
60
70
  track['album']['image'].first['content'].should == 'http://userserve-ak.last.fm/serve/64s/8674593.jpg'
@@ -70,7 +80,9 @@ describe '#track' do
70
80
  :track => 'One More Cup of Coffee'
71
81
  }).and_return(make_response('track_get_correction'))
72
82
 
73
- corrections = @lastfm.track.get_correction('White Stripes', 'One More Cup of Coffee')
83
+ corrections = @lastfm.track.get_correction(
84
+ :artist => 'White Stripes',
85
+ :track => 'One More Cup of Coffee')
74
86
  correction = corrections.first
75
87
 
76
88
  corrections.size.should eql(1)
@@ -87,7 +99,9 @@ describe '#track' do
87
99
  :track => 'Believe',
88
100
  }).and_return(make_response('track_get_similar'))
89
101
 
90
- tracks = @lastfm.track.get_similar('Cher', 'Believe')
102
+ tracks = @lastfm.track.get_similar(
103
+ :artist => 'Cher',
104
+ :track => 'Believe')
91
105
  tracks.size.should == 5
92
106
  tracks.first['name'].should == 'Strong Enough'
93
107
  tracks.first['image'][1]['content'].should == 'http://userserve-ak.last.fm/serve/64s/8674593.jpg'
@@ -102,7 +116,9 @@ describe '#track' do
102
116
  :track => 'foo track',
103
117
  }, :get, true, true).and_return(make_response('track_get_tags'))
104
118
 
105
- tags = @lastfm.track.get_tags('foo artist', 'foo track')
119
+ tags = @lastfm.track.get_tags(
120
+ :artist => 'foo artist',
121
+ :track => 'foo track')
106
122
  tags.size.should == 2
107
123
  tags[0]['name'].should == 'swedish'
108
124
  tags[0]['url'].should == 'http://www.last.fm/tag/swedish'
@@ -116,7 +132,9 @@ describe '#track' do
116
132
  :track => 'foo track',
117
133
  }).and_return(make_response('track_get_top_fans'))
118
134
 
119
- users = @lastfm.track.get_top_fans('foo artist', 'foo track')
135
+ users = @lastfm.track.get_top_fans(
136
+ :artist => 'foo artist',
137
+ :track => 'foo track')
120
138
  users.size.should == 2
121
139
  users[0]['name'].should == 'Through0glass'
122
140
  end
@@ -129,7 +147,9 @@ describe '#track' do
129
147
  :track => 'foo track',
130
148
  }).and_return(make_response('track_get_top_tags'))
131
149
 
132
- tags = @lastfm.track.get_top_tags('foo artist', 'foo track')
150
+ tags = @lastfm.track.get_top_tags(
151
+ :artist => 'foo artist',
152
+ :track => 'foo track')
133
153
  tags.size.should == 2
134
154
  tags[0]['name'].should == 'alternative'
135
155
  tags[0]['count'].should == '100'
@@ -144,7 +164,9 @@ describe '#track' do
144
164
  :track => 'foo track',
145
165
  }, :post, true, true).and_return(@ok_response)
146
166
 
147
- @lastfm.track.love('foo artist', 'foo track').should be_true
167
+ @lastfm.track.love(
168
+ :artist => 'foo artist',
169
+ :track => 'foo track').should be_true
148
170
  end
149
171
  end
150
172
 
@@ -156,7 +178,10 @@ describe '#track' do
156
178
  :tag => 'aaa'
157
179
  }, :post, true, true).and_return(@ok_response)
158
180
 
159
- @lastfm.track.remove_tag('foo artist', 'foo track', 'aaa').should be_true
181
+ @lastfm.track.remove_tag(
182
+ :artist => 'foo artist',
183
+ :track => 'foo track',
184
+ :tag => 'aaa').should be_true
160
185
  end
161
186
  end
162
187
 
@@ -169,7 +194,10 @@ describe '#track' do
169
194
  :page => 3,
170
195
  }).and_return(make_response('track_search'))
171
196
 
172
- tracks = @lastfm.track.search('Believe', nil, 10, 3)
197
+ tracks = @lastfm.track.search(
198
+ :track => 'Believe',
199
+ :limit => 10,
200
+ :page => 3)
173
201
  tracks['results']['for'].should == 'Believe'
174
202
  tracks['results']['totalResults'].should == '40540'
175
203
  tracks['results']['trackmatches']['track'].size.should == 2
@@ -186,7 +214,11 @@ describe '#track' do
186
214
  :recipient => 'foo@example.com',
187
215
  }, :post, true, true).and_return(@ok_response)
188
216
 
189
- @lastfm.track.share('foo artist', 'foo track', 'foo@example.com', 'this is a message').should be_true
217
+ @lastfm.track.share(
218
+ :artist => 'foo artist',
219
+ :track => 'foo track',
220
+ :recipient => 'foo@example.com',
221
+ :message => 'this is a message').should be_true
190
222
  end
191
223
  end
192
224
 
@@ -204,7 +236,13 @@ describe '#track' do
204
236
  :albumArtist => nil,
205
237
  }, :post, true, true).and_return(@ok_response)
206
238
 
207
- @lastfm.track.scrobble('foo artist', 'foo track', time, 'foo album', 1, '0383dadf-2a4e-4d10-a46a-e9e041da8eb3', nil, nil)
239
+ @lastfm.track.scrobble(
240
+ :artist => 'foo artist',
241
+ :track => 'foo track',
242
+ :timestamp => time,
243
+ :album => 'foo album',
244
+ :trackNumber => 1,
245
+ :mbid => '0383dadf-2a4e-4d10-a46a-e9e041da8eb3')
208
246
  end
209
247
  end
210
248
 
@@ -220,7 +258,12 @@ describe '#track' do
220
258
  :albumArtist => nil,
221
259
  }, :post, true, true).and_return(@ok_response)
222
260
 
223
- @lastfm.track.update_now_playing('foo artist', 'foo track', 'foo album', 1, '0383dadf-2a4e-4d10-a46a-e9e041da8eb3', nil, nil)
261
+ @lastfm.track.update_now_playing(
262
+ :artist =>'foo artist',
263
+ :track => 'foo track',
264
+ :album => 'foo album',
265
+ :trackNumber => 1,
266
+ :mbid => '0383dadf-2a4e-4d10-a46a-e9e041da8eb3')
224
267
  end
225
268
  end
226
269
 
@@ -231,7 +274,9 @@ describe '#track' do
231
274
  :track => 'foo track',
232
275
  }, :post, true, true).and_return(@ok_response)
233
276
 
234
- @lastfm.track.unlove('foo artist', 'foo track').should be_true
277
+ @lastfm.track.unlove(
278
+ :artist => 'foo artist',
279
+ :track => 'foo track').should be_true
235
280
  end
236
281
  end
237
282
  end
@@ -10,7 +10,7 @@ describe '#user' do
10
10
  describe '#get_info' do
11
11
  it 'should get user info' do
12
12
  @lastfm.should_receive(:request).with('user.getInfo', {:user => 'test'}).and_return(make_response('user_get_info'))
13
- info = @lastfm.user.get_info('test')
13
+ info = @lastfm.user.get_info(:user => 'test')
14
14
  info['id'].should == '1000002'
15
15
  end
16
16
  end
@@ -24,7 +24,9 @@ describe '#user' do
24
24
  :page => nil
25
25
  }).and_return(make_response('user_get_top_artists'))
26
26
 
27
- artists = @lastfm.user.get_top_artists('test', 'overall', nil, nil)
27
+ artists = @lastfm.user.get_top_artists(
28
+ :user => 'test',
29
+ :period => 'overall')
28
30
 
29
31
  artists.size.should == 3
30
32
  artists[0]['name'].should == 'Pain of Salvation'
@@ -37,7 +39,7 @@ describe '#user' do
37
39
  artists[2]['playcount'].should == '959'
38
40
  end
39
41
  end
40
-
42
+
41
43
  describe '#get_personal_tags' do
42
44
  it 'should get user\'s tagged artists' do
43
45
  @lastfm.should_receive(:request).with('user.getPersonalTags', {
@@ -48,7 +50,9 @@ describe '#user' do
48
50
  :page => nil
49
51
  }).and_return(make_response('user_get_personal_tags_artists'))
50
52
 
51
- artists = @lastfm.user.get_personal_tags('test', 'rock')
53
+ artists = @lastfm.user.get_personal_tags(
54
+ :user => 'test',
55
+ :tag => 'rock')
52
56
  artists[0]['name'].should == 'Afghan Whigs'
53
57
  artists[0]['url'].should == 'http://www.last.fm/music/Afghan+Whigs'
54
58
  artists[1]['name'].should == 'Jeff The Brotherhood'
@@ -64,11 +68,14 @@ describe '#user' do
64
68
  :page => nil
65
69
  }).and_return(make_response('user_get_personal_tags_albums'))
66
70
 
67
- albums = @lastfm.user.get_personal_tags('test', 'hip-hop', 'album')
71
+ albums = @lastfm.user.get_personal_tags(
72
+ :user => 'test',
73
+ :tag => 'hip-hop',
74
+ :taggingtype => 'album')
68
75
  albums[0]['name'].should == 'DJ Bizkid Presents: The Best of Atmosphere'
69
76
  albums.size.should == 1
70
77
  end
71
-
78
+
72
79
  it 'should get user\'s tagged tracks' do
73
80
  @lastfm.should_receive(:request).with('user.getPersonalTags', {
74
81
  :user => 'test',
@@ -78,7 +85,10 @@ describe '#user' do
78
85
  :page => nil
79
86
  }).and_return(make_response('user_get_personal_tags_tracks'))
80
87
 
81
- tracks = @lastfm.user.get_personal_tags('test', 'jazz', 'track')
88
+ tracks = @lastfm.user.get_personal_tags(
89
+ :user => 'test',
90
+ :tag => 'jazz',
91
+ :taggingtype => 'track')
82
92
  tracks[0]['name'].should == 'Come Together'
83
93
  tracks[1]['name'].should == 'Dione'
84
94
  tracks[1]['duration'].should == '450'
@@ -95,7 +105,9 @@ describe '#user' do
95
105
  :page => nil
96
106
  }).and_return(make_response('user_get_top_albums'))
97
107
 
98
- albums = @lastfm.user.get_top_albums('test', 'overall', nil, nil)
108
+ albums = @lastfm.user.get_top_albums(
109
+ :user => 'test',
110
+ :period => 'overall')
99
111
 
100
112
  albums.size.should == 2
101
113
 
@@ -108,7 +120,7 @@ describe '#user' do
108
120
  albums[1]['artist']['name'].should == 'Pain of Salvation'
109
121
  end
110
122
  end
111
-
123
+
112
124
  describe '#get_top_tracks' do
113
125
  it 'should get user\'s top tracks' do
114
126
  @lastfm.should_receive(:request).with('user.getTopTracks', {
@@ -118,7 +130,9 @@ describe '#user' do
118
130
  :page => nil
119
131
  }).and_return(make_response('user_get_top_tracks'))
120
132
 
121
- tracks = @lastfm.user.get_top_tracks('test', '7day', nil, nil)
133
+ tracks = @lastfm.user.get_top_tracks(
134
+ :user => 'test',
135
+ :period => '7day')
122
136
 
123
137
  tracks.size.should == 2
124
138
 
@@ -131,7 +145,7 @@ describe '#user' do
131
145
  tracks[1]['artist']['name'].should == 'Oupa & Tony Crow'
132
146
  end
133
147
  end
134
-
148
+
135
149
  describe '#get_loved_tracks' do
136
150
  it 'should get user\'s loved tracks' do
137
151
  @lastfm.should_receive(:request).with('user.getLovedTracks', {
@@ -141,7 +155,7 @@ describe '#user' do
141
155
  :page => nil
142
156
  }).and_return(make_response('user_get_loved_tracks'))
143
157
 
144
- tracks = @lastfm.user.get_loved_tracks('test', nil, nil, nil)
158
+ tracks = @lastfm.user.get_loved_tracks(:user => 'test')
145
159
 
146
160
  tracks.size.should == 2
147
161
 
@@ -153,7 +167,7 @@ describe '#user' do
153
167
  tracks[1]['name'].should == 'Working Titles'
154
168
  tracks[1]['artist']['name'].should == 'Damien Jurado'
155
169
  end
156
- end
170
+ end
157
171
 
158
172
  describe '#get_friends' do
159
173
  it 'should get user\'s friends' do
@@ -163,7 +177,7 @@ describe '#user' do
163
177
  :page => nil,
164
178
  :limit => nil
165
179
  }).and_return(make_response('user_get_friends'))
166
- friends = @lastfm.user.get_friends('test')
180
+ friends = @lastfm.user.get_friends(:user => 'test')
167
181
  friends.size.should == 1
168
182
  friends[0]['name'].should == 'polaroide'
169
183
  end
@@ -177,7 +191,7 @@ describe '#user' do
177
191
  :page => nil,
178
192
  :limit => nil
179
193
  }).and_return(make_response('user_get_neighbours'))
180
- neighbours = @lastfm.user.get_neighbours('rj')
194
+ neighbours = @lastfm.user.get_neighbours(:user => 'rj')
181
195
  neighbours.size.should == 5
182
196
  neighbours[0]['name'].should == 'willywongi'
183
197
  end
@@ -192,19 +206,19 @@ describe '#user' do
192
206
  :to => nil,
193
207
  :from => nil
194
208
  }).and_return(make_response('user_get_recent_tracks'))
195
- tracks = @lastfm.user.get_recent_tracks('test')
209
+ tracks = @lastfm.user.get_recent_tracks(:user => 'test')
196
210
  tracks[1]['artist']['content'].should == 'Kylie Minogue'
197
211
  tracks.size.should == 2
198
212
  end
199
213
  end
200
-
214
+
201
215
  describe '#get_top_tags' do
202
216
  it 'should get user\'s top tags' do
203
217
  @lastfm.should_receive(:request).with('user.getTopTags', {
204
218
  :user => 'test',
205
219
  :limit => nil
206
220
  }).and_return(make_response('user_get_top_tags'))
207
- tags = @lastfm.user.get_top_tags('test')
221
+ tags = @lastfm.user.get_top_tags(:user => 'test')
208
222
  tags[0]['name'].should == 'rock'
209
223
  tags[0]['count'].should == '19'
210
224
  tags[1]['count'].should == '15'
data/spec/util_spec.rb CHANGED
@@ -6,27 +6,94 @@ describe Lastfm::Util do
6
6
  end
7
7
 
8
8
  describe '.build_options' do
9
- it 'should build options' do
10
- subject.build_options(
11
- ['foo', nil],
12
- [:foo],
13
- [[:bar, 'xxx'], [:baz, nil]
14
- ]).should == {
9
+ describe 'with array' do
10
+ it 'should build options' do
11
+ subject.build_options(
12
+ ['foo', nil],
13
+ [:foo],
14
+ [[:bar, 'xxx'], [:baz, nil]
15
+ ]).should == {
15
16
  :foo => 'foo',
16
17
  :bar => 'xxx',
17
18
  :baz => nil,
18
19
  }
20
+ end
21
+
22
+ it 'should use proc object to set optional value' do
23
+ subject.build_options(
24
+ ['foo', nil],
25
+ [:foo],
26
+ [[:bar, Proc.new { 'xxx' }]
27
+ ]).should == {
28
+ :foo => 'foo',
29
+ :bar => 'xxx',
30
+ }
31
+ end
32
+
33
+ it 'should raise error if required option is not passed' do
34
+ lambda {
35
+ subject.build_options(
36
+ [],
37
+ [:foo],
38
+ [[:bar, 'xxx'], [:baz, nil]
39
+ ])
40
+ }.should raise_error('foo is required')
41
+ end
19
42
  end
20
43
 
21
- it 'should use proc object to set optional value' do
22
- subject.build_options(
23
- ['foo', nil],
24
- [:foo],
25
- [[:bar, Proc.new { 'xxx' }]
26
- ]).should == {
44
+ describe 'with hash' do
45
+ it 'should build options' do
46
+ subject.build_options(
47
+ [
48
+ {
49
+ :foo => 'foo',
50
+ :bar => nil,
51
+ :baz => 'baz'
52
+ }
53
+ ],
54
+ [:foo],
55
+ [
56
+ [:bar, 'xxx'],
57
+ [:baz, nil]
58
+ ]).should == {
27
59
  :foo => 'foo',
28
60
  :bar => 'xxx',
61
+ :baz => 'baz',
29
62
  }
63
+ end
64
+
65
+ it 'should use proc object to set optional value' do
66
+ subject.build_options(
67
+ [
68
+ {
69
+ :foo => 'foo',
70
+ :bar => nil,
71
+ }
72
+ ],
73
+ [:foo],
74
+ [[:bar, Proc.new { 'xxx' }]
75
+ ]).should == {
76
+ :foo => 'foo',
77
+ :bar => 'xxx',
78
+ }
79
+ end
80
+
81
+ it 'should raise error if required option is not passed' do
82
+ lambda {
83
+ subject.build_options(
84
+ [
85
+ {
86
+ :bar => nil,
87
+ :baz => 'baz'
88
+ }
89
+ ],
90
+ [:foo],
91
+ [
92
+ [:bar, 'xxx'],
93
+ [:baz, nil]
94
+ ])
95
+ }.should raise_error('foo is required')
96
+ end
30
97
  end
31
98
  end
32
99
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lastfm
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.6.1
4
+ version: 1.7.0
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: 2012-06-06 00:00:00.000000000 Z
12
+ date: 2012-07-23 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: xml-simple
16
- requirement: &70318983294800 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,15 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70318983294800
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
25
30
  - !ruby/object:Gem::Dependency
26
31
  name: httparty
27
- requirement: &70318983292560 !ruby/object:Gem::Requirement
32
+ requirement: !ruby/object:Gem::Requirement
28
33
  none: false
29
34
  requirements:
30
35
  - - ! '>='
@@ -32,10 +37,15 @@ dependencies:
32
37
  version: '0'
33
38
  type: :runtime
34
39
  prerelease: false
35
- version_requirements: *70318983292560
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
36
46
  - !ruby/object:Gem::Dependency
37
47
  name: activesupport
38
- requirement: &70318983291700 !ruby/object:Gem::Requirement
48
+ requirement: !ruby/object:Gem::Requirement
39
49
  none: false
40
50
  requirements:
41
51
  - - ! '>='
@@ -43,10 +53,15 @@ dependencies:
43
53
  version: 3.0.3
44
54
  type: :runtime
45
55
  prerelease: false
46
- version_requirements: *70318983291700
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: 3.0.3
47
62
  - !ruby/object:Gem::Dependency
48
63
  name: rspec
49
- requirement: &70318983290400 !ruby/object:Gem::Requirement
64
+ requirement: !ruby/object:Gem::Requirement
50
65
  none: false
51
66
  requirements:
52
67
  - - ~>
@@ -54,10 +69,15 @@ dependencies:
54
69
  version: 2.8.0
55
70
  type: :development
56
71
  prerelease: false
57
- version_requirements: *70318983290400
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ~>
76
+ - !ruby/object:Gem::Version
77
+ version: 2.8.0
58
78
  - !ruby/object:Gem::Dependency
59
79
  name: rake
60
- requirement: &70318983289580 !ruby/object:Gem::Requirement
80
+ requirement: !ruby/object:Gem::Requirement
61
81
  none: false
62
82
  requirements:
63
83
  - - ! '>='
@@ -65,7 +85,12 @@ dependencies:
65
85
  version: '0'
66
86
  type: :development
67
87
  prerelease: false
68
- version_requirements: *70318983289580
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
69
94
  description: A ruby interface for Last.fm web services version 2.0
70
95
  email:
71
96
  - youpy@buycheapviagraonlinenow.com
@@ -73,7 +98,6 @@ executables: []
73
98
  extensions: []
74
99
  extra_rdoc_files: []
75
100
  files:
76
- - .document
77
101
  - .gitignore
78
102
  - .rspec
79
103
  - .travis.yml
@@ -81,7 +105,6 @@ files:
81
105
  - LICENSE
82
106
  - README.rdoc
83
107
  - Rakefile
84
- - VERSION
85
108
  - lastfm.gemspec
86
109
  - lib/lastfm.rb
87
110
  - lib/lastfm/method_category/album.rb
@@ -157,7 +180,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
157
180
  version: '0'
158
181
  segments:
159
182
  - 0
160
- hash: -3222139268399165275
183
+ hash: -2486390308130313809
161
184
  required_rubygems_version: !ruby/object:Gem::Requirement
162
185
  none: false
163
186
  requirements:
@@ -166,10 +189,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
166
189
  version: '0'
167
190
  segments:
168
191
  - 0
169
- hash: -3222139268399165275
192
+ hash: -2486390308130313809
170
193
  requirements: []
171
194
  rubyforge_project:
172
- rubygems_version: 1.8.10
195
+ rubygems_version: 1.8.24
173
196
  signing_key:
174
197
  specification_version: 3
175
198
  summary: A ruby interface for Last.fm web services version 2.0
data/.document DELETED
@@ -1,5 +0,0 @@
1
- README.rdoc
2
- lib/**/*.rb
3
- bin/*
4
- features/**/*.feature
5
- LICENSE
data/VERSION DELETED
@@ -1 +0,0 @@
1
- 1.6.1