spof 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 14e4d99c31f28c5dfa38a952cb824c919d57d060
4
- data.tar.gz: 4a912d496c0ce57d59a8f7969f33165d4c3d80af
3
+ metadata.gz: e67eb54727921db21214c372c07994b195a3d79c
4
+ data.tar.gz: d7c6afe3ce115e661447a740c44d3559802ee16e
5
5
  SHA512:
6
- metadata.gz: 08dc22de887e35eaaae93875009580a69fa7d2755528ca8372694e8c9b10f50d1227eb171eff94f9dfc3f055f79ef5829b426354da95ec5642592ea602eda160
7
- data.tar.gz: daaf8cc22d21929419fb278842150bdcf503be0a754193e53f1c10777210d0ba231e833a2e02a6458a32c842c60b27cd67c0aea0fd4a9710b021afeac5b666a6
6
+ metadata.gz: 046d4636494ddffb0bde59767f3703fdf16c596de48ba4c121b1cb063e2ef1a80920834b9c62e39cca9e71dfa0c0cafe42b8cf699eb4253f8840a00b12541d8a
7
+ data.tar.gz: 1647b7fd105c2be5812c103a7c865f67c059083e913c24d1f54a0d0cd1edff558912ba7e5f31cdf0656df55138da6bc83aab21b0eadce457e53d86677c54b412
data/lib/lookup.rb ADDED
@@ -0,0 +1,38 @@
1
+ module Spof
2
+
3
+ module Lookup
4
+
5
+ def self.album(spotify_uri, *extras)
6
+ legal_extras = [:track, :trackdetail]
7
+ extras.each do |e|
8
+ raise SpofError, "Illegal extra" if not legal_extras.include?(e)
9
+ end
10
+ return get(spotify_uri, *extras)
11
+ end
12
+
13
+ def self.artist(spotify_uri, *extras)
14
+ legal_extras = [:album, :albumdetail]
15
+ extras.each do |e|
16
+ raise SpofError, "Illegal extra" if not legal_extras.include?(e)
17
+ end
18
+ return get(spotify_uri, *extras)
19
+ end
20
+
21
+ def self.track(spotify_uri)
22
+ return get(spotify_uri)
23
+ end
24
+
25
+ def self.get(spotify_uri, *extras)
26
+ uri = URI('http://ws.spotify.com/lookup/1/.json')
27
+ uri.query = URI.encode_www_form({
28
+ :uri => spotify_uri,
29
+ :extras => extras
30
+ })
31
+ response = Net::HTTP.get(uri)
32
+ return uri.to_s if Spof.testing?
33
+ return JSON.parse(response, :symbolize_names => true)
34
+ end
35
+
36
+ end
37
+
38
+ end
data/lib/search.rb ADDED
@@ -0,0 +1,34 @@
1
+ module Spof
2
+
3
+ module Search
4
+
5
+ def self.album(text, page = 1)
6
+ url = 'http://ws.spotify.com/search/1/album.json'
7
+ return get_response(url, text, page)
8
+ end
9
+
10
+ def self.artist(text, page = 1)
11
+ url = 'http://ws.spotify.com/search/1/artist.json'
12
+ return get_response(url, text, page)
13
+ end
14
+
15
+ def self.track(text, page = 1)
16
+ url = 'http://ws.spotify.com/search/1/track.json'
17
+ return get_response(url, text, page)
18
+ end
19
+
20
+ private
21
+ def self.get_response(url, text, page = 1)
22
+ uri = URI(url)
23
+ uri.query = URI.encode_www_form({
24
+ :q => text,
25
+ :page => page
26
+ })
27
+ return uri.to_s if Spof.testing?
28
+ response = Net::HTTP.get(uri)
29
+ return JSON.parse(response, :symbolize_names => true)
30
+ end
31
+
32
+ end
33
+
34
+ end
data/lib/spof/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Spof
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
data/lib/spof.rb CHANGED
@@ -1,7 +1,10 @@
1
1
  require "spof/version"
2
- require 'net/http'
3
- require 'json'
2
+ require "search"
3
+ require "lookup"
4
+ require "wrapper"
4
5
 
6
+ require "net/http"
7
+ require "json"
5
8
 
6
9
  module Spof
7
10
 
@@ -18,71 +21,4 @@ module Spof
18
21
  class SpofError < StandardError
19
22
  end
20
23
 
