class RubyFm::Album

Attributes

artist[R]
id[R]
images[R]
mbid[R]
name[R]
streamable[R]
tracks[R]
url[R]

Public Class Methods

new(attributes, tracks) click to toggle source
# File lib/ruby_fm/album.rb, line 8
def initialize(attributes, tracks)
  @name = attributes['name']
  @artist = attributes['artist']
  @mbid = attributes['mbid']
  @id = attributes['id']
  @url = attributes['url']
  @streamable = attributes['streamable']
  @images = attributes['image'].map do |image|
    image['#text']
  end
  @tracks = tracks
end

Protected Class Methods

connection() click to toggle source
# File lib/ruby_fm/album.rb, line 61
def connection
  conn ||= Faraday.new(:url => 'http://ws.audioscrobbler.com') do |faraday|
    faraday.request  :url_encoded             # form-encode POST params
    faraday.adapter  Faraday.default_adapter  # make requests with Net::HTTP
  end
end
get_tracks(name, artist) click to toggle source
# File lib/ruby_fm/album.rb, line 42
def get_tracks(name, artist)
  res = connection.get('/2.0/', {
    method: 'album.getInfo',
    album: name,
    artist: artist,
    api_key: RubyFm.api_key,
    format: 'json'
  })
  parsed_results = JSON.parse(res.body)
  if parsed_results['album'] && parsed_results['album']['tracks']['track']
    tracks_results = [parsed_results['album']['tracks']['track']].flatten
    tracks_results.map do |track_attributes|
      Track.new(track_attributes)
    end
  else
    []
  end
end