Beispiel #1
0
        public void GetSpotifyListeningHistoryWithAfterParameter_CorrectListeningHistoryReturned()
        {
            // Get spotify auth token
            var spotifyTokenAsJson = sut.GetSpotifyAuthenticationToken();

            spotifyTokenAsJson.Result.Should().NotBeNull();
            spotifyTokenAsJson.Result.Value.Should().NotBe(string.Empty);
            spotifyAuthenticationToken = JsonConvert.DeserializeObject <SpotifyAuthenticationToken>((string)spotifyTokenAsJson.Result.Value);
            spotifyAuthenticationToken.AccessToken.Should().NotBeNullOrEmpty();

            // Get listening history with after parameter
            var listeningHistory0Task = sut.GetSpotifyRecentlyPlayed(spotifyAuthenticationToken);
            var listeningHistory0Json = JsonConvert.SerializeObject(listeningHistory0Task.Result.Value);
            var listeningHistory0     = JsonConvert.DeserializeObject <CursorPaging <PlayHistoryItem> >(listeningHistory0Json);

            listeningHistory0.Items.Should().NotBeNull();

            var nowMinus7Days         = DateTime.UtcNow.AddHours(-5);
            var after                 = ((DateTimeOffset)nowMinus7Days).ToUnixTimeMilliseconds();
            var listeningHistory1Task = sut.GetSpotifyRecentlyPlayed(spotifyAuthenticationToken, after);
            var listeningHistory1Json = JsonConvert.SerializeObject(listeningHistory1Task.Result.Value);
            var listeningHistory1     = JsonConvert.DeserializeObject <CursorPaging <PlayHistoryItem> >(listeningHistory1Json);

            listeningHistory1.Items.Should().NotBeNull();
            listeningHistory1.Items.Should().NotBeEquivalentTo(listeningHistory0.Items);
        }
Beispiel #2
0
 public AuthenticationHeaderValue getHeaderAuthentication()
 {
     if (DateTime.Now > _expires)
     {
         HttpWebResponse resp = webRequest(authKey.urlToken);
         string          json = string.Empty;
         using (Stream respStr = resp.GetResponseStream())
         {
             using (StreamReader rdr = new StreamReader(respStr, Encoding.UTF8))
             {
                 //should get back a string i can then turn to json and parse for accesstoken
                 json = rdr.ReadToEnd();
                 rdr.Close();
             }
         }
         //Console.WriteLine(json);
         //Console.ReadKey();
         _token = JsonConvert.DeserializeObject <SpotifyAuthenticationToken>(json);
         set_Expires();
     }
     else
     {
         Console.WriteLine("No need to getToken");
     }
     return(new AuthenticationHeaderValue("Authorization", "Bearer " + _token.access_token)); //_token.access_token;
 }
        /// <inheritdoc/>
        public async Task <JsonResult> GetSpotifyRecentlyPlayed(SpotifyAuthenticationToken authToken, long?after = null)
        {
            await Task.Delay(0);

            var requesturiString    = string.Format("http://localhost:2222/v1/me/player/recently-played?after={0}", after);
            var musicHistory        = externalAPICaller.Get <CursorPaging <FakeResponseServer.DTO.PlayHistoryItem> >(new Uri(requesturiString));
            var correctMusicHistory = new CursorPaging <PlayHistoryItem>
            {
                Items = new List <PlayHistoryItem>()
            };

            foreach (var item in musicHistory.Items)
            {
                correctMusicHistory.Items.Add(new PlayHistoryItem
                {
                    Context = new Context
                    {
                        ExternalUrls = new Dictionary <string, string>(),
                        Href         = item.Context.Href,
                        Type         = item.Context.Type,
                        Uri          = item.Context.Uri
                    },
                    PlayedAt = (DateTime)item.PlayedAt,
                    Track    = new SimpleTrack
                    {
                        Artists          = new List <SimpleArtist>(),
                        AvailableMarkets = new List <string>(),
                        DiscNumber       = item.Track.DiscNumber,
                        DurationMs       = item.Track.DurationMs,
                        Explicit         = item.Track.Explicit,
                        ExternalUrls     = new Dictionary <string, string>(),
                        Href             = item.Track.Href,
                        Id         = item.Track.Id,
                        IsPlayable = item.Track.IsPlayable,
                        LinkedFrom = new LinkedTrack
                        {
                            ExternalUrls = new Dictionary <string, string>(),
                            Href         = item.Track.LinkedFrom.Href,
                            Id           = item.Track.LinkedFrom.Id,
                            Type         = item.Track.LinkedFrom.Type,
                            Uri          = item.Track.LinkedFrom.Uri,
                        },
                        Name        = item.Track.Name,
                        PreviewUrl  = item.Track.PreviewUrl,
                        TrackNumber = item.Track.TrackNumber,
                        Type        = ItemType.Track,
                        Uri         = item.Track.Uri
                    }
                });;
            }
            return(new JsonResult(correctMusicHistory));
        }
