Пример #1
0
        static void Main(string[] args)
        {
            //Example of getting the Auth credentials for the first time by directoring the
            //user to the fitbit site to get a PIN. 
            var consumerKey = "YOUR_CONSUMER_KEY_HERE";
            var consumerSecret = "YOUR_CONSUMER_SECRET_HERE";
            var requestTokenUrl = "http://api.fitbit.com/oauth/request_token";
            var accessTokenUrl = "http://api.fitbit.com/oauth/access_token";
            var authorizeUrl = "http://www.fitbit.com/oauth/authorize";

            var a = new Authenticator(consumerKey, consumerSecret,requestTokenUrl,accessTokenUrl,authorizeUrl);

            RequestToken token = a.GetRequestToken();

            var url = a.GenerateAuthUrlFromRequestToken(token, false);

            Process.Start(url);

            Console.WriteLine("Enter the verification code from the website");
            var pin = Console.ReadLine();

            var credentials = a.GetAuthCredentialFromPin(pin, token);


            //If you already have your credentials stored then rather than getting the users PIN again
            //you could just start here
            var fitbit = new FitbitClient(consumerKey, consumerSecret, credentials.AuthToken, credentials.AuthTokenSecret);
            var profile = fitbit.GetUserProfile();
            Console.WriteLine("Your last weight was {0}",profile.Weight);

            Console.ReadLine();
        }
Пример #2
0
        private void button2_Click(object sender, EventArgs e)
        {
            //Example of getting the Auth credentials for the first time by directoring the
            //user to the fitbit site to get a PIN.
            // GitHub test from Andy
            var consumerKey = "b3d888281c9b4e098c26c6d1ce4e9d57";
            var consumerSecret = "dc6f84c589c341789967b57e83084572";
            var requestTokenUrl = "http://api.fitbit.com/oauth/request_token";
            var accessTokenUrl = "http://api.fitbit.com/oauth/access_token";
            var authorizeUrl = "http://www.fitbit.com/oauth/authorize";

            var a = new Authenticator(consumerKey, consumerSecret, requestTokenUrl, accessTokenUrl, authorizeUrl);
            var url = a.GetAuthUrlToken();

            System.Diagnostics.Process.Start(url);

            Console.WriteLine("Enter the verification code from the website");
            var pin = verificationCodeTextBox.Text;

            var credentials = a.GetAuthCredentialFromPin(pin);

            //If you already have your credentials stored then rather than getting the users PIN again
            //you could just start here
            var fitbit = new FitbitClient(consumerKey, consumerSecret, credentials.AuthToken, credentials.AuthTokenSecret);
            var profile = fitbit.GetUserProfile();
            Console.WriteLine("Your last weight was {0}", profile.Weight);

            Console.ReadLine();
        }
