/// <summary>
        /// Authenticates a FitBit user using the FitBit Web API.
        /// </summary>
        /// <returns> A FitBit Authentication token </returns>
        public async Task <FitBitAuthenticationToken> GetFitBitAuthToken()
        {
            await FitBitAuthServer.Start();

            var exchangeToken     = string.Empty;
            var authTokenAsString = string.Empty;

            FitBitAuthServer.AuthorizationCodeReceived += async(sender, response) =>
            {
                await StravaAuthServer.Stop();

                exchangeToken = response.Code;
                var client  = new RestClient("https://api.fitbit.com/oauth2/token?client_id=22CCZ8&grant_type=authorization_code&redirect_uri=http://localhost:5002/fitbittoken");
                var request = new RestRequest(Method.POST);
                request.AddHeader("Authorization", "Basic MjJDQ1o4OmQ3M2YzMzhiNzEyMWQzNDdkYTM2YmU5NTAwMGM5NTli");
                request.AddParameter("code", exchangeToken);
                IRestResponse accessTokenResponse = client.Execute(request);
                fitBitAuthToken = JsonConvert.DeserializeObject <FitBitAuthenticationToken>(accessTokenResponse.Content);
            };

            var authTokenUri = new Uri("https://www.fitbit.com/oauth2/authorize?response_type=code&client_id=22CCZ8&redirect_uri=http://localhost:5002/fitbittoken&scope=activity%20heartrate");

            BrowserUtil.Open(authTokenUri);
            Task.Delay(20000).Wait();
            return(fitBitAuthToken);
        }
        public JsonResult GetFitBitRecentActivities(string access_token, DateTimeOffset?start_date = null, DateTimeOffset?end_date = null)
        {
            var tempToken = new FitBitAuthenticationToken {
                AccessToken = access_token
            };
            var activityHistoryJsonResult = this.dataSource.GetFitBitActivityHistory(tempToken).Result;

            if (start_date == null && end_date == null)
            {
                return(activityHistoryJsonResult);
            }

            ActivityLogsList  rawActivityHistory     = (ActivityLogsList)activityHistoryJsonResult.Value;
            List <Activities> correctActivityHistory = new List <Activities>();

            if (start_date == null && end_date != null)
            {
                DateTimeOffset extractedEndDate = (DateTimeOffset)end_date;
                foreach (var item in rawActivityHistory.Activities)
                {
                    if (item.StartTime <= extractedEndDate)
                    {
                        correctActivityHistory.Add(item);
                    }
                }
                return(new JsonResult(new ActivityLogsList {
                    Activities = correctActivityHistory
                }));
            }

            if (start_date != null && end_date == null)
            {
                DateTimeOffset extractedStartDate = (DateTimeOffset)start_date;
                foreach (var item in rawActivityHistory.Activities)
                {
                    if (item.StartTime >= extractedStartDate)
                    {
                        correctActivityHistory.Add(item);
                    }
                }
                return(new JsonResult(new ActivityLogsList {
                    Activities = correctActivityHistory
                }));
            }

            DateTimeOffset startDate = (DateTimeOffset)start_date;
            DateTimeOffset endDate   = (DateTimeOffset)end_date;

            foreach (var activity in rawActivityHistory.Activities)
            {
                if (activity.StartTime >= startDate && activity.StartTime <= endDate)
                {
                    correctActivityHistory.Add(activity);
                }
            }

            return(new JsonResult(new ActivityLogsList {
                Activities = correctActivityHistory
            }));
        }
        /// <inheritdoc/>
        public async Task <JsonResult> GetFitBitActivityHistory(FitBitAuthenticationToken authToken)
        {
            await Task.Delay(0);

            var fitBitActivityHistory = externalAPICaller.Get <ActivityLogsList>(new Uri("http://localhost:2222/1/user/-/activities"));

            return(new JsonResult(fitBitActivityHistory));
        }
Exemplo n.º 4
0
        public void GetFitBitRecentActivities_RunningActivitiesRetrieved()
        {
            var fitBitTokenAsJsonResult = sut.GetFitBitAuthenticationToken();

            fitBitTokenAsJsonResult.Result.Should().NotBeNull();
            fitBitTokenAsJsonResult.Result.Value.Should().NotBe(string.Empty);
            fitBitAuthenticationToken = new FitBitAuthenticationToken
            {
                AccessToken = (string)fitBitTokenAsJsonResult.Result.Value
            };
            fitBitAuthenticationToken.AccessToken.Should().NotBeNullOrEmpty();

            // Get Activities
            Task <JsonResult> activityHistoryResult = sut.GetFitBitActivityHistory(fitBitAuthenticationToken);

            activityHistoryResult.Result.Value.Should().NotBeNull();
            activityHistoryResult.Result.Value.Should().NotBe(string.Empty);
            var actualActivities = activityHistoryResult.Result.Value;

            actualActivities.Should().NotBeNull();
        }
Exemplo n.º 5
0
        /// <inheritdoc/>
        public async Task <JsonResult> GetFitBitActivityHistory(FitBitAuthenticationToken authToken)
        {
            await Task.Delay(0);

            FitbitAppCredentials credentials = new FitbitAppCredentials()
            {
                ClientId     = "22CCZ8",
                ClientSecret = "d73f338b7121d347da36be95000c959b"
            };

            Fitbit.Api.Portable.OAuth2.OAuth2AccessToken accessToken = new Fitbit.Api.Portable.OAuth2.OAuth2AccessToken()
            {
                Token        = authToken.AccessToken,
                ExpiresIn    = authToken.ExpiresIn,
                RefreshToken = authToken.RefreshToken,
                TokenType    = authToken.TokenType,
                UserId       = authToken.UserId,
            };

            var client    = new FitbitClient(credentials, accessToken);
            var lastMonth = DateTime.UtcNow;

            lastMonth.AddMonths(-7);
            var retrievedActivities = await client.GetActivityLogsListAsync(null, lastMonth);

            List <Activities> listOfRuns = new List <Activities>();

            foreach (var activity in retrievedActivities.Activities)
            {
                // 90009 is a run.
                if (activity.ActivityTypeId == 90009)
                {
                    listOfRuns.Add(activity);
                }
            }

            return(new JsonResult(new ActivityLogsList {
                Activities = listOfRuns
            }));
        }
        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();
        }