Rhapsody Music OmniAuth Strategy

This gem provides a simple way to authenticate to Rhapsody Web API using OmniAuth with OAuth2.

Installation

Add this line to your application's Gemfile:

gem 'omniauth-rhapsody'

And then execute:

$ bundle

Or install it yourself as:

$ gem install omniauth-rhapsody

Usage

You'll need to register an app on rhapsody, you can do this here - https://developer.rhapsody.com/api#

Usage of the gem is very similar to other OmniAuth strategies. You'll need to add your app credentials to config/initializers/omniauth.rb:

Rails.application.config.middleware.use OmniAuth::Builder do
  provider :rhapsody, 'app_id', 'app_secret', scope: 'playlist-read-private user-read-private user-read-email'
end

Please replace the example scope provided with your own. Read more about scopes here: https://developer.rhapsody.com/web-api/using-scopes/

Or with Devise in config/initializers/devise.rb:

config.omniauth :rhapsody, 'app_id', 'app_secret', scope: 'playlist-read-private user-read-private user-read-email'

Auth Hash Schema

Here's an example auth hash, available in request.env['omniauth.auth']:

  { "provider":"rhapsody",
     "uid":"A155SDLKJLKSFJLKJLSKJD30A96033200CA",
     "info":
      {"uid":"A15KSJLKJSLDKJE0430A96033200CA", "name":nil, "email":nil},
     "credentials":
      {"token":"OLKSJDkjsfojasLKJsfjksdlkjZmM0LThiOTgtYzg5MThlZThiZGNj",
       "refresh_token":"3sdk34c97-1ce5-443455-8999-e5aasdlkj7f72",
       "expires_at":1463103543,
       "expires":true},
     "extra":
      {"raw_info":
        {"me":
          {"id":"A1KJSDKJLKJFHJSDLKJFA96033200CA",
           "realName":"Matt Fitz-Henry",
           "screenName":"mfitzhenry",
           "gender":"male",
           "visibility":"private",
           "type":"member",
           "href":
            "http://api.rhapsody.com/members/A23498983409584098098457CA",
           "favoriteAlbumsCount":0,
           "favoriteArtistsCount":0,
           "favoriteTracksCount":0,
           "playlistsTotalCount":0,
           "playlistsTotalCount":0,
     "info":
      {"uid":"A15IFUNSYFLSKE0430A96033200CA", "name":nil, "email":nil},
     "credentials":asdkljlafkjJHSJDHKJjskndViYzgtNmI4Ny00ZmM0LasdlkjqweiuLAULkrl",
       "refresh_token":"334f8c97-1ce7-4434-8999-easdasdljkjsd72",
       "expires_at":1463103543,
       "expires":true},
     "extra":
      {"raw_info":
        {"me":
          {"id":"A155547F650900CAE0430A96033200CA",
           "realName":"Matt Fitz-Henry",
           "screenName":"mfitzhenry",
           "gender":"male",
           "visibility":"private",
           "type":"member",
           "href":
            "http://api.rhapsody.com/members/A155547F650900CAE048723409812389200CA",
           "favoriteAlbumsCount":0,
           "favoriteArtistsCount":0,
           "favoriteTracksCount":0,
           "playlistsTotalCount":0,
           "playlistsPublishedCount":0,
           "stationsCount":0,
           "radioCount":0,
           "followingCount":0,
           "followerCount":0,
           "avatar":
            "http://direct.rhapsody.com/imageserver/v2/external/aHR0cHM6Ly9yaGFwc29keS1uYXBpLnMzLmFtYXpvbmF3cy5jb20vbWVtYmVyLzAwMDAwMF9kZWZhdWx0L2F2YXRhci9vcmlnaW5hbF8w/images/108x108.jpg",
           "avatarId":
            "aHR0cHM6Ly9yaGFwc29keS1uYXBpLnMzLmFtYXpvbmF3cy5jb20vbWVtYmVyLzAwMDAwMF9kZWZhdWx0L2F2YXRhci9vcmlnaW5hbF8w",
           "defaultAvatar":"true",
           "avatarVersion":1,
           "links":
         }
        }
      }
    }
*** To Be Added ***

## More

This gem is brought to you by the [Genome](https://geno.me) team.
Enjoy!

## Contributing

1. Fork it
2. Create your feature branch (`git checkout -b my-new-feature`)
3. Commit your changes (`git commit -am 'Add some feature'`)
4. Push to the branch (`git push origin my-new-feature`)
5. Create new Pull Request