public void UpdateProfile_AthleteTypeNotValid_ArgumentException()
 {
     //Arrange
     Mock<AccessTokenManagerBaseStub> tokenManager = new Mock<AccessTokenManagerBaseStub>();
     ProfileEndpoint profileRequest = new ProfileEndpoint(tokenManager.Object, new UsersModel());
     //Act and Assert
     Assert.Throws(typeof(ArgumentException), () => { profileRequest.UpdateProfile("This is not a valid Athlete Type."); });
 }
 public void UpdateProfile_AthleteTypeValid_DoesNotThrowArgumentException()
 {
     //Arrange
     Mock<AccessTokenManagerBaseStub> tokenManager = new Mock<AccessTokenManagerBaseStub>();
     ProfileEndpoint profileRequest = new ProfileEndpoint(tokenManager.Object, new UsersModel());
     //Act and Assert
     Assert.DoesNotThrow(() => { profileRequest.UpdateProfile(ProfileEndpoint.ValidAthleteType.First()); });
 }
Beispiel #3
0
        public void UpdateProfile_AthleteTypeValid_DoesNotThrowArgumentException()
        {
            //Arrange
            Mock <AccessTokenManagerBaseStub> tokenManager = new Mock <AccessTokenManagerBaseStub>();
            ProfileEndpoint profileRequest = new ProfileEndpoint(tokenManager.Object, new UsersModel());

            //Act and Assert
            Assert.DoesNotThrow(() => { profileRequest.UpdateProfile(ProfileEndpoint.ValidAthleteType.First()); });
        }
Beispiel #4
0
        public void UpdateProfile_AthleteTypeNotValid_ArgumentException()
        {
            //Arrange
            Mock <AccessTokenManagerBaseStub> tokenManager = new Mock <AccessTokenManagerBaseStub>();
            ProfileEndpoint profileRequest = new ProfileEndpoint(tokenManager.Object, new UsersModel());

            //Act and Assert
            Assert.Throws(typeof(ArgumentException), () => { profileRequest.UpdateProfile("This is not a valid Athlete Type."); });
        }
Beispiel #5
0
        protected MovesClient(ISimpleRestClient restClient)
            : base(restClient)
        {
            AuthenticationBaseUrl = "https://api.moves-app.com/oauth/v1/";

            Places    = new PlaceEndpoint(RestClient);
            Profile   = new ProfileEndpoint(RestClient);
            Storyline = new StorylineEndpoint(RestClient);
            Summary   = new SummaryEndpoint(RestClient);
            Activity  = new ActivityEndpoint(RestClient);
        }
Beispiel #6
0
        public DiabloApi(IDiabloApiConfiguration configuration)
        {
            _configuration = configuration;

            var tokenBucket = new DefaultTokenBucket();

            _oAuth    = new OAuthEndpoint(tokenBucket);
            Item      = new ItemEndpoint(tokenBucket);
            Act       = new ActEndpoint(tokenBucket);
            Artisan   = new ArtisanEndpoint(tokenBucket);
            Follower  = new FollowerEndpoint(tokenBucket);
            Character = new CharacterEndpoint(tokenBucket);
            Profile   = new ProfileEndpoint(tokenBucket);
            Season    = new SeasonEndpoint(tokenBucket);
        }
        protected void AttemptAuth(object sender, EventArgs e)
        {
            _clientIdEntry.FetchValue();
            ClientId = _clientIdEntry.Value;
            _clientSecretEntry.FetchValue();
            ClientSecret = _clientSecretEntry.Value;
            _requestUriEntry.FetchValue();
            RequestUri = _requestUriEntry.Value;

            if ((string.IsNullOrEmpty(ClientId)) || (string.IsNullOrEmpty(ClientSecret)) || (string.IsNullOrEmpty(RequestUri)))
            {
                UIAlertView firstPageValidationAlert = new UIAlertView("Whoops!", "Please provide a Client Id, Client Secret and Request Uri.", null, "Okay");
                firstPageValidationAlert.Show();
            }
            else
            {
                //Elements for Second Page - authorization
                var secondPage = new UIViewController();
                secondPage.Title = "Authorize";
                var authorizeWebView = new UIWebView(secondPage.View.Frame);
                secondPage.View.AddSubview(authorizeWebView);
                viewController.VisibleViewController.NavigationController.PushViewController(secondPage, true);
                authorizeWebView.LoadFinished += delegate(object s, EventArgs ev) {
                    string       currentUrl     = authorizeWebView.Request.Url.AbsoluteString;
                    const string CodeIdentifier = "code=";
                    if (currentUrl.Contains(CodeIdentifier))
                    {
                        //We've received an authorization code - initialize the token manager to get a create a token
                        Code         = currentUrl.Substring(currentUrl.IndexOf(CodeIdentifier) + CodeIdentifier.Length);
                        TokenManager = new AccessTokenManager(ClientId, ClientSecret, RequestUri);
                        InvokeOnMainThread(() => {
                            UIApplication.SharedApplication.NetworkActivityIndicatorVisible = true;
                        });
                        TokenManager.InitAccessToken(Code);
                        var userRequest = new UsersEndpoint(TokenManager);
                        User = userRequest.GetUser();
                        var profileRequest = new ProfileEndpoint(TokenManager, User);
                        Profile = profileRequest.GetProfile();
                        InvokeOnMainThread(() => {
                            UIApplication.SharedApplication.NetworkActivityIndicatorVisible = false;
                        });
                        ShowUserAndProfile();
                    }
                };
                authorizeWebView.LoadRequest(new NSUrlRequest(new NSUrl(HealthGraphAuthorizeEndpoint + "?client_id=" + ClientId + "&redirect_uri=" + HttpUtility.UrlEncode(RequestUri) + "&response_type=code")));
            }
        }