Пример #3
0
        public HomeController()
        {
            var creds = (CloudConfigurationManager.GetSetting("environment") == "local")
                ? CredentialParser.ParseFromFile(@"C:\Development\fitbitcreds.json")
                : CredentialParser.ParseFromConfiguration();

            _client = new FitbitClient(creds.ConsumerKey, creds.ConsumerSecret, creds.AuthToken, creds.AuthTokenSecret);
        }
        /// <summary>
        /// Reads data from fitbit API.
        /// Limit is 150 API calls per hour, per user. -> 2016-02-05
        /// </summary>
        /// <returns>true if operation completed successfuly</returns>
        public bool Read()
        {
            bool success = false;

            try
            {
                _logger.InfoFormat("Starting data collection for device: {0} ",_deviceElement.Name);

                DateTime startTime=DateTime.Today-TimeSpan.FromDays(30);
                DateTime endTime=DateTime.Now;

                string authToken = (string)_deviceElement.Attributes["AuthToken"].GetValue().Value;
                string authTokenSecret = (string)_deviceElement.Attributes["AuthTokenSecret"].GetValue().Value;

                // for debugging when no internet access
                //if (Settings.Advanced.Default.NoConnectionSImulateData)
                //    return true;

                var fitBitClient = new FitbitClient(consumerKey, consumerSecret, authToken, authTokenSecret);

                // user profile is not used for the time being
                // var userProfile = fitBitClient.GetUserProfile();

                // avtivity
                //  --- active hours is calculated - so not here
                AFElement activityElement = _deviceElement.Elements["Activity"];
                CollectAndSaveData(fitBitClient, startTime, endTime, activityElement, TimeSeriesResourceType.CaloriesOut, "Calories");
                CollectAndSaveData(fitBitClient, startTime, endTime, activityElement, TimeSeriesResourceType.DistanceTracker, "Distance");
                CollectAndSaveData(fitBitClient, startTime, endTime, activityElement, TimeSeriesResourceType.MinutesFairlyActiveTracker, "Minutes fairly active");
                CollectAndSaveData(fitBitClient, startTime, endTime, activityElement, TimeSeriesResourceType.MinutesLightlyActiveTracker, "Minutes lightly active");
                CollectAndSaveData(fitBitClient, startTime, endTime, activityElement, TimeSeriesResourceType.MinutesSedentaryTracker, "Minutes sedentary");
                CollectAndSaveData(fitBitClient, startTime, endTime, activityElement, TimeSeriesResourceType.MinutesVeryActiveTracker, "Minutes very active");
                CollectAndSaveData(fitBitClient, startTime, endTime, activityElement, TimeSeriesResourceType.StepsTracker, "Steps");

                // sleep
                AFElement sleepElement = _deviceElement.Elements["Sleep"];
                CollectAndSaveData(fitBitClient, startTime, endTime, sleepElement, TimeSeriesResourceType.AwakeningsCount, "Awakenings count");
                CollectAndSaveData(fitBitClient, startTime, endTime, sleepElement, TimeSeriesResourceType.MinutesAsleep, "Hours asleep");
                CollectAndSaveData(fitBitClient, startTime, endTime, sleepElement, TimeSeriesResourceType.MinutesAfterWakeup, "Minutes after wakeup");
                CollectAndSaveData(fitBitClient, startTime, endTime, sleepElement, TimeSeriesResourceType.MinutesAwake, "Minutes awake");
                CollectAndSaveData(fitBitClient, startTime, endTime, sleepElement, TimeSeriesResourceType.MinutesToFallAsleep, "Minutes to fall asleep");
                CollectAndSaveData(fitBitClient, startTime, endTime, sleepElement, TimeSeriesResourceType.SleepEfficiency, "Sleep efficiency");
                CollectAndSaveData(fitBitClient, startTime, endTime, sleepElement, TimeSeriesResourceType.TimeEnteredBed, "Time entered bed");
                CollectAndSaveData(fitBitClient, startTime, endTime, sleepElement, TimeSeriesResourceType.TimeInBed, "Time spent in bed");

                _logger.InfoFormat("Completed data collection for device: {0} - read {1} values.", _deviceElement.Name,valuesCount);
                success = true;

            }
            catch (Exception)
            {

                throw;
            }

            return success;
        }
Пример #5
0
 public FitbitUser(string consumerKey,
                   string consumerSecret,
                   string authToken,
                   string authTokenSecret,
                   AFElement element,
                   bool isNew)
 {
     ApiClient = new FitbitClient(consumerKey, consumerSecret, authToken, authTokenSecret);
     UserElement = element;
     IsNew = isNew;
 }
Пример #6
0
        static void Main(string[] args)
        {
            var credentials = GetLoginCredentials();

            var fitbitClient = new FitbitClient(CONSUMER_KEY, CONSUMER_SECRET, credentials.AuthToken, credentials.AuthTokenSecret);
            var profile = fitbitClient.GetUserProfile();

            Activity dayActivity = fitbitClient.GetDayActivity(DateTime.Today);

            Console.ReadLine();
        }
Пример #7
0
        public TestsBase()
        {
            RestClient restClient = new RestClient("https://api.fitbit.com");
            client = new FitbitClient(Configuration.ConsumerKey,
                                        Configuration.ConsumerSecret,
                                        Configuration.AuthToken,
                                        Configuration.AuthTokenSecret,
                                        restClient);

            
        }
