nativescript-spotify
Version:
Spotify for your NativeScript app.
105 lines • 4.01 kB
JavaScript
var http = require('http');
var TNSSpotifySearch = (function () {
function TNSSpotifySearch() {
}
TNSSpotifySearch.QUERY = function (query, queryType, offset) {
if (offset === void 0) { offset = 0; }
var webSearchApi = "https://api.spotify.com/v1/search?";
query = query && query.length ? query.replace(/ /ig, '+') : '';
return new Promise(function (resolve, reject) {
if (query.length === 0) {
return;
}
var reset = false;
if (TNSSpotifySearch.CURRENT_SEARCH_QUERY !== query) {
TNSSpotifySearch.CURRENT_SEARCH_QUERY = query;
reset = true;
TNSSpotifySearch.CURRENT_LIST = undefined;
}
var processResults = function (results) {
TNSSpotifySearch.CURRENT_LIST = results;
if (results && results.items) {
var result = {
page: offset,
hasNextPage: results.next,
totalListLength: results.total
};
switch (queryType) {
case 'track':
result.tracks = TNSSpotifySearch.TRACKS_FROM_RESULTS(results);
break;
}
resolve(result);
}
else {
reject();
}
};
var errorHandler = function (err) {
console.log('Error:', err);
for (var key in err) {
console.log("key: " + key, err[key]);
}
reject(err);
};
var successHandler = function (res) {
var key = queryType + 's';
if (res && res[key]) {
processResults(res[key]);
}
else {
errorHandler(res);
}
};
console.log("TNSSpotifySearch.QUERY offset: " + offset);
if (!reset && offset > 0 && TNSSpotifySearch.CURRENT_LIST) {
if (TNSSpotifySearch.CURRENT_LIST.next) {
http.getJSON(TNSSpotifySearch.CURRENT_LIST.next).then(successHandler, errorHandler);
}
else {
resolve({});
}
}
else {
http.getJSON(webSearchApi + "type=" + queryType + "&q=" + query + "&limit=20&offset=" + offset).then(successHandler, errorHandler);
}
});
};
TNSSpotifySearch.TRACKS_FROM_RESULTS = function (results) {
var items = [];
console.log("processing " + results.items.length + " tracks...");
for (var i = 0; i < results.items.length; i++) {
var trackObj = results.items[i];
console.log(trackObj.name);
var spotifyArtist = trackObj.artists[0];
var artist = {};
if (spotifyArtist && spotifyArtist.uri && spotifyArtist.uri != 'null') {
artist = {
id: spotifyArtist.id,
name: spotifyArtist.name
};
var spotifyAlbum = trackObj.album;
var album = {};
if (spotifyAlbum) {
album = {
id: spotifyAlbum.id,
name: spotifyAlbum.name
};
}
var track = {
id: trackObj.id,
name: trackObj.name,
artist: artist,
duration: trackObj.duration_ms,
album: album,
playing: false
};
items.push(track);
}
}
return items;
};
return TNSSpotifySearch;
}());
exports.TNSSpotifySearch = TNSSpotifySearch;
//# sourceMappingURL=search.js.map