meta-spotify 0.1.2 → 0.1.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/HISTORY CHANGED
@@ -1,3 +1,13 @@
1
+ === 0.1.3 / 2009-11-16
2
+
3
+ * 1 minor enhancement
4
+
5
+ * Added popularity to artists and albums when they are a result of a search
6
+
7
+ * 1 bug fix
8
+
9
+ * Search results with only one result were failing
10
+
1
11
  === 0.1.2 / 2009-11-15
2
12
 
3
13
  * 2 minor enhancements
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.2
1
+ 0.1.3
@@ -8,6 +8,7 @@ module MetaSpotify
8
8
 
9
9
  def initialize(hash)
10
10
  @name = hash['name']
11
+ @popularity = hash['popularity'].to_f if hash.has_key? 'popularity'
11
12
  if hash.has_key? 'artist'
12
13
  @artists = []
13
14
  if hash['artist'].is_a? Array
@@ -7,6 +7,7 @@ module MetaSpotify
7
7
 
8
8
  def initialize(hash)
9
9
  @name = hash['name']
10
+ @popularity = hash['popularity'].to_f if hash.has_key? 'popularity'
10
11
  @uri = hash['href'] if hash.has_key? 'href'
11
12
  if hash.has_key? 'albums'
12
13
  @albums = []
@@ -3,10 +3,11 @@ module MetaSpotify
3
3
 
4
4
  URI_REGEX = /^spotify:track:[A-Za-z0-9]+$/
5
5
 
6
- attr_reader :album, :artists, :track_number, :length, :popularity
6
+ attr_reader :album, :artists, :track_number, :length
7
7
 
8
8
  def initialize(hash)
9
9
  @name = hash['name']
10
+ @popularity = hash['popularity'].to_f if hash.has_key? 'popularity'
10
11
  if hash.has_key? 'artist'
11
12
  @artists = []
12
13
  if hash['artist'].is_a? Array
@@ -17,7 +18,6 @@ module MetaSpotify
17
18
  end
18
19
  @album = Album.new(hash['album']) if hash.has_key? 'album'
19
20
  @track_number = hash['track_number'].to_i if hash.has_key? 'track_number'
20
- @popularity = hash['popularity'].to_f if hash.has_key? 'popularity'
21
21
  @length = hash['length'].to_f if hash.has_key? 'length'
22
22
  end
23
23
  end
data/lib/meta-spotify.rb CHANGED
@@ -10,7 +10,7 @@ module MetaSpotify
10
10
  include HTTParty
11
11
  base_uri 'http://ws.spotify.com'
12
12
 
13
- attr_reader :name, :uri
13
+ attr_reader :name, :uri, :popularity
14
14
 
15
15
  def self.search(string, opts={})
16
16
  item_name = self.name.downcase.gsub(/^.*::/,'')
@@ -21,8 +21,12 @@ module MetaSpotify
21
21
  result = result[item_name+'s']
22
22
  items = []
23
23
  unless result[item_name].nil?
24
- result[item_name].each do |item|
25
- items << self.new(item)
24
+ if result[item_name].is_a? Array
25
+ result[item_name].each do |item|
26
+ items << self.new(item)
27
+ end
28
+ else
29
+ items << self.new(result[item_name])
26
30
  end
27
31
  end