Beispiel #4
0
        /// <inheritdoc/>
        public async Task <JsonResult> GetSpotifyRecentlyPlayed(SpotifyAuthenticationToken authToken, long?after = null)
        {
            var request = new PlayerRecentlyPlayedRequest
            {
                After = after,
                Limit = 50
            };

            var spotifyClient    = new SpotifyClient(authToken.AccessToken);
            var listeningHistory = await spotifyClient.Player.GetRecentlyPlayed(request);

            return(new JsonResult(listeningHistory));
        }
Beispiel #5
0
        public void GetSpotifyListeningHistory_ListeningHistoryRetrieved()
        {
            // Get spotify auth token
            var spotifyTokenAsJson = sut.GetSpotifyAuthenticationToken();

            spotifyTokenAsJson.Result.Should().NotBeNull();
            spotifyTokenAsJson.Result.Value.Should().NotBe(string.Empty);
            spotifyAuthenticationToken = JsonConvert.DeserializeObject <SpotifyAuthenticationToken>((string)spotifyTokenAsJson.Result.Value);
            spotifyAuthenticationToken.AccessToken.Should().NotBeNullOrEmpty();

            // Get listening history
            var listeningHistory = sut.GetSpotifyRecentlyPlayed(spotifyAuthenticationToken);

            listeningHistory.Result.Value.Should().NotBeNull();
            listeningHistory.Result.Value.Should().NotBe(string.Empty);
        }
        public JsonResult GetSpotifyRecentlyPlayed(string access_token, DateTimeOffset?after = null, double?duration = null)
        {
            CursorPaging <PlayHistoryItem> playHistory = new CursorPaging <PlayHistoryItem>();
            var tempToken = new SpotifyAuthenticationToken {
                AccessToken = access_token
            };

            if (after != null)
            {
                DateTimeOffset actualAfter = (DateTimeOffset)after;
                var            afterAsUnix = actualAfter.ToUnixTimeMilliseconds();
                playHistory = (CursorPaging <PlayHistoryItem>) this.dataSource.GetSpotifyRecentlyPlayed(tempToken, afterAsUnix).Result.Value;

                if (duration != null)
                {
                    var actualDuration = (double)duration;
                    var end            = actualAfter.AddSeconds(actualDuration);
                    var validSongs     = new List <PlayHistoryItem>();
                    foreach (var track in playHistory.Items)
                    {
                        if (track.PlayedAt >= actualAfter && track.PlayedAt < end)
                        {
                            validSongs.Add(track);
                        }
                    }
                    playHistory.Items = validSongs;
                    return(new JsonResult(playHistory));
                }

                return(new JsonResult(playHistory));
            }
            else
            {
                playHistory = (CursorPaging <PlayHistoryItem>) this.dataSource.GetSpotifyRecentlyPlayed(tempToken, null).Result.Value;
                return(new JsonResult(playHistory));
            }
        }
        public void SetUpTests()
        {
            var now       = DateTime.UtcNow;
            var now_local = DateTime.Now;
            var offset    = -2;

            foreach (var item in PlayHistoryItems)
            {
                item.PlayedAt = now.AddDays(offset);
                offset++;
            }

            foreach (var item in ActivityItems)
            {
                item.start_date       = now;
                item.start_date_local = now_local;
            }

            foreach (var item in FitBitActivityItems)
            {
                item.StartTime         = now;
                item.OriginalStartTime = now;
                item.LastModified      = now;
            }

            offset = -1;
            foreach (var item in LastFMTrackItems)
            {
                item.TimePlayed = now.AddDays(offset);
                offset++;
            }

            RegisterMusicHistory(PlayHistoryItems);

            RegisterActivityHistory(ActivityItems);

            RegisterFitBitHistory(FitBitActivityItems);

            RegisterLastFMTracks(LastFMTrackItems);

            sut = MakeSut();

            // Get spotify auth token.
            var spotifyAuthTask = sut.GetSpotifyAuthenticationToken();

            spotifyAuthTask.Result.Should().NotBeNull();
            spotifyAuthTask.Result.Value.Should().NotBe(string.Empty);
            var temp = JsonConvert.SerializeObject(spotifyAuthTask.Result.Value);

            spotifyAuthToken = JsonConvert.DeserializeObject <SpotifyAuthenticationToken>(temp);
            spotifyAuthToken.AccessToken.Should().NotBeNullOrEmpty();

            // Get strava auth token.
            var stravaAuthTask = sut.GetStravaAuthenticationToken();

            stravaAuthTask.Result.Should().NotBeNull();
            stravaAuthTask.Result.Value.Should().NotBeNull();
            temp            = JsonConvert.SerializeObject(stravaAuthTask.Result.Value);
            stravaAuthToken = JsonConvert.DeserializeObject <StravaAuthenticationToken>(temp);
            stravaAuthToken.access_token.Should().NotBeNullOrEmpty();

            // Get FitBit auth token.
            var fitBitAuthTask = sut.GetFitBitAuthenticationToken();

            fitBitAuthTask.Result.Should().NotBeNull();
            fitBitAuthTask.Result.Value.Should().NotBeNull();
            temp            = JsonConvert.SerializeObject(fitBitAuthTask.Result.Value);
            fitBitAuthToken = JsonConvert.DeserializeObject <FitBitAuthenticationToken>(temp);
            fitBitAuthToken.AccessToken.Should().NotBeNullOrEmpty();
        }