Пример #8
0
        public string TestTimeSeries()
        {
            FitbitClient client = new FitbitClient(ConfigurationManager.AppSettings["FitbitConsumerKey"],
                ConfigurationManager.AppSettings["FitbitConsumerSecret"],
                Session["FitbitAuthToken"].ToString(),
                Session["FitbitAuthTokenSecret"].ToString());

            var results = client.GetTimeSeries(TimeSeriesResourceType.ActiveScore, DateTime.UtcNow.AddDays(-7), DateTime.UtcNow);

            string sOutput = "";
            foreach (var result in results.DataList)
            {
                sOutput += result.DateTime.ToString() + " - " + result.Value.ToString();
            }

            return sOutput;

        }
Пример #9
0
        static void Main(string[] args)
        {
            //Example of getting the Auth credentials for the first time by directoring the
            //user to the fitbit site to get a PIN. 

            var credentials = LoadCredentials();

            if (credentials == null)
            {
                credentials = Authenticate();
                SaveCredentials(credentials);
            }

            var fitbit = new FitbitClient(consumerKey, consumerSecret, credentials.AuthToken, credentials.AuthTokenSecret);
           
            var profile = fitbit.GetUserProfile();
            Console.WriteLine("Your last weight was {0}", profile.Weight);

            Console.ReadLine();
        }
Пример #10
0
        public void Returns_content_if_response_is_OK()
        {
            string content = File.ReadAllText(SampleData.PathFor("DateActivity.txt"));
            
            var mock = new Mock<IRestClient>();
            var deserializer = new RestSharp.Deserializers.XmlDeserializer();
            deserializer.RootElement = "summary";

            mock.Setup(x => x.Execute<ActivitySummary>(It.IsAny<IRestRequest>()))
                .Returns(new RestResponse<ActivitySummary>
                {
                    StatusCode = HttpStatusCode.OK,
                    Content = content,
                    Data = deserializer.Deserialize<ActivitySummary>(new RestResponse() { Content = content })
                });

            //var client = new GuidClient(mock.Object);
            FitbitClient fitbitClient = new FitbitClient(mock.Object); 

            var result = fitbitClient.GetDayActivitySummary(DateTime.Now);

            Assert.IsNotNull(result);
            Assert.AreEqual(12345, result.Steps);
        }