Beispiel #8
0
        /// <summary>
        /// Create a R6S API instance with optional remember me option.
        /// </summary>
        /// <param name="email">
        /// Email address of a Ubisoft account.
        /// </param>
        /// <param name="password">
        /// Password of a Ubisoft account.
        /// </param>
        /// <param name="rememberMe">
        /// Option for Ubisoft to remember this instance's session (can be changed over time by <see cref="RememberMe"/>.
        /// </param>
        public R6Api(string email, string password, bool rememberMe)
        {
            if (string.IsNullOrWhiteSpace(email))
            {
                throw new ArgumentNullException(this.GetType().FullName, "Email address cannot be null or empty.");
            }
            else if (string.IsNullOrWhiteSpace(password))
            {
                throw new ArgumentNullException(this.GetType().FullName, "Password cannot be null or empty.");
            }

            _session                    = new SessionEndpoint(email, password, rememberMe);
            Profile                     = new ProfileEndpoint(_session);
            PlayerProgression           = new PlayerProgressionEndpoint(_session);
            Player                      = new PlayerEndpoint(_session);
            PlayersSkillRecordsEndpoint = new PlayersSkillRecordsEndpoint(_session);
            PlayerStatisticsEndpoint    = new PlayerStatisticsEndpoint(_session);
        }
 public ActionResult Activity()
 {
     // Request access to user profile
     var tokenManager = new AccessTokenManager("068e4fe819724d1b94a8889b6a23edbf", "152865a51b9f4b2d80248c5341de6dd5", "http://www.jmckillip.com", "b9be0fab840e458389349bee9ccb6c0a");
     var userRequest = new UsersEndpoint(tokenManager);
     var user = userRequest.GetUser();
     // Get user profile 
     var profileRequest = new ProfileEndpoint(tokenManager, user);
     var profile = profileRequest.GetProfile();
     // Get user name to pass to Activity view via ViewData Dictionary
     ViewData["name"] = profile.Name;
     //Retrieve activities
     var activitiesRequest = new FitnessActivitiesEndpoint(tokenManager, user);
     // Since the feed shows latest first, I only want to get that last one
     var activitiesPage = activitiesRequest.GetFeedPage(null, 1);
     // items[0].Uri will return the URI of the latest activity.
     var items = activitiesPage.Items;
     // Get the latest activity
     var latestActivity = activitiesRequest.GetActivity(items[0].Uri);
     return View(latestActivity);
 }
