Exemple #1
0
 private void BrowserTypeToggled(object sender, RoutedEventArgs e)
 {
     _browserType = authTypeToggleSwitch.IsOn
         ? AuthenticationInterfaceEnum.Dedicated
         : AuthenticationInterfaceEnum.Embedded;
     _callbackType = authTypeToggleSwitch.IsOn
         ? CallbackTypeEnum.Protocol
         : CallbackTypeEnum.Localhost;
 }
        /// <summary>
        /// Iterate between connected handlers to process request
        /// </summary>
        public static async Task <WebQueryResult> ProcessWebCallbacks(string query, CallbackTypeEnum type, string ip,
                                                                      WebAuthUserData data)
        {
            foreach (var method in WebModuleConnectors.Values)
            {
                try
                {
                    var result = await method(query, type, ip, data);

                    if (result.Result != WebQueryResultEnum.False)
                    {
                        return(result);
                    }
                }
                catch (Exception ex)
                {
                    await LogHelper.LogEx($"Module method {method.Method.Name} throws ex!", ex);
                }
            }

            return(WebQueryResult.False);
        }
        public async Task <WebQueryResult> ProcessRequest(string query, CallbackTypeEnum type, string ip, WebAuthUserData data)
        {
            if (!Settings.Config.ModuleContractNotifications)
            {
                return(WebQueryResult.False);
            }

            try
            {
                RunningRequestCount++;
                if (!query.Contains("&state=12"))
                {
                    return(WebQueryResult.False);
                }

                var prms = query.TrimStart('?').Split('&');
                var code = prms[0].Split('=')[1];

                var result = await WebAuthModule.GetCharacterIdFromCode(code,
                                                                        Settings.WebServerModule.CcpAppClientId, Settings.WebServerModule.CcpAppSecret);

                if (result == null)
                {
                    return(WebQueryResult.EsiFailure);
                }

                var characterId   = result[0];
                var numericCharId = Convert.ToInt64(characterId);

                if (string.IsNullOrEmpty(characterId))
                {
                    await LogHelper.LogWarning("Bad or outdated feed request!");

                    var r = WebQueryResult.BadRequestToSystemAuth;
                    r.Message1 = LM.Get("accessDenied");
                    return(r);
                }

                if (!HasAuthAccess(numericCharId))
                {
                    await LogHelper.LogWarning($"Unauthorized feed request from {characterId}");

                    var r = WebQueryResult.BadRequestToSystemAuth;
                    r.Message1 = LM.Get("accessDenied");
                    return(r);
                }

                if (WebGetAuthGroup(numericCharId, out _) == null)
                {
                    await LogHelper.LogWarning("Feed auth group not found!");

                    var r = WebQueryResult.BadRequestToSystemAuth;
                    r.Message1 = LM.Get("accessDenied");
                    return(r);
                }

                //var rChar = await APIHelper.ESIAPI.GetCharacterData(Reason, characterId, true);

                await SQLHelper.InsertOrUpdateTokens("", characterId, "", result[1]);

                await LogHelper.LogInfo($"Mail feed added for character: {characterId}", LogCat.AuthWeb);

                var res = WebQueryResult.ContractsAuthSuccess;
                res.Message1 = LM.Get("mailAuthSuccessHeader");
                res.Message2 = LM.Get("mailAuthSuccessBody");
                res.AddValue("url", ServerPaths.GetFeedSuccessUrl());
                return(res);
            }
            catch (Exception ex)
            {
                await LogHelper.LogEx(ex.Message, ex, Category);
            }
            finally
            {
                RunningRequestCount--;
            }

            return(WebQueryResult.False);
        }
        private async Task <WebQueryResult> ProcessAuth(string query, CallbackTypeEnum callbackType, string inputIp, WebAuthUserData webUserData)
        {
            if (!Settings.Config.ModuleTimers || webUserData.Id == 0 || string.IsNullOrEmpty(webUserData.Name))
            {
                return(WebQueryResult.False);
            }

            return(WebQueryResult.False);

            try
            {
                RunningRequestCount++;
                var port = Settings.WebServerModule.WebExternalPort;

                /*   if (request.Url.LocalPath == "/timers" || request.Url.LocalPath == $"{extPort}/timers" ||
                 *     request.Url.LocalPath == $"{port}/timers")
                 *     {
                 *         if (string.IsNullOrWhiteSpace(request.Url.Query))
                 *         {
                 *             //redirect to auth
                 *             await response.RedirectAsync(new Uri(WebServerModule.GetTimersAuthURL()));
                 *             return true;
                 *         }
                 *
                 *         var prms = request.Url.Query.TrimStart('?').Split('&');
                 *         if (prms.Length != 3)
                 *         {
                 *             await response.RedirectAsync(new Uri(WebServerModule.GetWebSiteUrl()));
                 *             return true;
                 *         }
                 *
                 *         var data = prms[0].Split('=')[1];
                 *         var inputId = prms[1].Split('=')[1];
                 *         var state = prms[2].Split('=')[1];
                 *         if (state != "11")
                 *         {
                 *             await response.RedirectAsync(new Uri(WebServerModule.GetWebSiteUrl()));
                 *             return true;
                 *         }
                 *
                 *         var characterId =
                 *             Convert.ToInt64(
                 *                 Encoding.UTF8.GetString(Convert.FromBase64String(HttpUtility.UrlDecode(inputId))));
                 *
                 *         var rChar = await APIHelper.ESIAPI.GetCharacterData(Reason, characterId, true);
                 *         if (rChar == null)
                 *         {
                 *             await response.RedirectAsync(new Uri(WebServerModule.GetWebSiteUrl()));
                 *             return true;
                 *         }
                 *
                 *         //have charId - had to check it
                 *         //check in db
                 *         var timeout = Settings.TimersModule.AuthTimeoutInMinutes;
                 *         if (timeout != 0)
                 *         {
                 *             var result = await SQLHelper.GetTimersAuthTime(characterId);
                 *             if (result == null || (DateTime.Now - DateTime.Parse(result)).TotalMinutes > timeout)
                 *             {
                 *                 //redirect to auth
                 *                 await response.RedirectAsync(new Uri(WebServerModule.GetTimersAuthURL()));
                 *                 return true;
                 *             }
                 *         }
                 *
                 *         var checkResult = await CheckAccess(characterId, rChar);
                 *         if (!checkResult[0])
                 *         {
                 *             await WebServerModule.WriteResponce(
                 *                 WebServerModule.GetAccessDeniedPage("Timers Module", LM.Get("accessDenied"),
                 *                     WebServerModule.GetWebSiteUrl()), response);
                 *             return true;
                 *         }
                 *
                 *         if (checkResult[1] && data.StartsWith("delete"))
                 *         {
                 *             data = data.Substring(6, data.Length - 6);
                 *             await SQLHelper.DeleteTimer(Convert.ToInt64(data));
                 *             var x = HttpUtility.ParseQueryString(request.Url.Query);
                 *             x.Set("data", "0");
                 *             await response.RedirectAsync(new Uri($"{request.Url.ToString().Split('?')[0]}?{x}"));
                 *             return true;
                 *         }
                 *
                 *         await WriteCorrectResponce(response, checkResult[1], characterId);
                 *         return true;
                 *     }
                 *
                 *     var prms = request.Url.Query.TrimStart('?').Split('&');
                 *     if (prms.Length != 3)
                 *     {
                 *         //await response.RedirectAsync(new Uri(WebServerModule.GetWebSiteUrl()));
                 *         return false;
                 *     }
                 *
                 *     var inputId = prms[1].Split('=')[1];
                 *     var state = prms[2].Split('=')[1];
                 *     if (state != "11")
                 *     {
                 *         // await response.RedirectAsync(new Uri(WebServerModule.GetWebSiteUrl()));
                 *         return false;
                 *     }
                 *
                 *     var characterId =
                 *         Convert.ToInt64(
                 *             Encoding.UTF8.GetString(Convert.FromBase64String(HttpUtility.UrlDecode(inputId))));
                 *
                 *     var rChar = await APIHelper.ESIAPI.GetCharacterData(Reason, characterId, true);
                 *     if (rChar == null)
                 *     {
                 *         // await response.RedirectAsync(new Uri(WebServerModule.GetWebSiteUrl()));
                 *         return false;
                 *     }
                 *
                 *     var checkResult = await CheckAccess(characterId, rChar);
                 *     if (!checkResult[0])
                 *         return true;
                 *
                 *     var data = await request.ReadContentAsStringAsync();
                 *
                 *     if (checkResult[1] && data != null)
                 *     {
                 *         if (data.StartsWith("delete"))
                 *         {
                 *             data = data.Substring(6, data.Length - 6);
                 *             await SQLHelper.DeleteTimer(Convert.ToInt64(data));
                 *         }
                 *         else
                 *         {
                 *             TimerItem entry = null;
                 *             try
                 *             {
                 *                 entry = JsonConvert.DeserializeObject<TimerItem>(data);
                 *             }
                 *             catch
                 *             {
                 *                 //ignore
                 *             }
                 *
                 *             if (entry == null)
                 *             {
                 *                 await response.WriteContentAsync(LM.Get("invalidInputData"));
                 *                 return true;
                 *             }
                 *
                 *             var iDate = entry.GetDateTime();
                 *             if (iDate == null)
                 *             {
                 *                 await response.WriteContentAsync(LM.Get("invalidTimeFormat"));
                 *                 return true;
                 *             }
                 *
                 *             if (iDate < DateTime.Now)
                 *             {
                 *                 await response.WriteContentAsync(LM.Get("passedTimeValue"));
                 *                 return true;
                 *             }
                 *
                 *             //save
                 *             entry.timerChar = rChar.name;
                 *             await SQLHelper.UpdateTimer(entry);
                 *         }
                 *
                 *         return true;
                 *     }*/
            }
            catch (Exception ex)
            {
                await LogHelper.LogEx(ex.Message, ex, Category);
            }
            finally
            {
                RunningRequestCount--;
            }
        }
        public async Task <WebQueryResult> ProcessRequest(string query, CallbackTypeEnum type, string ip, WebAuthUserData data)
        {
            if (!Settings.Config.ModuleNotificationFeed)
            {
                return(WebQueryResult.False);
            }

            try
            {
                RunningRequestCount++;
                if (query.Contains("&state=9"))
                {
                    //var prms = QueryHelpers.ParseQuery(query);
                    var prms = query.TrimStart('?').Split('&');
                    var code = prms[0].Split('=')[1];

                    var result = await WebAuthModule.GetCharacterIdFromCode(code,
                                                                            Settings.WebServerModule.CcpAppClientId, Settings.WebServerModule.CcpAppSecret);

                    if (result == null)
                    {
                        return(WebQueryResult.EsiFailure);
                    }

                    var characterId   = result[0];
                    var numericCharId = Convert.ToInt64(characterId);

                    if (string.IsNullOrEmpty(characterId))
                    {
                        await LogHelper.LogWarning("Bad or outdated notify feed request!");

                        var r = WebQueryResult.BadRequestToSystemAuth;
                        r.Message1 = LM.Get("authTokenBodyFail");
                        r.Message2 = LM.Get("authTokenBadRequest");
                        return(r);
                    }

                    if (!TickManager.GetModule <NotificationModule>().IsValidCharacter(numericCharId))
                    {
                        await LogHelper.LogWarning($"Unauthorized notify feed request from {characterId}");

                        var r = WebQueryResult.BadRequestToSystemAuth;
                        r.Message1 = LM.Get("authTokenBodyFail");
                        return(r);
                    }

                    var rChar = await APIHelper.ESIAPI.GetCharacterData(Reason, characterId, true);

                    await SQLHelper.InsertOrUpdateTokens(result[1] ?? "", characterId, null, "");

                    await LogHelper.LogInfo($"Notification feed added for character: {characterId}", LogCat.AuthWeb);

                    var res = WebQueryResult.GeneralAuthSuccess;
                    res.Message1 = LM.Get("authTokenRcv");
                    res.Message2 = LM.Get("authTokenRcv2", rChar.name);
                    return(res);
                }
            }
            catch (Exception ex)
            {
                await LogHelper.LogEx(ex.Message, ex, Category);
            }
            finally
            {
                RunningRequestCount--;
            }

            return(WebQueryResult.False);
        }
