/// <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)); }
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(); }
/// <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(); }