/// <summary>
        /// Given a trackID, gets its audio features then passes that
        /// to the Machine Learning Web Service
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public async Task <JsonResult> GetPrediction(string id)
        {
            Task <JObject> audioFeatures = SpotifyAPIs.GetSpotifyAudioFeaturesAsync(id);
            Task <int>     trackYear     = SpotifyAPIs.GetTrackReleaseYear(id);
            await Task.WhenAll(audioFeatures, trackYear);

            string response;

            if (audioFeatures.Result != null && trackYear.Result != 0)
            {
                var scoreRequest = PredictionRequest.CreateRequest(audioFeatures.Result, trackYear.Result);
                response = await CallMlService(scoreRequest);
            }
            else
            {
                response = "Try again: Spotify Web APIs returned an error";
            }

            return(Json(response, JsonRequestBehavior.AllowGet));
        }
        public override ViewResult Index()
        {
            SpotifyAPIs.GetSpotifyAccessToken(); //loads access token into runtime cache

            return(View("Index", "_Layout"));
        }