bih/spotify-ruby

A modern, opinionated and unofficial Ruby SDK for the Spotify Web API to help developers all over the world build amazing music things with Spotify. Check out the full docs here.

This is a work in progress. Currently in pre-alpha.

Build Status Coverage Status Gem Version Code Triagers Badge

Installation

Add this line to your application's Gemfile:

gem 'spotify-ruby'

And then execute:

$ bundle

Or install it yourself as:

$ gem install spotify-ruby

Setup

Configure with your client credentials and redirect URL. Get it for free here.

require "spotify"

@auth = Spotify::Auth.new({
  client_id:     ENV["SPOTIFY_CLIENT_ID"],
  client_secret: ENV["SPOTIFY_CLIENT_SECRET"],
  redirect_uri:  ENV["SPOTIFY_REDIRECT_URI"]
})

Authentication

With our @auth instance, we have access to multiple forms of authentication. Below are our ones that we make available through the Spotify Platform: Authorization Code, Implicit Grant and Client Credentials. Learn more here.

Authorization Code

Recommended. Generate the URL for the user to grant permissions for your application:

@auth.authorize_url(response_type: "code")

Once they return back to your application with a code:

@access_token = @auth.auth_code.get_token(params[:code])

You can save their information in the database under access_token, expires_in and refresh_token

@sdk = Spotify::SDK.new(@access_token)
@sdk.to_hash # => { access_token: "...", expires_in: 1234567890, refresh_token: "..." }

And you can also re-instantiate a SDK instance again later:

@sdk = Spotify::SDK.new({
  access_token:  "[insert access_token]",
  expires_in:    "[insert expires_in]",
  refresh_token: "[insert refresh_token]"
})

And when their access token expires, you can just run refresh!:

@access_token = @access_token.refresh!

Implicit Grant

@auth.authorize_url(response_type: "token")

Once they return back to your application with a token:

@sdk = Spotify::SDK.new(params[:token])

Client Credentials

Generate an access token based from your client credentials. Note this has limited access.

@access_token = @auth.client_credentials.get_token

Usage

TODO: Write more detailed usage instructions here. Spotify API endpoint coverage can be found in COVERAGE.md

Development

After checking out the repo, run bin/setup to install dependencies. Then, run rake spec to run the tests. You can also run bin/console for an interactive prompt that will allow you to experiment.

To install this gem onto your local machine, run bundle exec rake install. To release a new version, update the version number in version.rb, and then run bundle exec rake release, which will create a git tag for the version, push git commits and tags, and push the .gem file to rubygems.org.

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/bih/spotify-ruby. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the Contributor Covenant code of conduct.

License

The gem is available as open source under the terms of the MIT License.

Code of Conduct

Everyone interacting in the spotify-ruby project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the code of conduct.