Beispiel #10
0
        protected void DisplayHealthGraphSamples()
        {
            PnlTokenSamples.Visible = true;
            LblAccessToken.Text     = Token.AccessToken;
            LblAccessType.Text      = Token.TokenType;

            //User Uri example
            var userRequest = new UsersEndpoint(TokenManager);
            var user        = userRequest.GetUser();

            LblUserId.Text = user.UserID.ToString();
            LblUserStrengthTrainingActivities.Text = user.StrengthTrainingActivities;
            LblUserWeight.Text               = user.Weight;
            LblUserSettings.Text             = user.Settings;
            LblUserDiabetes.Text             = user.Diabetes;
            LblUserTeam.Text                 = user.Team;
            LblUserSleep.Text                = user.Sleep;
            LblUserFitnessActivities.Text    = user.FitnessActivities;
            LblUserNutrition.Text            = user.Nutrition;
            LblUserGeneralMeasurements.Text  = user.GeneralMeasurements;
            LblUserBackgroundActivities.Text = user.BackgroundActivities;
            LblUserRecords.Text              = user.Records;
            LblUserProfile.Text              = user.Profile;

            //Get user profile
            var profileRequest = new ProfileEndpoint(TokenManager, user);
            var profile        = profileRequest.GetProfile();

            //Optionally change and update it here
            //profile.AthleteType = "Hiker";
            //profile.AthleteType = "Hiker";
            //profile = profileRequest.UpdateProfile(profile);
            //Display user profile
            LblProfileName.Text          = !string.IsNullOrEmpty(profile.Name) ? profile.Name : "N/A";
            LblProfileLocation.Text      = !string.IsNullOrEmpty(profile.Location) ? profile.Location : "N/A";
            LblProfileAthleteType.Text   = !string.IsNullOrEmpty(profile.AthleteType) ? profile.AthleteType : "N/A";
            LblProfileGender.Text        = !string.IsNullOrEmpty(profile.Gender) ? profile.Gender : "N/A";
            LblProfileBirthday.Text      = profile.Birthday.HasValue ? profile.Birthday.Value.ToShortDateString() : "N/A";
            LblProfileElite.Text         = profile.Elite.ToString();
            LblProfileProfile.Text       = profile.Profile;
            LblProfileSmallPicture.Text  = !string.IsNullOrEmpty(profile.SmallPicture) ? profile.SmallPicture : "N/A";
            LblProfileNormalPicture.Text = !string.IsNullOrEmpty(profile.NormalPicture) ? profile.NormalPicture : "N/A";
            LblProfileMediumPicture.Text = !string.IsNullOrEmpty(profile.MediumPicture) ? profile.MediumPicture : "N/A";
            LblProfileLargePicture.Text  = !string.IsNullOrEmpty(profile.LargePicture) ? profile.LargePicture : "N/A";

            //var measurementNew = new DiabetesMeasurementsNewModel
            //{
            //    Timestamp = DateTime.Now,
            //    Triglyceride = 150,
            //    PostToFacebook = false,
            //    PostToTwitter = false
            //};
            //var measurementRequest = new DiabetesMeasurementsEndpoint(TokenManager, user);
            //var uriOfMeasurement = measurementRequest.CreateMeasurement(measurementNew);
            //var measurementPage = measurementRequest.GetFeedPage();
            //string uriOfMeasurement = measurementPage.Items.First().Uri;
            //var measurementDetail = measurementRequest.GetMeasurement(uriOfMeasurement);
            //measurementDetail.Triglyceride = 40;
            //measurementDetail = measurementRequest.UpdateMeasurement(measurementDetail);
            //measurementRequest.DeleteMeasurement(uriOfMeasurement);

            //var measurementNew = new GeneralMeasurementsNewModel
            //{
            //    Timestamp = DateTime.Now,
            //    Testosterone = 40,
            //    PostToFacebook = false,
            //    PostToTwitter = false
            //};
            //var measurementRequest = new GeneralMeasurementsEndpoint(TokenManager, user);
            //var uriOfMeasurement = measurementRequest.CreateMeasurement(measurementNew);
            //var measurementPage = measurementRequest.GetFeedPage();
            //string uriOfMeasurement = measurementPage.Items.First().Uri;
            //var measurementDetail = measurementRequest.GetMeasurement(uriOfMeasurement);
            //measurementDetail.Testosterone = 100;
            //measurementDetail = measurementRequest.UpdateMeasurement(measurementDetail);
            //measurementRequest.DeleteMeasurement(uriOfMeasurement);

            //var backgroundNew = new BackgroundActivitiesNewModel
            //{
            //    Timestamp = DateTime.Now,
            //    Steps = 1000,
            //    PostToFacebook = false,
            //    PostToTwitter = false
            //};
            //var backgroundActivitiesRequest = new BackgroundActivitiesEndpoint(TokenManager, user);
            //var uriOfBackground = backgroundActivitiesRequest.CreateActivity(backgroundNew);
            //var backgroundPage = backgroundActivitiesRequest.GetFeedPage();
            //string uriOfBackground = backgroundPage.Items.First().Uri;
            //var backgroundDetail = backgroundActivitiesRequest.GetActivity(uriOfBackground);
            //backgroundDetail.CaloriesBurned = 100;
            //backgroundDetail = backgroundActivitiesRequest.UpdateActivity(backgroundDetail);
            //backgroundActivitiesRequest.DeleteActivity(uriOfBackground);

            //var strengthTrainingNew = new StrengthTrainingActivitiesNewModel
            //{
            //    StartTime = DateTime.Now,
            //    Notes = "Good exercise.",
            //    TotalCalories = 100,
            //    Exercises = new List<ExercisesModel>
            //    {
            //        new ExercisesModel
            //        {
            //            PrimaryType = "Barbell Curl",
            //            PrimaryMuscleGroup = "Arms",
            //            Sets = new List<SetsModel>
            //            {
            //                new SetsModel
            //                {
            //                    Weight = 200,
            //                    Repetitions = 4
            //                }
            //            }
            //        }
            //    },
            //    PostToFacebook = false,
            //    PostToTwitter = false
            //};
            //var strengthTrainingRequest = new StrengthTrainingActivitiesEndpoint(TokenManager, user);
            ////var uriOfStrengthTraining = strengthTrainingRequest.CreateActivity(strengthTrainingNew);
            //var activitiesPage = strengthTrainingRequest.GetFeedPage();
            //string uriOfStrengthTraining = activitiesPage.Items.First().Uri;
            //var activitiesDetail = strengthTrainingRequest.GetActivity(uriOfStrengthTraining);
            //activitiesDetail.TotalCalories = 200;
            //activitiesDetail = strengthTrainingRequest.UpdateActivity(activitiesDetail);
            //strengthTrainingRequest.DeleteActivity(uriOfStrengthTraining);


            //var sleepRequest = new SleepEndpoint(TokenManager, user);
            //var sleepNew = new SleepNewModel
            //{
            //    Timestamp = DateTime.Now,
            //    TimesWoken = 3,
            //    PostToTwitter = false,
            //    PostToFacebook = false
            //};
            //var uriOfSleep = sleepRequest.CreateSleep(sleepNew);
            //var sleepPage = sleepRequest.GetFeedPage();
            //var sleepDetail = sleepRequest.GetSleep(uriOfSleep);

            //var uriOfSleep = sleepPage.Items.First().Uri;
            //var sleepDetail = sleepRequest.GetSleep(uriOfSleep);
            //sleepDetail.Rem = 180;
            //sleepDetail = sleepRequest.UpdateSleep(sleepDetail);

            //sleepRequest.DeleteSleep(uriOfSleep);

            //int test = 4;
            //var settingsRequest = new SettingsEndpoint(TokenManager, user);
            //var settings = settingsRequest.GetSettings();
            //settings.FirstDayOfWeek = "Monday";
            //settings = settingsRequest.UpdateSettings(settings);

            //var streetTeamRequest = new StreetTeamEndpoint(TokenManager, user);
            //var streetTeamItems = streetTeamRequest.GetFeedPage(pageIndex: 1, pageSize: 2);
            //var uri = streetTeamRequest.CreateTeamInvitation(new StreetTeamInvitationsModel { UserID = 7072229 });
            //var results = streetTeamRequest.GetStreetTeam(uri);

            //var nutritionNew = new NutritionNewModel
            //{
            //    Timestamp = DateTime.Now,
            //    Fat = 200,
            //    PostToFacebook = false,
            //    PostToTwitter = false
            //};
            //var nutritionRequest = new NutritionEndpoint(TokenManager, user);
            //var uriOfNutrition = nutritionRequest.CreateNutrition(nutritionNew);
            //var uriOfNutrition = nutritionRequest.GetFeedPage().Items.First().Uri;
            //nutritionRequest.DeleteNutrition(uriOfNutrition);

            //var weightRequest = new WeightEndpoint(TokenManager, user);

            /*
             * var weightNew = new WeightNewModel
             * {
             *  Timestamp = DateTime.Now,
             *  Weight = 90,
             *  PostToFacebook = false,
             *  PostToTwitter = false
             * };
             * var test = weightRequest.CreateWeight(weightNew);
             */
            //var weightItems =  weightRequest.GetFeedPage().Items;
            //var weightItem = weightItems.First();

            /*
             * var weightDetail = weightRequest.GetWeight(weightItem.Uri);
             * weightDetail.Bmi = 240;
             * weightDetail = weightRequest.UpdateWeight(weightDetail);
             */
            //weightRequest.DeleteWeight(weightItem.Uri);


            //var activitiesRequest = new FitnessActivitiesEndpoint(TokenManager, user);

            /*
             * var newActivity = new FitnessActivitiesNewModel
             * {
             *  Type = "Running",
             *  StartTime = DateTime.Now,
             *  Duration = 50,
             *  Notes = "blah6!"
             * };
             * var uri = activitiesRequest.CreateActivity(newActivity);
             */
            //var activitiesItem = activitiesRequest.GetFeedPage(pageSize: 2, noLaterThan: new DateTime(2013, 6, 1)).Items.FirstOrDefault();
            //if (activitiesItem != null)
            //{
            //    var activitiesDetail = activitiesRequest.GetActivity(activitiesItem.Uri);

            //Get associated comments
            //    var commentRequest = new CommentThreadsEndpoint(TokenManager);
            //    var commentThread = commentRequest.GetCommentThread(activitiesDetail.Comments);

            //    var newComment = new CommentsNewModel
            //    {
            //        Comment = "Here we go!"
            //    };
            //    commentRequest.CreateComment(newComment, activitiesDetail.Comments);
            //commentRequest.CreateCommentAsync(() => { }, (ex) => { }, newComment, activitiesDetail.Comments);

            //    commentThread = commentRequest.GetCommentThread(activitiesDetail.Comments);

            //Retrieve and update an activity
            //var activitiesDetail = activitiesRequest.GetActivity(activitiesItem.Uri);
            //activitiesDetail.Type = "Running";
            //activitiesDetail.Equipment = "None";
            //activitiesDetail.AverageHeartRate = null;
            //activitiesDetail.Notes = "Testing is fun.";
            //activitiesRequest.UpdateActivity(activitiesDetail);

            //Delete the activity
            //activitiesRequest.DeleteActivity(activitiesDetail.Uri);
            // }


            //var recordsRequest = new RecordsEndpoint(TokenManager, user);
            //var items = recordsRequest.GetRecordsFeed();
            //int test = 4;
        }
