rhapsody-api
Version:
Rhapsody/Napster API for NodeJS
184 lines (152 loc) • 4.59 kB
JavaScript
var Artists = require("./Artists"),
Albums = require("./Albums"),
Tracks = require("./Tracks"),
Favorites = require("./Favorites"),
Library = require("./Library"),
History = require("./History"),
Playlists = require("./Playlists"),
Stations = require("./Stations");
function Rhapsody(data) {
var apikey = '';
if (typeof data === 'undefined') {
throw new Error("apikey required");
} else if (typeof data === 'string') {
apikey = data;
} else { // assume object
if (typeof data.apikey === 'undefined') {
throw new Error("apikey required");
} else {
apikey = data.apikey;
}
}
// ARTISTS
function topArtists(params) {
return Artists.getTop(apikey, params);
}
function artistDetails(artist) {
return Artists.getDetails(apikey, artist);
}
function artistBio(artist) {
return Artists.getBio(apikey, artist);
}
function artistNewReleases(artist, params) {
return Artists.getNewReleases(apikey, artist, params);
}
function artistTopAlbums(artist, params) {
return Artists.getTopAlbums(apikey, artist, params);
}
function artistDiscography(artist, params) {
return Artists.getDiscography(apikey, artist, params);
}
function artistTopTracks(artist, params) {
return Artists.getTopTracks(apikey, artist, params);
}
function artistImages(artist) {
return Artists.getImages(apikey, artist);
}
function artistSimilar(artist) {
return Artists.getSimilar(apikey, artist);
}
function artistEditorialPosts(artist) {
return Artists.getEditorialPosts(apikey, artist);
}
// ALBUMS
function newAlbums(params) {
return Albums.getNewReleases(apikey, params);
}
function staffPickAlbums(params) {
return Albums.getStaffPicks(apikey, params);
}
function topAlbums(params) {
return Albums.getTopAlbums(apikey, params);
}
function albumDetails(album, params) {
return Albums.getAlbumDetails(apikey, album);
}
function albumTracks(album, params) {
return Albums.getAlbumTracks(apikey, album);
}
function albumImages(album, params) {
return Albums.getAlbumImages(apikey, album);
}
function similarAlbums(album, params) {
return Albums.getSimilarAlbums(apikey, album);
}
function albumReviews(album, params) {
return Albums.getAlbumReviews(apikey, album);
}
function albumEditorialPosts(album, params) {
return Albums.getAlbumPosts(apikey, album);
}
// TRACKS
function getTopTracks(params) {
return Tracks.getTop(apikey, params);
}
function getTrackDetails(track) {
return Tracks.getDetails(apikey, track);
}
// FAVORITES
function myFavorites(token) {
return Favorites.getAll(token);
}
function addFavorite(token, tracks) {
}
function removeFavorite(token, track) {
}
// LIBRARY
function getMyLibraryArtists(token) {
return Library.getAllArtists(token);
}
// PLAYLISTS
function getMyPlaylists(token) {
return Playlists.getAll(token);
}
function getPlaylistDetails(token, playlist) {
return Playlists.getDetails(token, playlist);
}
function getPlaylistTracks(token, playlist) {
return Playlists.getTracks(token, playlist);
}
// HISTORY
function getRecentArtists(token) {
return History.getArtists(token);
}
function getRecentGenres(token) {
return History.getGenres(token);
}
function getRecentListens(token) {
return History.getHistory(token);
}
return {
topArtists:topArtists,
artistDetails:artistDetails,
artistBio:artistBio,
artistNewReleases:artistNewReleases,
artistTopAlbums:artistTopAlbums,
artistDiscography:artistDiscography,
artistTopTracks:artistTopTracks,
artistImages:artistImages,
artistSimilar:artistSimilar,
artistEditorialPosts:artistEditorialPosts,
newAlbums:newAlbums,
staffPickAlbums:staffPickAlbums,
topAlbums:topAlbums,
albumDetails:albumDetails,
albumTracks:albumTracks,
albumImages:albumImages,
similarAlbums:similarAlbums,
albumReviews:albumReviews,
albumEditorialPosts:albumEditorialPosts,
getTopTracks:getTopTracks,
getTrackDetails:getTrackDetails,
myFavorites:myFavorites,
getMyLibraryArtists:getMyLibraryArtists,
getMyPlaylists:getMyPlaylists,
getPlaylistDetails:getPlaylistDetails,
getPlaylistTracks:getPlaylistTracks,
getRecentArtists:getRecentArtists,
getRecentGenres:getRecentGenres,
getRecentListens:getRecentListens
}
}
module.exports = Rhapsody;