Пример #11
0
 private void FitBitLogin_FormClosed(object sender, FormClosedEventArgs e)
 {
     FitbitClient client = new FitbitClient(dash.consumerKey, dash.consumerSecret, dash.oauth_token, dash.oauth_token_secret);
     List<UserProfile> profiles = client.GetFriends();
     dash.loggedInUser = client.GetUserProfile(dash.user_id);
     profiles.Add(dash.loggedInUser);
     foreach (UserProfile temp in profiles)
     {
         foreach (DictionaryEntry tempUser in dash.users)
         {
             User theUser = (User)tempUser.Value;
             if (theUser.firstName.Equals(temp.DisplayName.ToString()))
             {
                 theUser.id = temp.EncodedId.ToString();
                 DateTime today = DateTime.Today;
                 ActivitySummary summary = client.GetSpecificUserDayActivitySummary(theUser.id, today);
                theUser.statistics["Steps Taken"] = summary.Steps;
                theUser.statistics["Stairs Climbed"] = summary.Floors;
                theUser.statistics["Calories Burned"] = summary.CaloriesOut;
                break;
             }
         }
     }
 }
        public IList<View.VParamType> OnOperationInvoke(string roleName, String opName, IList<View.VParamType> parameters)
        {
            List<View.VParamType> retVals = new List<View.VParamType>();

            FitbitClient client = new FitbitClient(consumerKey, consumerSecret, accessToken, accessSecret);

            switch (opName)
            {
                case RoleFitbitUltra.OpGetActiveScore:
                    {
                        DateTime activityDate = (DateTime)parameters[0].Value();
                        ActivitySummary data = client.GetDayActivitySummary(activityDate);

                        int result = data.ActiveScore;
                        retVals.Add(new ParamType(ParamType.SimpleType.integer, "int", result, "result"));
                    }
                    break;

                case RoleFitbitUltra.OpGetCaloriesOut:
                    {
                        DateTime activityDate = (DateTime)parameters[0].Value();
                        ActivitySummary data = client.GetDayActivitySummary(activityDate);

                        int result = data.CaloriesOut;
                        retVals.Add(new ParamType(ParamType.SimpleType.integer, "int", result, "result"));
                    }
                    break;

                case RoleFitbitUltra.OpGetDistance:
                    {
                        DateTime activityDate = (DateTime)parameters[0].Value();
                        ActivitySummary data = client.GetDayActivitySummary(activityDate);

                        float result = data.Distances.Sum(z => z.Distance);
                        retVals.Add(new ParamType(ParamType.SimpleType.binary, "float", result, "result"));
                    }
                    break;

                case RoleFitbitUltra.OpGetSteps:
                    {
                        DateTime activityDate = (DateTime)parameters[0].Value();
                        ActivitySummary data = client.GetDayActivitySummary(activityDate);

                        int result = data.Steps;
                        retVals.Add(new ParamType(ParamType.SimpleType.integer, "int", result, "result"));
                    }
                    break;

                case RoleFitbitUltra.OpGetStepsGoal:
                    {
                        DateTime activityDate = (DateTime)parameters[0].Value();
                        Activity data = client.GetDayActivity(activityDate);

                        int result = data.Goals.Steps;
                        retVals.Add(new ParamType(ParamType.SimpleType.integer, "int", result, "result"));
                    }
                    break;

                case RoleFitbitUltra.OpGetTotalMinutesAsleep:
                    {
                        DateTime activityDate = (DateTime)parameters[0].Value();
                        SleepSummary data = client.GetDaySleepSummary(activityDate);

                        int result = data.TotalMinutesAsleep;
                        retVals.Add(new ParamType(ParamType.SimpleType.integer, "int", result, "result"));
                    }
                    break;

                case RoleFitbitUltra.OpGetTotalSleepRecords:
                    {
                        DateTime activityDate = (DateTime)parameters[0].Value();
                        SleepSummary data = client.GetDaySleepSummary(activityDate);

                        int result = data.TotalSleepRecords;
                        retVals.Add(new ParamType(ParamType.SimpleType.integer, "int", result, "result"));
                    }
                    break;

                case RoleFitbitUltra.OpGetTotalTimeInBed:
                    {
                        DateTime activityDate = (DateTime)parameters[0].Value();
                        SleepSummary data = client.GetDaySleepSummary(activityDate);

                        int result = data.TotalTimeInBed;
                        retVals.Add(new ParamType(ParamType.SimpleType.integer, "int", result, "result"));
                    }
                    break;

                case RoleFitbitUltra.OpGetDevicePresence:
                    {
                        List<Fitbit.Models.Device> data = client.GetDevices();

                        bool result = data.Where(z => z.Type == DeviceType.Tracker).FirstOrDefault().LastSyncTime >= DateTime.Now.AddMinutes(-15);
                        retVals.Add(new ParamType(ParamType.SimpleType.binary, "bool", result, "result"));
                    }
                    break;

                case RoleFitbitUltra.OpGetHasRecentActivity:
                    {
                        Activity data = client.GetDayActivity(DateTime.Now);

                        bool result = data.Activities.Where(z => z.HasStartTime == true &&
                                                                 Convert.ToDateTime(z.StartTime).AddSeconds(z.Duration / 1000) >= DateTime.Now.AddMinutes(-30)).Count() > 0;
                        retVals.Add(new ParamType(ParamType.SimpleType.binary, "bool", result, "result"));
                    }
                    break;

                default:
                    logger.Log("Invalid operation {0}", opName);
                    break;
            }

            return retVals;
        }
