class Lyricli::Sources::Rdio

This is the Source for rdio

Attributes

name[RW]

Public Class Methods

create_auth_token() click to toggle source

Signs in to rdio with our credentials and requests access for a new auth token.

# File lib/lyricli/sources/rdio.rb, line 54
def self.create_auth_token
  rdio = ::Rdio::SimpleRdio.new([@config["rdio_key"], @config["rdio_secret"]], @config["rdio_auth_token"])

  # Request Authorization
  puts "Follow this URL to authorize lyricli:"
  auth_url = rdio.begin_authentication('oob')
  puts auth_url
  ::Launchy.open(auth_url)

  # Request Code, Obtain Token
  print "Please type the authorization code: "
  auth_code = gets.chomp
  token = rdio.complete_authentication(auth_code)

  @config["rdio_auth_token"] = token
  token
end
enable() click to toggle source

The enable method should run all of the tasks needed to validate the source. In the case of Rdio it has to authenticate with OAuth.

# File lib/lyricli/sources/rdio.rb, line 15
def self.enable
  # Validation Code
  @config = Configuration.instance
  unless @config["rdio_auth_token"] && !@config["rdio_auth_token"].empty?
    create_auth_token
  end

  puts "***"
  puts "Hello, rdio tends to be a bit aggressive and tends to have trouble with other sources. If you're having trouble, you can disable it temporarily. You will not have to reauthenticate."
  puts "***"

end
new() click to toggle source

Instantiates everything it needs to run.

# File lib/lyricli/sources/rdio.rb, line 29
def initialize
  @name = 'rdio'
  @config = Configuration.instance
  @rdio = ::Rdio::SimpleRdio.new([@config["rdio_key"], @config["rdio_secret"]], @config["rdio_auth_token"])
end
reset() click to toggle source

The reset method resets any configurations it may have

# File lib/lyricli/sources/rdio.rb, line 47
def self.reset
  @config = Configuration.instance
  @config.delete("rdio_auth_token")
end

Public Instance Methods

current_track() click to toggle source

The current_track method should return the name of the current artist and song.

@return [Hash] A hash containing the current `:song` and `:artist`.

# File lib/lyricli/sources/rdio.rb, line 39
def current_track
  response = @rdio.call('currentUser', {'extras' => 'lastSongPlayed'})
  artist = response["result"]["lastSongPlayed"]["artist"]
  song = response["result"]["lastSongPlayed"]["name"]
  {:artist => artist, :song => song}
end