public async Task Init()
 {
     _credentials = new WithingsCredentials();
     _credentials.SetCallbackUrl(Environment.GetEnvironmentVariable("WithingsCallbackUrl"));
     _credentials.SetConsumerProperties(Environment.GetEnvironmentVariable("WithingsConsumerKey"), Environment.GetEnvironmentVariable("WithingsConsumerSecret"));
     _authenticator = new Authenticator(_credentials);
     _requestToken  = await _authenticator.GetRequestToken();
 }
Example #2
0
        public Authenticator(WithingsCredentials credentials)
        {
            _consumerKey    = credentials.ConsumerKey;
            _consumerSecret = credentials.ConsumerSecret;
            _callbackUrl    = credentials.CallbackUrl;

            OAuthUtility.ComputeHash = (key, buffer) => { using (var hmac = new HMACSHA1(key)) { return(hmac.ComputeHash(buffer)); } };
        }
Example #3
0
 public async Task Init()
 {
     _credentials = new WithingsCredentials();
     _credentials.SetCallbackUrl("http://localhost:56617/api/oauth/callback");
     _credentials.SetConsumerProperties("fb97731ef7cc787067ff5912d13663520e9428038044d198ded8d3009c52", "36b51e76c54f49558de84756c1c613b9ec450011b6481e6424dfe905bcb3c6");
     _authenticator = new Authenticator(_credentials);
     _requestToken  = await _authenticator.GetRequestToken();
 }
        public BrowserAuthentication(WithingsCredentials credentials)
        {
            if (credentials == null)
            {
                throw new ArgumentNullException(nameof(credentials));
            }

            _credentials = credentials;
        }
Example #5
0
 public WithingsClient(WithingsCredentials credentials)
 {
     _credentials = credentials;
 }