Пример #13
0
        /*
        //example using the direct API call getting all the individual logs
        public ActionResult MonthFat(string id)
        {
            DateTime dateStart = Convert.ToDateTime(id);

            FitbitClient client = GetFitbitClient();

            Fat fat = client.GetFat(dateStart, DateRangePeriod.OneMonth);

            if (fat == null || fat.FatLogs == null) //succeeded but no records
            {
                fat = new Fat();
                fat.FatLogs = new List<FatLog>();
            }
            return View(fat);

        }

        //example using the time series, one per day
        public ActionResult LastYearFat()
        {
            FitbitClient client = GetFitbitClient();

            TimeSeriesDataList fatSeries = client.GetTimeSeries(TimeSeriesResourceType.Fat, DateTime.UtcNow, DateRangePeriod.OneYear);

            return View(fatSeries);

        }

        //example using the direct API call getting all the individual logs
        public ActionResult MonthWeight(string id)
        {
            DateTime dateStart = Convert.ToDateTime(id);

            FitbitClient client = GetFitbitClient();

            Weight weight = client.GetWeight(dateStart, DateRangePeriod.OneMonth);

            if (weight == null || weight.Weights == null) //succeeded but no records
            {
                weight = new Weight();
                weight.Weights = new List<WeightLog>();
            }
            return View(weight);

        }

        //example using the time series, one per day
        public ActionResult LastYearWeight()
        {
            FitbitClient client = GetFitbitClient();

            TimeSeriesDataList weightSeries = client.GetTimeSeries(TimeSeriesResourceType.Weight, DateTime.UtcNow, DateRangePeriod.OneYear);

            return View(weightSeries);

        }

        /// <summary>
        /// This requires the Fitbit staff approval of your app before it can be called
        /// </summary>
        /// <returns></returns>
        public string TestIntraDay()
        {
            FitbitClient client = new FitbitClient(ConfigurationManager.AppSettings["FitbitConsumerKey"],
                ConfigurationManager.AppSettings["FitbitConsumerSecret"],
                Session["FitbitAuthToken"].ToString(),
                Session["FitbitAuthTokenSecret"].ToString());

            IntradayData data = client.GetIntraDayTimeSeries(IntradayResourceType.Steps, new DateTime(2012, 5, 28, 11, 0, 0), new TimeSpan(1, 0, 0));

            string result = "";

            foreach (IntradayDataValues intraData in data.DataSet)
            {
                result += intraData.Time.ToShortTimeString() + " - " + intraData.Value + Environment.NewLine;
            }

            return result;

        }

         */
        private FitbitClient GetFitbitClient(string bearerToken, string refreshToken)
        {
            OAuth2Authorization authorization = new OAuth2Authorization(bearerToken, refreshToken);

            FitbitClient client = new FitbitClient(authorization);

            return client;
        }
Пример #14
0
        public ActionResult LastWeekActiveScore()
        {
            FitbitClient client = new FitbitClient(ConfigurationManager.AppSettings["FitbitConsumerKey"],
                ConfigurationManager.AppSettings["FitbitConsumerSecret"],
                Session["FitbitAuthToken"].ToString(),
                Session["FitbitAuthTokenSecret"].ToString());

            TimeSeriesDataList results = client.GetTimeSeries(TimeSeriesResourceType.ActiveScore, DateTime.UtcNow.AddDays(-7), DateTime.UtcNow);
            
            return View(results);
        }
