class ItunesApi::Music::Album

Wrapper for album results.

Public Class Methods

find_by_apple_id(apple_id, store) click to toggle source
# File lib/itunes_api/music/album.rb, line 26
def find_by_apple_id(apple_id, store)
  albums(apple_id, store).map { |album| new(*album.attributes) }
end
find_by_collection_id(collection_id, store) click to toggle source
# File lib/itunes_api/music/album.rb, line 20
def find_by_collection_id(collection_id, store)
  result = albums(collection_id, store).first

  new(*result.attributes) if result
end

Private Class Methods

albums(id, store) click to toggle source
# File lib/itunes_api/music/album.rb, line 32
def albums(id, store)
  Requests::Albums.find_by_id(id, store)
end

Public Instance Methods

availability() click to toggle source
# File lib/itunes_api/music/album.rb, line 37
def availability
  @availability ||= build_availability
end
explicit?() click to toggle source
# File lib/itunes_api/music/album.rb, line 41
def explicit?
  explicitness == 'explicit'
end
to_hash() click to toggle source
# File lib/itunes_api/music/album.rb, line 45
def to_hash
  {
    artist: artist,
    artwork: artwork,
    availability: availability,
    collection_id: collection_id,
    explicit: explicit?,
    genre: genre,
    link: link,
    name: name,
    release_on: release_on,
    store: store,
    track_count: track_count
  }
end
tracklist() click to toggle source
# File lib/itunes_api/music/album.rb, line 61
def tracklist
  @tracklist ||= Song.find_by_collection_id(collection_id, store)
end

Private Instance Methods

apple_music?() click to toggle source
# File lib/itunes_api/music/album.rb, line 67
def apple_music?
  tracklist.any?(&:streamable?)
end
build_availability() click to toggle source
# File lib/itunes_api/music/album.rb, line 71
def build_availability
  prefix = pre_release? ? 'pre_release_' : ''
  suffix = apple_music? ? 'streaming' : 'sale'
  "#{prefix}#{suffix}".to_sym
end
pre_release?() click to toggle source
# File lib/itunes_api/music/album.rb, line 77
def pre_release?
  release_on > Date.today
end