dance 0.1.0 → 0.1.1

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/.gitignore CHANGED
@@ -2,3 +2,4 @@
2
2
  .bundle
3
3
  Gemfile.lock
4
4
  pkg/*
5
+ .DS_Store
data/Gemfile CHANGED
@@ -1,4 +1,3 @@
1
1
  source "http://rubygems.org"
2
2
 
3
- # Specify your gem's dependencies in dance.gemspec
4
3
  gemspec
@@ -2,6 +2,8 @@
2
2
 
3
3
  Dance is a Gem for communicating with the [Console.fm API](http://console.fm/api).
4
4
 
5
+ You'll need an API Key. You can get one [here](http://consolefm.wufoo.com/forms/api-beta/).
6
+
5
7
  ## Usage
6
8
 
7
9
  dance = Dance::Client.new("KEY")
@@ -4,7 +4,7 @@ require "dance"
4
4
 
5
5
  Gem::Specification.new do |s|
6
6
  s.name = "dance"
7
- s.version = "0.1.0"
7
+ s.version = "0.1.1"
8
8
  s.authors = ["Ethan Turkeltaub"]
9
9
  s.email = ["ethan.turkeltaub@gmail.com"]
10
10
  s.homepage = "http://github.com/eturk/dance"
@@ -20,6 +20,8 @@ Gem::Specification.new do |s|
20
20
 
21
21
  s.add_dependency "httparty"
22
22
  s.add_development_dependency "rspec"
23
+ s.add_development_dependency "webmock"
24
+ s.add_development_dependency "vcr"
23
25
 
24
26
  # s.add_runtime_dependency "rest-client"
25
27
  end
@@ -1,9 +1,10 @@
1
1
  require 'httparty'
2
2
 
3
3
  require 'dance/client'
4
+ require 'dance/errors'
4
5
  require 'dance/artists'
5
6
  require 'dance/genres'
6
- require 'dance/users'
7
+ require 'dance/user'
7
8
  require 'dance/tracks'
8
9
 
9
10
  module Dance
@@ -1,9 +1,17 @@
1
1
  module Dance
2
2
  class Artists < Client
3
3
 
4
+ # Returns information on the given artist.
5
+ # GET /artists/:id
4
6
  def self.info(id)
5
7
  get('/artists/' + id.to_s)
6
8
  end
7
9
 
10
+ # Returns a list of tracks by the given artist.
11
+ # GET /artists/:id/tracks
12
+ def self.tracks(id)
13
+ get('/artists/' + id.to_s + '/tracks')
14
+ end
15
+
8
16
  end
9
17
  end
@@ -1,12 +1,11 @@
1
1
  module Dance
2
2
  class Client
3
3
  include HTTParty
4
-
5
- base_uri 'console.fm/api/v1'
6
- default_params :api_key => @key
4
+
5
+ base_uri 'console.fm/api/v2'
7
6
 
8
7
  def initialize(key)
9
- @key = key
8
+ self.class.default_params :api_key => key
10
9
  end
11
10
 
12
11
  def artists
@@ -24,7 +23,5 @@ module Dance
24
23
  def tracks
25
24
  Tracks
26
25
  end
27
-
28
26
  end
29
-
30
27
  end
@@ -0,0 +1,34 @@
1
+ module Dance
2
+ class Error < StandardError
3
+ attr_reader :http_Headers
4
+
5
+ def initialize(message, http_headers)
6
+ @http_headers = Hash[http_headers]
7
+ super(message)
8
+ end
9
+ end
10
+
11
+ class VerifyAuthentic < Error
12
+ end
13
+
14
+ class CheckParams < Error
15
+ end
16
+
17
+ class NoRecord < Error
18
+ end
19
+
20
+ class Deprecated < Error
21
+ end
22
+
23
+ class VersionNotAllowed < Error
24
+ end
25
+
26
+ class NotAuthorized < Error
27
+ end
28
+
29
+ class NotAuthenticated < Error
30
+ end
31
+
32
+ class InvalidRequest < Error
33
+ end
34
+ end
@@ -1,13 +1,29 @@
1
1
  module Dance
2
2
  class Genres < Client
3
-
3
+
4
+ # Returns a list of all of the genres.
5
+ # GET /genres
4
6
  def self.all
5
7
  get('/genres')
6
8
  end
7
9
 
10
+ # Returns information on the given genre.
11
+ # GET /genres/:id
8
12
  def self.info(id)
9
13
  get('/genres/' + id.to_s)
10
14
  end
15
+
16
+ # Returns a list of tracks under the given genre.
17
+ # GET /genres/:id/tracks
18
+ def self.tracks(id)
19
+ get('/genres/' + id.to_s + '/tracks')
20
+ end
21
+
22
+ # Returns a list of artists that have tracks under the given genre.
23
+ # GET /genres/:id/artists
24
+ def self.artists(id)
25
+ get('/genres/' + id.to_s + '/artists')
26
+ end
11
27
 
12
28
  end
13
29
  end
@@ -1,6 +1,9 @@
1
1
  module Dance
2
2
  class Tracks < Client
3
3
 
4
+ # Returns information on the given track.
5
+ # Parameters: id
6
+ # GET /tracks/:id
4
7
  def self.info(id)
5
8
  get('/tracks/' + id.to_s)
6
9
  end
@@ -0,0 +1,35 @@
1
+ module Dance
2
+ class User < Client
3
+
4
+ # Authenticates a user based on a Facebook token and the user's ID.
5
+ # POST /user/authenticate
6
+ def self.authenticate(options={})
7
+ post('/user/authenticate', options)
8
+ end
9
+
10
+ # Returns information on the authenticated user.
11
+ # GET /user/current
12
+ def self.current
13
+ get('/user/current')
14
+ end
15
+
16
+ # Returns the Facebook information of the authenticated user.
17
+ # GET /user/current/facebook
18
+ def self.facebook
19
+ get('/user/current/facebook')
20
+ end
21
+
22
+ # Returns the favorites of the authenticated user.
23
+ # GET /user/current/favorites
24
+ def self.favorites
25
+ get('/user/current/favorites')
26
+ end
27
+
28
+ # Returns the history of the authenticated user.
29
+ # GET /user/current/history
30
+ def self.history
31
+ get('/user/current/history')
32
+ end
33
+
34
+ end
35
+ end
@@ -1,3 +1,3 @@
1
1
  module Dance
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.1"
3
3
  end
@@ -0,0 +1,48 @@
1
+ $:.unshift File.expand_path('../../lib', __FILE__)
2
+
3
+ require 'dance'
4
+ require 'rspec'
5
+ require 'webmock/rspec'
6
+ require 'vcr'
7
+
8
+ endpoint = 'console.fm/api/v2'
9
+
10
+ def a_delete(path)
11
+ a_request(:delete, endpoint + path)
12
+ end
13
+
14
+ def a_get(path)
15
+ a_request(:get, endpoint + path)
16
+ end
17
+
18
+ def a_post(path)
19
+ a_request(:post, endpoint + path)
20
+ end
21
+
22
+ def a_put(path)
23
+ a_request(:put, endpoint + path)
24
+ end
25
+
26
+ def stub_delete(path)
27
+ stub_request(:delete, endpoint + path)
28
+ end
29
+
30
+ def stub_get(path)
31
+ stub_request(:get, endpoint + path)
32
+ end
33
+
34
+ def stub_post(path)
35
+ stub_request(:post, endpoint + path)
36
+ end
37
+
38
+ def stub_put(path)
39
+ stub_request(:put, endpoint + path)
40
+ end
41
+
42
+ def fixture_path
43
+ File.expand_path("../fixtures", __FILE__)
44
+ end
45
+
46
+ def fixture(file)
47
+ File.new(fixture_path + '/' + file)
48
+ end
@@ -0,0 +1,8 @@
1
+ require 'vcr'
2
+
3
+ VCR.config do |c|
4
+ c.cassette_library_dir = 'fixtures/cassettes'
5
+ c.stub_with :webmock
6
+ c.ignore_localhost = true
7
+ c.default_cassette_options = { :record => :none }
8
+ end
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: dance
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.1.0
5
+ version: 0.1.1
6
6
  platform: ruby
7
7
  authors:
8
8
  - Ethan Turkeltaub
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2011-10-16 00:00:00 Z
13
+ date: 2011-11-08 00:00:00 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: httparty
@@ -34,6 +34,28 @@ dependencies:
34
34
  version: "0"
35
35
  type: :development
36
36
  version_requirements: *id002
37
+ - !ruby/object:Gem::Dependency
38
+ name: webmock
39
+ prerelease: false
40
+ requirement: &id003 !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ">="
44
+ - !ruby/object:Gem::Version
45
+ version: "0"
46
+ type: :development
47
+ version_requirements: *id003
48
+ - !ruby/object:Gem::Dependency
49
+ name: vcr
50
+ prerelease: false
51
+ requirement: &id004 !ruby/object:Gem::Requirement
52
+ none: false
53
+ requirements:
54
+ - - ">="
55
+ - !ruby/object:Gem::Version
56
+ version: "0"
57
+ type: :development
58
+ version_requirements: *id004
37
59
  description: A library for communicating with the Console.fm API.
38
60
  email:
39
61
  - ethan.turkeltaub@gmail.com
@@ -52,10 +74,13 @@ files:
52
74
  - lib/dance.rb
53
75
  - lib/dance/artists.rb
54
76
  - lib/dance/client.rb
77
+ - lib/dance/errors.rb
55
78
  - lib/dance/genres.rb
56
79
  - lib/dance/tracks.rb
57
- - lib/dance/users.rb
80
+ - lib/dance/user.rb
58
81
  - lib/dance/version.rb
82
+ - spec/spec_helper.rb
83
+ - spec/support/vcr.rb
59
84
  homepage: http://github.com/eturk/dance
60
85
  licenses: []
61
86
 
@@ -1,25 +0,0 @@
1
- module Dance
2
- class Users < Client
3
-
4
- def self.all
5
- get('/users')
6
- end
7
-
8
- def self.current
9
- get('/users/current')
10
- end
11
-
12
- def self.favorites
13
- get('/users/current/favorites')
14
- end
15
-
16
- def self.facebook
17
- get('/users/current/facebook')
18
- end
19
-
20
- def self.twitter
21
- get('/users/current/twitter')
22
- end
23
-
24
- end
25
- end