Exemple #6
0
 public static async Task <WebQueryResult> ProcessCallback(string queryStringValue, CallbackTypeEnum type,
                                                           string ip, WebAuthUserData data)
 {
     return(await WebServerModule.ProcessWebCallbacks(queryStringValue, type, ip, data));
 }
Exemple #7
0
        public override void ViewDidLoad()
        {
            base.ViewDidLoad();

            var settings = new CredentialApplicationSettings();

            BrowserToggle.TouchUpInside += (sender, args) =>
            {
                _browserType = BrowserToggle.On
                    ? AuthenticationInterfaceEnum.Embedded
                    : AuthenticationInterfaceEnum.Dedicated;
                _callbackType = BrowserToggle.On
                    ? CallbackTypeEnum.Localhost
                    : CallbackTypeEnum.Protocol;
            };

            FacebookAuth.TouchUpInside += async(sender, e) =>
            {
                var credentials = settings
                                  .GetClientCredentials <Facebook, OAuth2Credentials>(_callbackType);

                var token = await new OAuth2App <Facebook>(
                    credentials.ClientId,
                    credentials.ClientSecret,
                    credentials.CallbackUrl,
                    browserType: _browserType)
                            .AddScope <FacebookEvent>()
                            .GetCredentialsAsync()
                            .ConfigureAwait(false);

                WriteResultToTextView("Access Token:" + token.AccessToken);
            };
            TwitterAuth.TouchUpInside += async(sender, e) =>
            {
                var credentials = settings
                                  .GetClientCredentials <Twitter, OAuth1Credentials>(_callbackType);

                var token = await new OAuth1App <Twitter>(
                    credentials.ConsumerKey,
                    credentials.ConsumerSecret,
                    credentials.CallbackUrl,
                    browserType: _browserType)
                            .GetCredentialsAsync()
                            .ConfigureAwait(false);

                WriteResultToTextView("OAuth Secret: " + token.OAuthSecret + "\nOAuth Token: " + token.OAuthToken);
            };
            FatsecretAuth.TouchUpInside += async(sender, e) =>
            {
                var credentials = settings
                                  .GetClientCredentials <Fatsecret, OAuth1Credentials>(_callbackType);

                var token = await new OAuth1App <Fatsecret>(
                    credentials.ConsumerKey,
                    credentials.ConsumerSecret,
                    credentials.CallbackUrl,
                    browserType: _browserType)
                            .GetCredentialsAsync()
                            .ConfigureAwait(false);

                WriteResultToTextView("OAuth Secret: " + token.OAuthSecret + "\nOAuth Token: " + token.OAuthToken);
            };
            WithingsAuth.TouchUpInside += async(sender, args) =>
            {
                var credentials = settings
                                  .GetClientCredentials <Withings, OAuth1Credentials>(_callbackType);

                var token = await new OAuth1App <Withings>(
                    credentials.ConsumerKey,
                    credentials.ConsumerSecret,
                    credentials.CallbackUrl,
                    browserType: _browserType)
                            .GetCredentialsAsync()
                            .ConfigureAwait(false);

                WriteResultToTextView("OAuth Secret: " + token.OAuthSecret + "\nOAuth Token: " + token.OAuthToken);
            };
            SpotifyAuth.TouchUpInside += async(sender, e) =>
            {
                var credentials = settings
                                  .GetClientCredentials <Spotify, OAuth2Credentials>(_callbackType);

                var token = await new OAuth2App <Spotify>(
                    credentials.ClientId,
                    credentials.ClientSecret,
                    credentials.CallbackUrl,
                    browserType: _browserType)
                            .AddScope <SpotifySavedTrack>()
                            .GetCredentialsAsync()
                            .ConfigureAwait(false);

                WriteResultToTextView("Access Token:" + token.AccessToken);
            };
            GoogleAuth.TouchUpInside += async(sender, e) =>
            {
                var credentials = settings
                                  .GetClientCredentials <Google, OAuth2Credentials>(_callbackType);

                var token = await new OAuth2App <Google>(
                    credentials.ClientId,
                    credentials.ClientSecret,
                    credentials.CallbackUrl,
                    browserType: _browserType)
                            .AddScope <GoogleGmailMetadata>()
                            .GetCredentialsAsync()
                            .ConfigureAwait(false);

                WriteResultToTextView("Access Token:" + token.AccessToken);
            };
            FitbitAuth.TouchUpInside += async(sender, e) =>
            {
                var credentials = settings
                                  .GetClientCredentials <Fitbit, OAuth2Credentials>(_callbackType);

                var token = await new OAuth2App <Fitbit>(
                    credentials.ClientId,
                    credentials.ClientSecret,
                    credentials.CallbackUrl,
                    browserType: _browserType)
                            .AddScope <FitbitProfile>()
                            .GetCredentialsAsync()
                            .ConfigureAwait(false);

                WriteResultToTextView("Access Token:" + token.AccessToken);
            };
            RunkeeperAuth.TouchUpInside += async(sender, e) =>
            {
                var credentials = settings
                                  .GetClientCredentials <Runkeeper, OAuth2Credentials>(_callbackType);

                var token = await new OAuth2App <Runkeeper>(
                    credentials.ClientId,
                    credentials.ClientSecret,
                    credentials.CallbackUrl,
                    browserType: _browserType)
                            .AddScope <RunkeeperFitnessActivity>()
                            .GetCredentialsAsync()
                            .ConfigureAwait(false);

                WriteResultToTextView("Access Token:" + token.AccessToken);
            };
            FoursquareAuth.TouchUpInside += async(sender, e) =>
            {
                var credentials = settings
                                  .GetClientCredentials <Foursquare, OAuth2Credentials>(_callbackType);

                var token = await new OAuth2App <Foursquare>(
                    credentials.ClientId,
                    credentials.ClientSecret,
                    credentials.CallbackUrl,
                    browserType: _browserType)
                            .GetCredentialsAsync()
                            .ConfigureAwait(false);

                WriteResultToTextView("Access Token:" + token.AccessToken);
            };
            RescuetimeAuth.TouchUpInside += async(sender, e) =>
            {
                var credentials = settings
                                  .GetClientCredentials <Rescuetime, OAuth2Credentials>(_callbackType);

                var token = await new OAuth2App <Rescuetime>(
                    credentials.ClientId,
                    credentials.ClientSecret,
                    credentials.CallbackUrl,
                    browserType: _browserType)
                            .AddScope <RescuetimeAnalyticData>()
                            .GetCredentialsAsync()
                            .ConfigureAwait(false);

                WriteResultToTextView("Access Token:" + token.AccessToken);
            };
            LinkedinAuth.TouchUpInside += async(sender, e) =>
            {
                var credentials = settings
                                  .GetClientCredentials <LinkedIn, OAuth2Credentials>(_callbackType);

                var token = await new OAuth2App <LinkedIn>(
                    credentials.ClientId,
                    credentials.ClientSecret,
                    credentials.CallbackUrl,
                    browserType: _browserType)
                            .AddScope <LinkedinPersonal>()
                            .GetCredentialsAsync()
                            .ConfigureAwait(false);

                WriteResultToTextView("Access Token:" + token.AccessToken);
            };
            MioAuth.TouchUpInside += async(sender, args) =>
            {
                var auth        = new BluetoothApp <Mioalpha>();
                var credentials = await auth.GetBluetoothCredentialsAsync()
                                  .ConfigureAwait(false);

                WriteResultToTextView("Device Address: " + credentials.DeviceAddress);

                var requester = new BluetoothRequester();
                var result    = await requester
                                .MakeBluetoothRequestAsync <MioHeartRate>(credentials)
                                .ConfigureAwait(false);

                WriteResultToTextView("Heart rate: " + result.Reading);
            };
            GPS.TouchUpInside += async(sender, args) =>
            {
                var result = await new GPSRequester()
                             .MakeGPSRequestAsync()
                             .ConfigureAwait(false);

                WriteResultToTextView($"Latitude: {result.Latitude}, Longitude: {result.Longitude}, Speed: {result.Speed}");
            };
        }
