UNPKG

nativescript-spotify

Version:
105 lines 4.01 kB
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