class Napster::Models::Favorite

Favorite model

Constants

ATTRIBUTES

Attributes

client[RW]

Public Class Methods

collection(arg) click to toggle source
# File lib/napster/models/favorite.rb, line 33
def self.collection(arg)
  arg[:data].map do |favorite|
    Favorite.new(data: favorite, client: @client)
  end
end
new(arg) click to toggle source
# File lib/napster/models/favorite.rb, line 24
def initialize(arg)
  @client = arg[:client] if arg[:client]
  return unless arg[:data]

  ATTRIBUTES.each do |attribute|
    send("#{attribute}=", arg[:data][attribute.to_s.camel_case_lower])
  end
end

Public Instance Methods

add(ids) click to toggle source
# File lib/napster/models/favorite.rb, line 89
def add(ids)
  post_options = {
    headers: {
      Authorization: 'Bearer ' + @client.access_token,
      'Content-Type' => 'application/json',
      'Accept-Version' => '2.0.0'
    }
  }
  body = prepare_add_favorites_body(ids)
  @client.post('/me/favorites', Oj.dump(body), post_options)
  status(ids)
end
get(params) click to toggle source

/me

# File lib/napster/models/favorite.rb, line 61
def get(params)
  get_options = {
    params: params,
    headers: {
      Authorization: 'Bearer ' + @client.access_token,
      'Content-Type' => 'application/json',
      'Accept-Version' => '2.0.0'
    }
  }
  response = @client.get('/me/favorites', get_options)
  Favorite.collection(data: response['favorites'], client: @client)
end
member_favorites_for(id) click to toggle source
# File lib/napster/models/favorite.rb, line 55
def member_favorites_for(id)
  request_member_favorites(id)
end
members_who_favorited_albums(id) click to toggle source

Top level methods

# File lib/napster/models/favorite.rb, line 41
def members_who_favorited_albums(id)
  e = 'Invalid playlist id'
  raise ArgumentError, e unless Napster::Moniker.check(id, :album)
  response = @client.get("/albums/#{id}/favorited/members")
  Member.collection(data: response['members'], client: @client)
end
members_who_favorited_artists(id) click to toggle source
# File lib/napster/models/favorite.rb, line 48
def members_who_favorited_artists(id)
  e = 'Invalid playlist id'
  raise ArgumentError, e unless Napster::Moniker.check(id, :artist)
  response = @client.get("/artists/#{id}/favorited/members")
  Member.collection(data: response['members'], client: @client)
end
remove(id) click to toggle source
# File lib/napster/models/favorite.rb, line 102
def remove(id)
  delete_options = {
    headers: {
      Authorization: 'Bearer ' + @client.access_token,
      'Content-Type' => 'application/json',
      'Accept-Version' => '2.0.0'
    }
  }
  @client.delete("/me/favorites/#{id}", delete_options)
  status([id])
end
status(ids) click to toggle source
# File lib/napster/models/favorite.rb, line 74
def status(ids)
  get_options = {
    params: {
      ids: ids
    },
    headers: {
      Authorization: 'Bearer ' + @client.access_token,
      'Content-Type' => 'application/json',
      'Accept-Version' => '2.0.0'
    }
  }
  response = @client.get('/me/favorites/status', get_options)
  FavoriteStatus.collection(data: response['status'], client: @client)
end

Private Instance Methods

prepare_add_favorites_body(ids) click to toggle source
# File lib/napster/models/favorite.rb, line 121
def prepare_add_favorites_body(ids)
  favorites_body = []
  ids.each do |id|
    favorites_body << { id: id }
  end
  { 'favorites' => favorites_body }
end
request_member_favorites(id) click to toggle source
# File lib/napster/models/favorite.rb, line 116
def request_member_favorites(id)
  response = @client.get("/favorites/#{id}/members")
  Member.collection(data: response['members'], client: @client)
end