diff --git a/.jshintrc b/.jshintrc new file mode 100644 index 0000000..6d7cbc4 --- /dev/null +++ b/.jshintrc @@ -0,0 +1,17 @@ +{ + "node": true, + "browser": true, + "esnext": true, + "bitwise": false, + "curly": false, + "eqeqeq": true, + "eqnull": true, + "immed": true, + "latedef": true, + "newcap": true, + "noarg": true, + "strict": false, + "trailing": true, + "smarttabs": true, + "undef": false +} diff --git a/.meteor/packages b/.meteor/packages index 211fb46..a6ae03f 100644 --- a/.meteor/packages +++ b/.meteor/packages @@ -4,5 +4,5 @@ # but you can also edit it by hand. standard-app-packages -insecure preserve-inputs +http diff --git a/client/main.html b/client/main.html index 34531a9..c079b66 100644 --- a/client/main.html +++ b/client/main.html @@ -9,7 +9,7 @@
- {{> songsList}} + {{> hello}}
diff --git a/client/views/hello.html b/client/views/hello.html new file mode 100644 index 0000000..ab91fdc --- /dev/null +++ b/client/views/hello.html @@ -0,0 +1,11 @@ + diff --git a/client/views/hello.js b/client/views/hello.js new file mode 100644 index 0000000..6011e9a --- /dev/null +++ b/client/views/hello.js @@ -0,0 +1,29 @@ +var userName = "Pxl_Buzzard"; + +Template.hello.events({ + 'click #fetchButton': function (e) { + e.preventDefault(); + console.log("Recent tracks from last.fm!"); + $('#fetchButton').attr('disabled', 'true').val('loading...'); + userName = $('#userName').val(); + Meteor.call('fetchFromService', userName, function (err, respJson) { + if (err) { + window.alert("Error: " + err.reason); + console.log("error occured on receiving data on server. ", err); + } else if(respJson) { + console.log("respJson: ", respJson); + //window.alert(respJson.length + ' tracks received.'); + Session.set("recentTracks", respJson); + } + $('#fetchButton').removeAttr('disabled').val('Fetch'); + }); + } +}); + +Template.hello.recentTracks = function () { + return Session.get("recentTracks") || []; +}; + +Template.hello.userName = function() { + return userName; +}; diff --git a/collections/songs.js b/collections/songs.js index b5dd50f..29207bb 100644 --- a/collections/songs.js +++ b/collections/songs.js @@ -1 +1,26 @@ Songs = new Meteor.Collection('songs'); + +Meteor.methods({ + fetchFromService: function(userName) { + var url = "http://ws.audioscrobbler.com/2.0/?method=user.getrecenttracks&user="+userName+"&api_key="+Meteor.settings.lastfm_apikey+"&format=json"; + + var result = HTTP.get(url, {timeout:30000}); + if(result.statusCode === 200) { + var respJson = JSON.parse(result.content); + respJson = respJson.recenttracks.track; + + // clean last fm json + for(var i = 0; i < respJson.length; ++i) { + respJson[i].artist.text = respJson[i].artist['#text']; + delete respJson[i].artist['#text']; + } + + console.log("response received."); + return respJson; + } else { + console.log("Response issue: ", result.statusCode); + var errorJson = JSON.parse(result.content); + throw new Meteor.Error(result.statusCode, errorJson.error); + } + } +});