Exemple #8
0
        protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);

            var settings = new CredentialApplicationSettings();

            SetContentView(Resource.Layout.Main);

            var toggleButton = FindViewById <ToggleButton>(Resource.Id.browserToggleButton);

            toggleButton.Click += (o, e) =>
            {
                _browserType = toggleButton.Checked
                    ? AuthenticationInterfaceEnum.Dedicated
                    : AuthenticationInterfaceEnum.Embedded;
                _callbackType = toggleButton.Checked
                    ? CallbackTypeEnum.Protocol
                    : CallbackTypeEnum.Localhost;
            };

            FindViewById <Button>(Resource.Id.facebookAuth).Click += async(sender, args) =>
            {
                var credentials = settings
                                  .GetClientCredentials <Facebook, OAuth2Credentials>(_callbackType);

                var token = await new OAuth2App <Facebook>(
                    credentials.ClientId,
                    credentials.ClientSecret,
                    credentials.CallbackUrl,
                    browserType: _browserType)
                            .AddScope <FacebookEvent>()
                            .GetCredentialsAsync()
                            .ConfigureAwait(false);

                WriteCredentials(token);
            };

            FindViewById <Button>(Resource.Id.twitterAuth).Click += async(sender, args) =>
            {
                var credentials = settings
                                  .GetClientCredentials <Twitter, OAuth1Credentials>(_callbackType);

                var token = await new OAuth1App <Twitter>(
                    credentials.ConsumerKey,
                    credentials.ConsumerSecret,
                    credentials.CallbackUrl,
                    browserType: _browserType)
                            .GetCredentialsAsync()
                            .ConfigureAwait(false);

                WriteCredentials(token);
            };

            FindViewById <Button>(Resource.Id.fatsecretAuth).Click += async(sender, args) =>
            {
                var credentials = settings
                                  .GetClientCredentials <Fatsecret, OAuth1Credentials>(_callbackType);

                var token = await new OAuth1App <Fatsecret>(
                    credentials.ConsumerKey,
                    credentials.ConsumerSecret,
                    credentials.CallbackUrl,
                    browserType: _browserType)
                            .GetCredentialsAsync()
                            .ConfigureAwait(false);

                WriteCredentials(token);
            };
            FindViewById <Button>(Resource.Id.withings).Click += async(sender, args) =>
            {
                var credentials = settings
                                  .GetClientCredentials <Withings, OAuth1Credentials>(_callbackType);

                var token = await new OAuth1App <Withings>(
                    credentials.ConsumerKey,
                    credentials.ConsumerSecret,
                    credentials.CallbackUrl,
                    browserType: _browserType)
                            .GetCredentialsAsync()
                            .ConfigureAwait(false);

                WriteCredentials(token);
            };
            FindViewById <Button>(Resource.Id.fitbitAuth).Click += async(sender, args) =>
            {
                var credentials = settings
                                  .GetClientCredentials <Fitbit, OAuth2Credentials>(_callbackType);

                var token = await new OAuth2App <Fitbit>(
                    credentials.ClientId,
                    credentials.ClientSecret,
                    credentials.CallbackUrl,
                    browserType: _browserType)
                            .AddScope <FitbitProfile>()
                            .GetCredentialsAsync()
                            .ConfigureAwait(false);

                WriteCredentials(token);
            };

            FindViewById <Button>(Resource.Id.foursquareAuth).Click += async(sender, args) =>
            {
                var credentials = settings
                                  .GetClientCredentials <Foursquare, OAuth2Credentials>(_callbackType);

                var token = await new OAuth2App <Foursquare>(
                    credentials.ClientId,
                    credentials.ClientSecret,
                    credentials.CallbackUrl,
                    browserType: _browserType)
                            .GetCredentialsAsync()
                            .ConfigureAwait(false);

                WriteCredentials(token);
            };

            FindViewById <Button>(Resource.Id.googleAuth).Click += async(sender, args) =>
            {
                var credentials = settings
                                  .GetClientCredentials <Google, OAuth2Credentials>(_callbackType);

                var token = await new OAuth2App <Google>(
                    credentials.ClientId,
                    credentials.ClientSecret,
                    credentials.CallbackUrl,
                    browserType: _browserType)
                            .AddScope <GoogleGmailMetadata>()
                            .AddScope <GoogleGmail>()
                            .GetCredentialsAsync()
                            .ConfigureAwait(false);

                WriteCredentials(token);
            };

            FindViewById <Button>(Resource.Id.linkedinAuth).Click += async(sender, args) =>
            {
                var credentials = settings
                                  .GetClientCredentials <LinkedIn, OAuth2Credentials>(_callbackType);

                var token = await new OAuth2App <LinkedIn>(
                    credentials.ClientId,
                    credentials.ClientSecret,
                    credentials.CallbackUrl,
                    browserType: _browserType)
                            .AddScope <LinkedinPersonal>()
                            .GetCredentialsAsync()
                            .ConfigureAwait(false);

                WriteCredentials(token);
            };

            FindViewById <Button>(Resource.Id.rescuetimeAuth).Click += async(sender, args) =>
            {
                var credentials = settings
                                  .GetClientCredentials <Rescuetime, OAuth2Credentials>(_callbackType);

                var token = await new OAuth2App <Rescuetime>(
                    credentials.ClientId,
                    credentials.ClientSecret,
                    credentials.CallbackUrl,
                    browserType: _browserType)
                            .AddScope <RescuetimeAnalyticData>()
                            .GetCredentialsAsync()
                            .ConfigureAwait(false);

                WriteCredentials(token);
            };

            FindViewById <Button>(Resource.Id.spotifyAuth).Click += async(sender, args) =>
            {
                var credentials = settings
                                  .GetClientCredentials <Spotify, OAuth2Credentials>(_callbackType);

                var token = await new OAuth2App <Spotify>(
                    credentials.ClientId,
                    credentials.ClientSecret,
                    credentials.CallbackUrl,
                    browserType: _browserType)
                            .AddScope <SpotifySavedTrack>()
                            .GetCredentialsAsync()
                            .ConfigureAwait(false);

                WriteCredentials(token);
            };

            FindViewById <Button>(Resource.Id.runkeeperAuth).Click += async(sender, args) =>
            {
                var credentials = settings
                                  .GetClientCredentials <Runkeeper, OAuth2Credentials>(_callbackType);

                var token = await new OAuth2App <Runkeeper>(
                    credentials.ClientId,
                    credentials.ClientSecret,
                    credentials.CallbackUrl,
                    browserType: _browserType)
                            .AddScope <RunkeeperFitnessActivity>()
                            .GetCredentialsAsync()
                            .ConfigureAwait(false);

                WriteCredentials(token);
            };

            FindViewById <Button>(Resource.Id.mioalphaAuth).Click += async(sender, args) =>
            {
                var credentials = await new BluetoothApp <Mioalpha>()
                                  .GetBluetoothCredentialsAsync()
                                  .ConfigureAwait(false);

                WriteResultToTextView("Device Address: " + credentials.DeviceAddress);

                var result = await new BluetoothRequester()
                             .MakeBluetoothRequestAsync <MioHeartRate>(credentials)
                             .ConfigureAwait(false);

                WriteResultToTextView("Heart rate: " + result.Reading);
            };

            FindViewById <Button>(Resource.Id.gps).Click += async(sender, args) =>
            {
                var result = await new GPSRequester()
                             .MakeGPSRequestAsync()
                             .ConfigureAwait(false);

                WriteResultToTextView(
                    $"Latitude: {result.Latitude}, Longitude: {result.Longitude}, Speed: {result.Speed}");
            };

            FindViewById <Button>(Resource.Id.sms).Click += async(sender, args) =>
            {
                var filterDate = new DateTime(2016, 7, 21, 0, 0, 0);
                var results    = await new SMSRequester()
                                 .MakeSMSRequestAsync(filterDate)
                                 .ConfigureAwait(false);

                var resultsString = string.Empty;
                foreach (var result in results)
                {
                    resultsString +=
                        $"Address: {result.Address}, Header: {result.Subject}, Body: {result.Body}\n";
                }
                WriteResultToTextView(resultsString);
            };
        }
Exemple #9
0
 /// <summary>
 /// Construtor da classe setando o callback default (Inativo).
 /// </summary>
 public Message()
 {
     this.Callback = CallbackTypeEnum.INACTIVE;
 }