Example #6
0
        public IndexModule()
        {
            var _credentials = new WithingsCredentials();

            _credentials.SetCallbackUrl(Environment.GetEnvironmentVariable("WithingsCallbackUrl"));
            _credentials.SetConsumerProperties(Environment.GetEnvironmentVariable("WithingsConsumerKey"),
                                               Environment.GetEnvironmentVariable("WithingsConsumerSecret"));

            var authenticator = new Authenticator(_credentials);

            Get["/"] = nothing => new RedirectResponse("api/oauth/authorize", RedirectResponse.RedirectType.Permanent);

            Get["api/oauth/authorize", true] = async(nothing, ct) =>
            {
                var requestToken = await authenticator.GetRequestToken();

                ConfigurationManager.AppSettings["RequestToken"] = JsonConvert.SerializeObject(requestToken);
                return(new RedirectResponse(authenticator.UserRequestUrl(requestToken)));
            };

            Get["api/oauth/callback", true] = async(parameters, ct) =>
            {
                var ps = HttpUtility.ParseQueryString(Request.Url.Query);
                ConfigurationManager.AppSettings["UserId"] = ps["userid"];
                var verifier    = ps["oauth_verifier"];
                var credentials = await authenticator.ExchangeRequestTokenForAccessToken(JsonConvert.DeserializeObject <RequestToken>(ConfigurationManager.AppSettings["RequestToken"]), verifier);

                ConfigurationManager.AppSettings["OAuthToken"]  = credentials.Key;
                ConfigurationManager.AppSettings["OAuthSecret"] = credentials.Secret;
                return(new JsonResponse(credentials, new DefaultJsonSerializer()));
            };

            Get["api/withings/activity", true] = async(nothing, ctx) =>
            {
                var client   = new WithingsClient(_credentials);
                var activity = await client.GetActivityMeasures
                               (
                    DateTime.Parse("2017-01-01"),
                    DateTime.Parse("2017-03-30"),
                    ConfigurationManager.AppSettings["UserId"],
                    ConfigurationManager.AppSettings["OAuthToken"],
                    ConfigurationManager.AppSettings["OAuthSecret"]
                               );

                return(new JsonResponse(activity, new DefaultJsonSerializer()));
            };

            Get["api/withings/dailyactivity", true] = async(nothing, ctx) =>
            {
                var client   = new WithingsClient(_credentials);
                var activity = await client.GetActivityMeasures
                               (
                    DateTime.Today.AddDays(-30),
                    ConfigurationManager.AppSettings["UserId"],
                    ConfigurationManager.AppSettings["OAuthToken"],
                    ConfigurationManager.AppSettings["OAuthSecret"]
                               );

                return(new JsonResponse(activity, new DefaultJsonSerializer()));
            };

            Get["api/withings/sleepsummary"] = nothing =>
            {
                var client   = new WithingsClient(_credentials);
                var activity = client.GetSleepSummary
                               (
                    "2017-01-01",
                    "2017-03-30",
                    ConfigurationManager.AppSettings["OAuthToken"],
                    ConfigurationManager.AppSettings["OAuthSecret"]
                               );
                return(new JsonResponse(activity, new DefaultJsonSerializer()));
            };

            Get["api/withings/workouts", true] = async(nothing, ctx) =>
            {
                var client   = new WithingsClient(_credentials);
                var activity = await client.GetWorkouts
                               (
                    "2017-06-01",
                    "2017-06-05",
                    ConfigurationManager.AppSettings["OAuthToken"],
                    ConfigurationManager.AppSettings["OAuthSecret"]
                               );

                return(new JsonResponse(activity, new DefaultJsonSerializer()));
            };

            Get["api/withings/sleepmeasures"] = nothing =>
            {
                var client   = new WithingsClient(_credentials);
                var activity = client.GetSleepMeasures
                               (
                    ConfigurationManager.AppSettings["UserId"],
                    DateTime.Now.AddDays(-90),
                    DateTime.Now.AddDays(-1),
                    ConfigurationManager.AppSettings["OAuthToken"],
                    ConfigurationManager.AppSettings["OAuthSecret"]
                               );
                return(new JsonResponse(activity, new DefaultJsonSerializer()));
            };

            Get["api/withings/body"] = nothing =>
            {
                var client   = new WithingsClient(_credentials);
                var activity = client.GetBodyMeasures
                               (
                    ConfigurationManager.AppSettings["UserId"],
                    DateTime.Parse("2017-05-08"),
                    DateTime.Parse("2017-05-10"),
                    ConfigurationManager.AppSettings["OAuthToken"],
                    ConfigurationManager.AppSettings["OAuthSecret"]
                               );
                return(new JsonResponse <object>(activity, new DefaultJsonSerializer()));
            };

            Get["api/withings/bodysince", true] = async(nothing, ctx) =>
            {
                var client   = new WithingsClient(_credentials);
                var activity = await client.GetBodyMeasures
                               (
                    ConfigurationManager.AppSettings["UserId"],
                    DateTime.Parse("2017-05-08"),
                    ConfigurationManager.AppSettings["OAuthToken"],
                    ConfigurationManager.AppSettings["OAuthSecret"]
                               );

                return(new JsonResponse(activity, new DefaultJsonSerializer()));
            };

            Get["api/withings/intraday", true] = async(nothing, ctx) =>
            {
                var client   = new WithingsClient(_credentials);
                var activity = await client.GetIntraDayActivity(
                    ConfigurationManager.AppSettings["UserId"],
                    DateTime.Now.AddDays(-90),
                    DateTime.Now.AddDays(-1),
                    ConfigurationManager.AppSettings["OAuthToken"],
                    ConfigurationManager.AppSettings["OAuthSecret"]
                    );

                return(new JsonResponse(activity, new DefaultJsonSerializer()));
            };

            Get["api/oauth/requesttoken", true] = async(nothing, ct) =>
            {
                var token = await authenticator.GetRequestToken();

                return(new JsonResponse <RequestToken>(token, new DefaultJsonSerializer()));
            };
        }