21
-
22
- module Search
23
-
24
- def self.album(text, page = 1)
25
- url = 'http://ws.spotify.com/search/1/album.json'
26
- return get_response(url, text, page)
27
- end
28
-
29
- def self.artist(text, page = 1)
30
- url = 'http://ws.spotify.com/search/1/artist.json'
31
- return get_response(url, text, page)
32
- end
33
-
34
- def self.track(text, page = 1)
35
- url = 'http://ws.spotify.com/search/1/track.json'
36
- return get_response(url, text, page)
37
- end
38
-
39
- private
40
- def self.get_response(url, text, page = 1)
41
- uri = URI(url)
42
- uri.query = URI.encode_www_form({
43
- :q => text,
44
- :page => page
45
- })
46
- return uri.to_s if Spof.testing?
47
- response = Net::HTTP.get(uri)
48
- return JSON.parse(response, :symbolize_names => true)
49
- end
50
-
51
- end
52
-
53
- module Lookup
54
-
55
- def self.album(spotify_uri, *extras)
56
- legal_extras = [:track, :trackdetail]
57
- extras.each do |e|
58
- raise SpofError, "Illegal extra" if not legal_extras.include?(e)
59
- end
60
- return get(spotify_uri, *extras)
61
- end
62
-
63
- def self.artist(spotify_uri, *extras)
64
- legal_extras = [:album, :albumdetail]
65
- extras.each do |e|
66
- raise SpofError, "Illegal extra" if not legal_extras.include?(e)
67
- end
68
- return get(spotify_uri, *extras)
69
- end
70
-
71
- def self.track(spotify_uri)
72
- return get(spotify_uri)
73
- end
74
-
75
- def self.get(spotify_uri, *extras)
76
- uri = URI('http://ws.spotify.com/lookup/1/.json')
77
- uri.query = URI.encode_www_form({
78
- :uri => spotify_uri,
79
- :extras => extras
80
- })
81
- response = Net::HTTP.get(uri)
82
- return uri.to_s if Spof.testing?
83
- return JSON.parse(response, :symbolize_names => true)
84
- end
85
-
86
- end
87
-
88
24
  end
data/lib/wrapper.rb ADDED
@@ -0,0 +1,38 @@
1
+ require "search"
2
+ require "lookup"
3
+
4
+ module Spof
5
+
6
+ class Wrapper
7
+
8
+ def initialize(options = {})
9
+ @type = nil
10
+ Spof.config(options)
11
+ end
12
+
13
+ def album
14
+ @type = :album
15
+ self
16
+ end
17
+
18
+ def artist
19
+ @type = :artist
20
+ self
21
+ end
22
+
23
+ def track
24
+ @type = :track
25
+ self
26
+ end
27
+
28
+ def search(text)
29
+ if [:album, :artist, :track].include?(@type)
30
+ Spof::Search.send(@type, text)
31
+ else
32
+ raise Spof::SpofError, "Invalid search type"
33
+ end
34
+ end
35
+
36
+ end
37
+
38
+ end
@@ -1,4 +1,4 @@
1
- require_relative '../lib/spof'
1
+ require 'spof'
2
2
  require 'test/unit'
3
3
 
4
4
 
@@ -0,0 +1,22 @@
1
+ require 'spof'
2
+ require 'test/unit'
3
+
4
+
5
+ class TestWrapper < Test::Unit::TestCase
6
+
7
+ def setup
8
+ Spof.config({
9
+ :testing => true
10
+ })
11
+ end
12
+
13
+ def test_helper_methods_return_self
14
+ assert_nothing_thrown do
15
+ w = Spof::Wrapper.new
16
+ w.album.artist.track
17
+ w.artist.track.album
18
+ end
19
+ end
20
+
21
+
22
+ end
@@ -0,0 +1,28 @@
1
+ require 'spof'
2
+ require 'test/unit'
3
+
4
+ class TestBasicWrapper < Test::Unit::TestCase
5
+
6
+ def setup
7
+ @w = Spof::Wrapper.new :testing => true
8
+ end
9
+
10
+ def test_search_album_request
11
+ expected = Spof::Search.album('space oddity')
12
+ real = @w.album.search('space oddity')
13
+ assert_equal expected, real
14
+ end
15
+
16
+ def test_search_artist_request
17
+ expected = Spof::Search.artist('david bowie')
18
+ real = @w.artist.search('david bowie')
19
+ assert_equal expected, real
20
+ end
21
+
22
+ def test_search_track_request
23
+ expected = Spof::Search.track('life on mars')
24
+ real = @w.track.search('life on mars')
25
+ assert_equal expected, real
26
+ end
27
+
28
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: spof
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ignacio Contreras
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-09-25 00:00:00.000000000 Z
11
+ date: 2013-09-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -51,10 +51,15 @@ files:
51
51
  - LICENSE
52
52
  - README.md
53
53
  - Rakefile
54
+ - lib/lookup.rb
55
+ - lib/search.rb
54
56
  - lib/spof.rb
55
57
  - lib/spof/version.rb
58
+ - lib/wrapper.rb
56
59
  - spof.gemspec
57
- - test/basic.rb
60
+ - test/test_search_and_lookup.rb
61
+ - test/test_wrapper.rb
62
+ - test/test_wrapper_basic_search.rb
58
63
  homepage: http://github.com/ignaciocontreras/spof
59
64
  licenses:
60
65
  - MIT
@@ -80,4 +85,6 @@ signing_key:
80
85
  specification_version: 4
81
86
  summary: Spotify Search & Lookup
82
87
  test_files:
83
- - test/basic.rb
88
+ - test/test_search_and_lookup.rb
89
+ - test/test_wrapper.rb
90
+ - test/test_wrapper_basic_search.rb