Skip to content

icoretech/spotify-client

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

62 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

spotify-client

Ruby Client for the Spotify Web API.

Gem Version

Installation

Add this line to your application's Gemfile:

gem 'spotify-client'

And then execute:

$ bundle

Or install it yourself as:

$ gem install spotify-client

Features and Goals

  • Optional persistent connections
  • Ease of use
  • Extremely light footprint, memory is always a concern.
  • Be future-proof.

Usage / Notes

This gem is pretty new and it should not be used in production environments yet.

It has been tested on Ruby 2.1+ only. Feel free to play around with it.

# Sample configuration:
config = {
  :access_token => 'tk',  # initialize the client with an access token to perform authenticated calls
  :raise_errors => true,  # choose between returning false or raising a proper exception when API calls fails

  # Connection properties
  :retries       => 0,    # automatically retry a certain number of times before returning
  :read_timeout  => 10,   # set longer read_timeout, default is 10 seconds
  :write_timeout => 10,   # set longer write_timeout, default is 10 seconds
  :persistent    => false # when true, make multiple requests calls using a single persistent connection. Use +close_connection+ method on the client to manually clean up sockets
}
client = Spotify::Client.new(config)
# or with default options:
client = Spotify::Client.new

If you want to perform authenticated calls include access_token during initialization. Note that there are particular calls that not only requires authentication but the correct scopes.

Read more about scopes here.

# Current methods' signatures
client.me
client.user(user_id)
client.me_tracks
client.user_playlists(user_id)
client.user_playlist(user_id, playlist_id)
client.user_playlist_tracks(user_id, playlist_id, params = {})
client.create_user_playlist(user_id, name, is_public = true)
client.add_user_tracks_to_playlist(user_id, playlist_id, uris = [], position = nil)
client.remove_user_tracks_from_playlist(user_id, playlist_id, tracks)
client.replace_user_tracks_in_playlist(user_id, playlist_id, tracks)
client.truncate_user_playlist(user_id, playlist_id)
client.album(album_id)
client.album_tracks(album_id)
client.albums(album_ids)
client.track(track_id)
client.tracks(track_ids)
client.artist(artist_id)
client.artists(artist_ids)
client.artist_albums(artist_id)
client.search(entity, term)
client.artist_top_tracks(artist_id, country_id)
client.related_artists(artist_id)
client.follow(type, ids)
client.follow_playlist(user_id, playlist_id, is_public = true)

Please also refer to the source file spotify_client.rb.

More documentation will follow soon.

Authentication

In order to use authenticated features you need to obtain access tokens. This feature is not supported (yet) by this gem, but if you'd like to let users authenticate against Spotify in a Rails/OmniAuth app you can use icoretech/omniauth-spotify.

TODO

  • Finish the spec suite and start implementing VCR instead of single response mocks, which doesn't add much value.
  • More OAuth2 features?
  • Modeling / Hashie / Indifferent Access response encapsulation?
  • CI setup

License

Please refer to LICENSE.md.