Beispiel #11
0
        void loadProfile()
        {
            int progressValue = 0;

            try{
                // initialise the loading progress bar
                SetStatusProgressThreadSafe(statusBar, "Step", 1);
                SetStatusProgressThreadSafe(statusBar, "Maximum", 4);
                SetStatusProgressThreadSafe(statusBar, "Value", progressValue);

                _tm = new AccessTokenManager(_client_id, _client_secret, "https://www.facebook.com/connect/login_success.html", _token);


                //Retrieve URIs for HealthGraph endpoints.
                SetStatusTextThreadSafe(statusBar, "Loading available HealthPoint endpoints...");

                _userRequest = new UsersEndpoint(_tm);
                _user        = _userRequest.GetUser();

                SetStatusProgressThreadSafe(statusBar, "Value", ++progressValue);

                // Load the Profile information

                SetStatusTextThreadSafe(statusBar, "Loading user profile information...");
                ProfileEndpoint profile     = new ProfileEndpoint(_tm, _user);
                ProfileModel    userProfile = profile.GetProfile();

                SetControlPropertyThreadSafe(pbProfileMedium, "ImageLocation", userProfile.SmallPicture);

                SetControlPropertyThreadSafe(lblProfileName, "Text", userProfile.Name);
                SetControlPropertyThreadSafe(lblGender, "Text", userProfile.Gender);
                SetControlPropertyThreadSafe(lblAthleteType, "Text", userProfile.AthleteType);
                SetControlPropertyThreadSafe(lblDob, "Text", ((DateTime)userProfile.Birthday).ToString("dd/MM/yyyy", System.Globalization.CultureInfo.InvariantCulture));
                SetControlPropertyThreadSafe(lblProfile, "Text", userProfile.Profile);

                //lblProfile.Links.Add(0,0,userProfile.Profile);
                SetControlPropertyThreadSafe(lblLocation, "Text", userProfile.Location);

                if (userProfile.Elite)
                {
                    SetControlPropertyThreadSafe(pbElite, "Visible", true);
                }
                else
                {
                    SetControlPropertyThreadSafe(pbElite, "Visible", false);
                }
                SetStatusProgressThreadSafe(statusBar, "Value", ++progressValue);

                // Load the Street Team information
                SetStatusTextThreadSafe(statusBar, "Loading StreetTeam information...");

                StreetTeamEndpoint team = new StreetTeamEndpoint(_tm, _user);
                FeedModel <StreetTeamFeedItemModel> streetteam = team.GetFeedPage(0, 25);

                for (int st = 0; st < streetteam.Items.Count; st++)
                {
                    string [] sti =
                    {
                        streetteam.Items[st].Name,
                        streetteam.Items[st].Profile,
                        streetteam.Items[st].Uri
                    };
                    AddListViewItem(lstStreetTeam, new ListViewItem(sti));
                }

                SetStatusProgressThreadSafe(statusBar, "Value", ++progressValue);

                // Load the Records information
                SetStatusTextThreadSafe(statusBar, "Loading user Records information...");

                RecordsEndpoint records = new RecordsEndpoint(_tm, _user);

                List <RecordsFeedItemModel> userRecords = records.GetRecordsFeed();

                for (int r = 0; r < userRecords.Count; r++)
                {
                    if (userRecords[r].ActivityType == "Cycling")
                    {
                        for (int s = 0; s < userRecords[r].Stats.Count; s++)
                        {
                            string recdistance = userRecords[r].Stats[s].Value.ToString();

                            if (userRecords[r].Stats[s].StatType == "OVERALL")
                            {
                                recdistance = ((Convert.ToDouble(recdistance) / 1000) * 0.621371192).ToString();                               // convert to miles
                            }

                            string [] rec =
                            {
                                userRecords[r].Stats[s].StatType,
                                ((DateTime)userRecords[r].Stats[s].Date).ToString("dd/MM/yyyy"),
                                string.Format("{0:0.00}", Convert.ToDouble(recdistance))
                            };
                            AddListViewItem(lstRecords, new ListViewItem(rec));
                        }
                    }
                }
                SetStatusProgressThreadSafe(statusBar, "Value", ++progressValue);

                // Load the activities information
                SetStatusTextThreadSafe(statusBar, "Loading activities...");

                FitnessActivitiesEndpoint activities = new FitnessActivitiesEndpoint(_tm, _user);
                int userActivitiesPage    = 0;
                int userActivitiesPerPage = 25;
                FeedModel <FitnessActivitiesFeedItemModel> userActivities = activities.GetFeedPage(userActivitiesPage, userActivitiesPerPage);
                SetControlPropertyThreadSafe(lblTotalActivities, "Text", userActivities.Size.ToString() + " Activities");

                int userActivitiesCount = userActivities.Size;
                int loadingCount        = 0;
                SetStatusProgressThreadSafe(statusBar, "Maximum", userActivities.Size);
                SetStatusProgressThreadSafe(statusBar, "Value", loadingCount);

                for (userActivitiesPage = 0; userActivitiesPage <= Convert.ToInt32(Math.Ceiling(Convert.ToDouble(userActivitiesCount / userActivitiesPerPage))); userActivitiesPage++)
                {
                    // if not first page, load the next page
                    if (userActivitiesPage > 0)
                    {
                        userActivities = activities.GetFeedPage(userActivitiesPage, userActivitiesPerPage);
                    }
                    for (int a = 0; a < userActivities.Items.Count; a++)
                    {
                        SetStatusProgressThreadSafe(statusBar, "Value", ++loadingCount);
                        TimeSpan duration   = TimeSpan.FromSeconds(userActivities.Items[a].Duration);
                        string   duration_f = string.Format("{0:D2} h {1:D2} m {2:D2} s",
                                                            duration.Hours,
                                                            duration.Minutes,
                                                            duration.Seconds
                                                            );
                        string [] arec =
                        {
                            userActivities.Items[a].Type,
                            userActivities.Items[a].StartTime.ToString("dd/MM/yyyy HH:mm:ss"),
                            duration_f,
                            string.Format("{0:0.00 miles}",                                   (userActivities.Items[a].TotalDistance / 1000) * 0.621371192),
                            string.Format("{0:0.00} mph",                                     ((userActivities.Items[a].TotalDistance / 1000) * 0.621371192) / (userActivities.Items[a].Duration / 3600)),
                            userActivities.Items[a].Uri
                        };
                        AddListViewItem(lstActivities, new ListViewItem(arec));
                    }
                }
                ResizeListView(lstActivities);
                SetStatusTextThreadSafe(statusBar, "Done.");
            }
            catch (HealthGraphException he)
            {
                MessageBox.Show(he.ToString());
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
            finally{
                SetControlPropertyThreadSafe(lstActivities, "Enabled", true);
            }
        }
        protected void DisplayHealthGraphSamples()
        {
            PnlTokenSamples.Visible = true;
            LblAccessToken.Text = Token.AccessToken;
            LblAccessType.Text = Token.TokenType;

            //User Uri example
            var userRequest = new UsersEndpoint(TokenManager);
            var user = userRequest.GetUser();
            LblUserId.Text = user.UserID.ToString();
            LblUserStrengthTrainingActivities.Text = user.StrengthTrainingActivities;
            LblUserWeight.Text = user.Weight;
            LblUserSettings.Text = user.Settings;
            LblUserDiabetes.Text = user.Diabetes;
            LblUserTeam.Text = user.Team;
            LblUserSleep.Text = user.Sleep;
            LblUserFitnessActivities.Text = user.FitnessActivities;
            LblUserNutrition.Text = user.Nutrition;
            LblUserGeneralMeasurements.Text = user.GeneralMeasurements;
            LblUserBackgroundActivities.Text = user.BackgroundActivities;
            LblUserRecords.Text = user.Records;
            LblUserProfile.Text = user.Profile;

            //Get user profile
            var profileRequest = new ProfileEndpoint(TokenManager, user);
            var profile = profileRequest.GetProfile();
            //Optionally change and update it here
            //profile.AthleteType = "Hiker";
            //profile.AthleteType = "Hiker";
            //profile = profileRequest.UpdateProfile(profile);
            //Display user profile
            LblProfileName.Text = !string.IsNullOrEmpty(profile.Name) ? profile.Name : "N/A";
            LblProfileLocation.Text = !string.IsNullOrEmpty(profile.Location) ? profile.Location : "N/A";
            LblProfileAthleteType.Text = !string.IsNullOrEmpty(profile.AthleteType) ? profile.AthleteType : "N/A";
            LblProfileGender.Text = !string.IsNullOrEmpty(profile.Gender) ? profile.Gender : "N/A";
            LblProfileBirthday.Text = profile.Birthday.HasValue ? profile.Birthday.Value.ToShortDateString() : "N/A";
            LblProfileElite.Text = profile.Elite.ToString();
            LblProfileProfile.Text = profile.Profile;
            LblProfileSmallPicture.Text = !string.IsNullOrEmpty(profile.SmallPicture) ? profile.SmallPicture : "N/A";
            LblProfileNormalPicture.Text = !string.IsNullOrEmpty(profile.NormalPicture) ? profile.NormalPicture : "N/A";
            LblProfileMediumPicture.Text = !string.IsNullOrEmpty(profile.MediumPicture) ? profile.MediumPicture : "N/A";
            LblProfileLargePicture.Text = !string.IsNullOrEmpty(profile.LargePicture) ? profile.LargePicture : "N/A";

            //var measurementNew = new DiabetesMeasurementsNewModel
            //{
            //    Timestamp = DateTime.Now,
            //    Triglyceride = 150,
            //    PostToFacebook = false,
            //    PostToTwitter = false
            //};
            //var measurementRequest = new DiabetesMeasurementsEndpoint(TokenManager, user);
            //var uriOfMeasurement = measurementRequest.CreateMeasurement(measurementNew);
            //var measurementPage = measurementRequest.GetFeedPage();
            //string uriOfMeasurement = measurementPage.Items.First().Uri;
            //var measurementDetail = measurementRequest.GetMeasurement(uriOfMeasurement);
            //measurementDetail.Triglyceride = 40;
            //measurementDetail = measurementRequest.UpdateMeasurement(measurementDetail);
            //measurementRequest.DeleteMeasurement(uriOfMeasurement);

            //var measurementNew = new GeneralMeasurementsNewModel
            //{
            //    Timestamp = DateTime.Now,
            //    Testosterone = 40,
            //    PostToFacebook = false,
            //    PostToTwitter = false
            //};
            //var measurementRequest = new GeneralMeasurementsEndpoint(TokenManager, user);
            //var uriOfMeasurement = measurementRequest.CreateMeasurement(measurementNew);
            //var measurementPage = measurementRequest.GetFeedPage();
            //string uriOfMeasurement = measurementPage.Items.First().Uri;
            //var measurementDetail = measurementRequest.GetMeasurement(uriOfMeasurement);
            //measurementDetail.Testosterone = 100;
            //measurementDetail = measurementRequest.UpdateMeasurement(measurementDetail);
            //measurementRequest.DeleteMeasurement(uriOfMeasurement);

            //var backgroundNew = new BackgroundActivitiesNewModel
            //{
            //    Timestamp = DateTime.Now,
            //    Steps = 1000,
            //    PostToFacebook = false,
            //    PostToTwitter = false
            //};
            //var backgroundActivitiesRequest = new BackgroundActivitiesEndpoint(TokenManager, user);
            //var uriOfBackground = backgroundActivitiesRequest.CreateActivity(backgroundNew);
            //var backgroundPage = backgroundActivitiesRequest.GetFeedPage();
            //string uriOfBackground = backgroundPage.Items.First().Uri;
            //var backgroundDetail = backgroundActivitiesRequest.GetActivity(uriOfBackground);
            //backgroundDetail.CaloriesBurned = 100;
            //backgroundDetail = backgroundActivitiesRequest.UpdateActivity(backgroundDetail);
            //backgroundActivitiesRequest.DeleteActivity(uriOfBackground);

            //var strengthTrainingNew = new StrengthTrainingActivitiesNewModel
            //{
            //    StartTime = DateTime.Now,
            //    Notes = "Good exercise.",
            //    TotalCalories = 100,
            //    Exercises = new List<ExercisesModel>
            //    {
            //        new ExercisesModel
            //        {
            //            PrimaryType = "Barbell Curl",
            //            PrimaryMuscleGroup = "Arms",
            //            Sets = new List<SetsModel>
            //            {
            //                new SetsModel
            //                {
            //                    Weight = 200,
            //                    Repetitions = 4
            //                }
            //            }
            //        }
            //    },
            //    PostToFacebook = false,
            //    PostToTwitter = false
            //};
            //var strengthTrainingRequest = new StrengthTrainingActivitiesEndpoint(TokenManager, user);
            ////var uriOfStrengthTraining = strengthTrainingRequest.CreateActivity(strengthTrainingNew);
            //var activitiesPage = strengthTrainingRequest.GetFeedPage();
            //string uriOfStrengthTraining = activitiesPage.Items.First().Uri;
            //var activitiesDetail = strengthTrainingRequest.GetActivity(uriOfStrengthTraining);
            //activitiesDetail.TotalCalories = 200;
            //activitiesDetail = strengthTrainingRequest.UpdateActivity(activitiesDetail);
            //strengthTrainingRequest.DeleteActivity(uriOfStrengthTraining);

            //var sleepRequest = new SleepEndpoint(TokenManager, user);
            //var sleepNew = new SleepNewModel
            //{
            //    Timestamp = DateTime.Now,
            //    TimesWoken = 3,
            //    PostToTwitter = false,
            //    PostToFacebook = false
            //};
            //var uriOfSleep = sleepRequest.CreateSleep(sleepNew);
            //var sleepPage = sleepRequest.GetFeedPage();
            //var sleepDetail = sleepRequest.GetSleep(uriOfSleep);

            //var uriOfSleep = sleepPage.Items.First().Uri;
            //var sleepDetail = sleepRequest.GetSleep(uriOfSleep);
            //sleepDetail.Rem = 180;
            //sleepDetail = sleepRequest.UpdateSleep(sleepDetail);

            //sleepRequest.DeleteSleep(uriOfSleep);

            //int test = 4;
            //var settingsRequest = new SettingsEndpoint(TokenManager, user);
            //var settings = settingsRequest.GetSettings();
            //settings.FirstDayOfWeek = "Monday";
            //settings = settingsRequest.UpdateSettings(settings);

            //var streetTeamRequest = new StreetTeamEndpoint(TokenManager, user);
            //var streetTeamItems = streetTeamRequest.GetFeedPage(pageIndex: 1, pageSize: 2);
            //var uri = streetTeamRequest.CreateTeamInvitation(new StreetTeamInvitationsModel { UserID = 7072229 });
            //var results = streetTeamRequest.GetStreetTeam(uri);

            //var nutritionNew = new NutritionNewModel
            //{
            //    Timestamp = DateTime.Now,
            //    Fat = 200,
            //    PostToFacebook = false,
            //    PostToTwitter = false
            //};
            //var nutritionRequest = new NutritionEndpoint(TokenManager, user);
            //var uriOfNutrition = nutritionRequest.CreateNutrition(nutritionNew);
            //var uriOfNutrition = nutritionRequest.GetFeedPage().Items.First().Uri;
            //nutritionRequest.DeleteNutrition(uriOfNutrition);

            //var weightRequest = new WeightEndpoint(TokenManager, user);
            /*
            var weightNew = new WeightNewModel
            {
                Timestamp = DateTime.Now,
                Weight = 90,
                PostToFacebook = false,
                PostToTwitter = false
            };
            var test = weightRequest.CreateWeight(weightNew);
            */
            //var weightItems =  weightRequest.GetFeedPage().Items;
            //var weightItem = weightItems.First();
            /*
            var weightDetail = weightRequest.GetWeight(weightItem.Uri);
            weightDetail.Bmi = 240;
            weightDetail = weightRequest.UpdateWeight(weightDetail);
            */
            //weightRequest.DeleteWeight(weightItem.Uri);

            //var activitiesRequest = new FitnessActivitiesEndpoint(TokenManager, user);
            /*
            var newActivity = new FitnessActivitiesNewModel
            {
                Type = "Running",
                StartTime = DateTime.Now,
                Duration = 50,
                Notes = "blah6!"
            };
            var uri = activitiesRequest.CreateActivity(newActivity);
            */
            //var activitiesItem = activitiesRequest.GetFeedPage(pageSize: 2, noLaterThan: new DateTime(2013, 6, 1)).Items.FirstOrDefault();
            //if (activitiesItem != null)
            //{
            //    var activitiesDetail = activitiesRequest.GetActivity(activitiesItem.Uri);

                //Get associated comments
            //    var commentRequest = new CommentThreadsEndpoint(TokenManager);
            //    var commentThread = commentRequest.GetCommentThread(activitiesDetail.Comments);

            //    var newComment = new CommentsNewModel
            //    {
            //        Comment = "Here we go!"
            //    };
            //    commentRequest.CreateComment(newComment, activitiesDetail.Comments);
                //commentRequest.CreateCommentAsync(() => { }, (ex) => { }, newComment, activitiesDetail.Comments);

            //    commentThread = commentRequest.GetCommentThread(activitiesDetail.Comments);

                //Retrieve and update an activity
                //var activitiesDetail = activitiesRequest.GetActivity(activitiesItem.Uri);
                //activitiesDetail.Type = "Running";
                //activitiesDetail.Equipment = "None";
                //activitiesDetail.AverageHeartRate = null;
                //activitiesDetail.Notes = "Testing is fun.";
                //activitiesRequest.UpdateActivity(activitiesDetail);

                //Delete the activity
                //activitiesRequest.DeleteActivity(activitiesDetail.Uri);
               // }

            //var recordsRequest = new RecordsEndpoint(TokenManager, user);
            //var items = recordsRequest.GetRecordsFeed();
            //int test = 4;
        }
 public void Init()
 {
     UserRequest = new UsersEndpoint(TokenManager);
     var user = UserRequest.GetUser();
     ProfileRequest = new ProfileEndpoint(TokenManager, user);
 }
        protected void AttemptAuth(object sender, EventArgs e)
        {
            _clientIdEntry.FetchValue();
            ClientId = _clientIdEntry.Value;
            _clientSecretEntry.FetchValue();
            ClientSecret = _clientSecretEntry.Value;
            _requestUriEntry.FetchValue();
            RequestUri = _requestUriEntry.Value;

            if ((string.IsNullOrEmpty(ClientId)) || (string.IsNullOrEmpty(ClientSecret)) || (string.IsNullOrEmpty(RequestUri)))
            {
                UIAlertView firstPageValidationAlert = new UIAlertView("Whoops!", "Please provide a Client Id, Client Secrent and Request Uri.", null, "Okay");
                firstPageValidationAlert.Show();
            }
            else
            {
                //Elements for Second Page - authorization
                var secondPage = new UIViewController();
                secondPage.Title = "Authorize";
                var authorizeWebView = new UIWebView(secondPage.View.Frame);
                secondPage.View.AddSubview(authorizeWebView);
                viewController.VisibleViewController.NavigationController.PushViewController(secondPage, true);
                authorizeWebView.LoadFinished += delegate(object s, EventArgs ev) {
                    string currentUrl = authorizeWebView.Request.Url.AbsoluteString;
                    const string CodeIdentifier = "code=";
                    if (currentUrl.Contains(CodeIdentifier))
                    {
                        //We've received an authorization code - initialize the token manager to get a create a token
                        Code = currentUrl.Substring(currentUrl.IndexOf(CodeIdentifier) + CodeIdentifier.Length);
                        TokenManager = new AccessTokenManager(ClientId, ClientSecret, RequestUri);
                        InvokeOnMainThread(() => {
                            UIApplication.SharedApplication.NetworkActivityIndicatorVisible = true;
                        });
                        TokenManager.InitAccessToken(Code);
                        var userRequest = new UsersEndpoint(TokenManager);
                        User = userRequest.GetUser();
                        var profileRequest = new ProfileEndpoint(TokenManager, User);
                        Profile = profileRequest.GetProfile();
                        InvokeOnMainThread(() => {
                            UIApplication.SharedApplication.NetworkActivityIndicatorVisible = false;
                        });
                        ShowUserAndProfile();
                    }
                };
                authorizeWebView.LoadRequest(new NSUrlRequest(new NSUrl(HealthGraphAuthorizeEndpoint + "?client_id=" + ClientId + "&redirect_uri=" + HttpUtility.UrlEncode(RequestUri) + "&response_type=code")));
            }
        }