28
32
  return { (item_name+'s').to_sym => items,
data/meta-spotify.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{meta-spotify}
8
- s.version = "0.1.2"
8
+ s.version = "0.1.3"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Phil Nash"]
12
- s.date = %q{2009-11-15}
12
+ s.date = %q{2009-11-16}
13
13
  s.email = %q{philnash@gmail.com}
14
14
  s.extra_rdoc_files = [
15
15
  "LICENSE",
@@ -32,6 +32,7 @@ Gem::Specification.new do |s|
32
32
  "test/fixtures/album_search.xml",
33
33
  "test/fixtures/artist.xml",
34
34
  "test/fixtures/artist_search.xml",
35
+ "test/fixtures/artist_search_one_result.xml",
35
36
  "test/fixtures/artist_with_albumdetail.xml",
36
37
  "test/fixtures/track.xml",
37
38
  "test/fixtures/track_search.xml",
@@ -0,0 +1,12 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <artists xmlns:opensearch="http://a9.com/-/spec/opensearch/1.1/" xmlns="http://www.spotify.com/ns/music/1">
3
+ <opensearch:Query role="request" startPage="1" searchTerms="1200 Micrograms"/>
4
+ <opensearch:totalResults>1</opensearch:totalResults>
5
+ <opensearch:startIndex>0</opensearch:startIndex>
6
+ <opensearch:itemsPerPage>100</opensearch:itemsPerPage>
7
+ <artist href="spotify:artist:3AUNfvctGVnEOGZiAh0JIK">
8
+ <name>1200 Micrograms</name>
9
+
10
+ <popularity>0.48196</popularity>
11
+ </artist>
12
+ </artists>
data/test/test_album.rb CHANGED
@@ -28,6 +28,7 @@ class TestAlbum < Test::Unit::TestCase
28
28
  assert_kind_of Array, @results[:albums]
29
29
  assert_kind_of MetaSpotify::Album, @results[:albums].first
30
30
  assert_equal "Foo Foo", @results[:albums].first.name
31
+ assert_equal 0.29921, @results[:albums].first.popularity
31
32
  assert_equal 1, @results[:query][:start_page]
32
33
  assert_equal 'request', @results[:query][:role]
33
34
  assert_equal "foo", @results[:query][:search_terms]
data/test/test_artist.rb CHANGED
@@ -2,22 +2,46 @@ require 'helper'
2
2
 
3
3
  class TestArtist < Test::Unit::TestCase
4
4
  context "searching for an artist name" do
5
- setup do
6
- FakeWeb.register_uri(:get,
7
- "http://ws.spotify.com/search/1/artist?q=foo",
8
- :body => fixture_file("artist_search.xml"))
9
- @results = MetaSpotify::Artist.search('foo')
5
+ context "many results" do
6
+ setup do
7
+ FakeWeb.register_uri(:get,
8
+ "http://ws.spotify.com/search/1/artist?q=foo",
9
+ :body => fixture_file("artist_search.xml"))
10
+ @results = MetaSpotify::Artist.search('foo')
11
+ end
12
+ should "return a list of results and search meta" do
13
+ assert_kind_of Array, @results[:artists]
14
+ assert_kind_of MetaSpotify::Artist, @results[:artists].first
15
+ assert_equal "Foo Fighters", @results[:artists].first.name
16
+ assert_equal 0.89217, @results[:artists].first.popularity
17
+ assert_equal 1, @results[:query][:start_page]
18
+ assert_equal 'request', @results[:query][:role]
19
+ assert_equal "foo", @results[:query][:search_terms]
20
+ assert_equal 100, @results[:items_per_page]
21
+ assert_equal 0, @results[:start_index]
22
+ assert_equal 9, @results[:total_results]
23
+ end
10
24
  end
11
- should "return a list of results and search meta" do
12
- assert_kind_of Array, @results[:artists]
13
- assert_kind_of MetaSpotify::Artist, @results[:artists].first
14
- assert_equal "Foo Fighters", @results[:artists].first.name
15
- assert_equal 1, @results[:query][:start_page]
16
- assert_equal 'request', @results[:query][:role]
17
- assert_equal "foo", @results[:query][:search_terms]
18
- assert_equal 100, @results[:items_per_page]
19
- assert_equal 0, @results[:start_index]
20
- assert_equal 9, @results[:total_results]
25
+ context "a single result" do
26
+ setup do
27
+ FakeWeb.register_uri(:get,
28
+ "http://ws.spotify.com/search/1/artist?q=1200%20Micrograms",
29
+ :body => fixture_file("artist_search_one_result.xml"))
30
+ @results = MetaSpotify::Artist.search('1200 Micrograms')
31
+ end
32
+ should "still return a list of results, for consistency" do
33
+ assert_kind_of Array, @results[:artists]
34
+ assert_equal 1, @results[:artists].length
35
+ assert_kind_of MetaSpotify::Artist, @results[:artists].first
36
+ assert_equal "1200 Micrograms", @results[:artists].first.name
37
+ assert_equal 0.48196, @results[:artists].first.popularity
38
+ assert_equal 1, @results[:query][:start_page]
39
+ assert_equal 'request', @results[:query][:role]
40
+ assert_equal "1200 Micrograms", @results[:query][:search_terms]
41
+ assert_equal 100, @results[:items_per_page]
42
+ assert_equal 0, @results[:start_index]
43
+ assert_equal 1, @results[:total_results]
44
+ end
21
45
  end
22
46
  end
23
47
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: meta-spotify
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Phil Nash
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-11-15 00:00:00 +00:00
12
+ date: 2009-11-16 00:00:00 +00:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -78,6 +78,7 @@ files:
78
78
  - test/fixtures/album_search.xml
79
79
  - test/fixtures/artist.xml
80
80
  - test/fixtures/artist_search.xml
81
+ - test/fixtures/artist_search_one_result.xml
81
82
  - test/fixtures/artist_with_albumdetail.xml
82
83
  - test/fixtures/track.xml
83
84
  - test/fixtures/track_search.xml