Пример #15
0
 private void refreshFitbitApi()
 {
     if (leaderboardComboBox.SelectedItem == null)
     {
         MessageBox.Show("Please select a time frame from the dropdown.");
         return;
     }
     FitbitClient client = new FitbitClient(consumerKey, consumerSecret, oauth_token, oauth_token_secret);
     List<UserProfile> profiles = client.GetFriends();
     profiles.Add(loggedInUser);
     DateTime endDate = DateTime.Today;
     DateTime startDate = DateTime.Today;
     if (leaderboardComboBox.SelectedItem.Equals("Day"))
     {
         DateTime today = DateTime.Today;
         foreach (UserProfile temp in profiles)
         {
             foreach (DictionaryEntry tempUser in users)
             {
                 User theUser = (User)tempUser.Value;
                 if (theUser.displayName.Equals(temp.DisplayName.ToString()))
                 {
                     theUser.id = temp.EncodedId.ToString();
                     ActivitySummary summary = client.GetSpecificUserDayActivitySummary(theUser.id, today);
                     theUser.statistics["Steps Taken"] = summary.Steps;
                     theUser.statistics["Stairs Climbed"] = summary.Floors;
                     theUser.statistics["Calories Burned"] = summary.CaloriesOut;
                     break;
                 }
             }
         }
         return;
     }
     else if (leaderboardComboBox.SelectedItem.Equals("Week"))
     {
         endDate = DateTime.Today;
         startDate = endDate.Subtract(TimeSpan.FromDays(6));
     }
     else if (leaderboardComboBox.SelectedItem.Equals("Month"))
     {
         endDate = DateTime.Today;
         startDate = endDate.Subtract(TimeSpan.FromDays(29));
     }
     else if (leaderboardComboBox.SelectedItem.Equals("Competition"))
     {
         startDate = startDateTimePicker.Value;
         endDate = DateTime.Today;
     }
     foreach (UserProfile temp in profiles)
     {
         foreach (DictionaryEntry tempUser in users)
         {
             User theUser = (User)tempUser.Value;
             if (theUser.displayName.Equals(temp.DisplayName.ToString()))
             {
                 theUser.id = temp.EncodedId.ToString();
                 TimeSeriesDataListInt steps = client.GetTimeSeriesInt(TimeSeriesResourceType.StepsTracker, startDate, endDate, theUser.id);
                 TimeSeriesDataListInt floors = client.GetTimeSeriesInt(TimeSeriesResourceType.FloorsTracker, startDate, endDate, theUser.id);
                 TimeSeriesDataListInt calories= client.GetTimeSeriesInt(TimeSeriesResourceType.CaloriesOutTracker, startDate, endDate, theUser.id);
                 int totalSteps = 0, totalFloors = 0, totalCalories = 0;
                 for (int i = 0; i < steps.DataList.Count; i++)
                 {
                    totalSteps += steps.DataList[i].Value;
                    totalFloors += floors.DataList[i].Value;
                    totalCalories += calories.DataList[i].Value;
                 }
                 theUser.statistics["Steps Taken"] = totalSteps;
                 theUser.statistics["Stairs Climbed"] = totalFloors;
                 theUser.statistics["Calories Burned"] = totalCalories;
                 break;
             }
         }
     }
 }
Пример #16
0
        /// <summary>
        /// This requires the Fitbit staff approval of your app before it can be called
        /// </summary>
        /// <returns></returns>
        public string TestIntraDay()
        {
            FitbitClient client = new FitbitClient(ConfigurationManager.AppSettings["FitbitConsumerKey"],
                ConfigurationManager.AppSettings["FitbitConsumerSecret"],
                Session["FitbitAuthToken"].ToString(),
                Session["FitbitAuthTokenSecret"].ToString());

            IntradayData data = client.GetIntraDayTimeSeries(IntradayResourceType.Steps, new DateTime(2012,5,28,11,0,0), new TimeSpan(1,0,0));

            string result = "";

            foreach (IntradayDataValues intraData in data.DataSet)
            {
                result += intraData.Time.ToShortTimeString() + " - " + intraData.Value + Environment.NewLine;
            }

            return result;

        }
 private void CollectAndSaveData(FitbitClient fitBitClient,DateTime startTime,DateTime endTime, AFElement deviceElement, TimeSeriesResourceType type,string attributeName)
 {
     var fitBitData = fitBitClient.GetTimeSeries(type, startTime, endTime);
     AFValues values = Helpers.FitBitHelpers.ConvertToAFValues(fitBitData, type, deviceElement, attributeName);
     SharedData.DataQueue.Enqueue(values);
     valuesCount += values.Count;
 }
Пример #18
0
        private FitbitClient GetFitbitClient()
        {
            FitbitClient client = new FitbitClient(ConfigurationManager.AppSettings["FitbitConsumerKey"],
                ConfigurationManager.AppSettings["FitbitConsumerSecret"],
                Session["FitbitAuthToken"].ToString(),
                Session["FitbitAuthTokenSecret"].ToString());

            return client;
        }