Example #1
0
        private async Task CheckPwned()
        {
            if (!CrossConnectivity.Current.IsConnected)
            {
                await UserDialogs.Instance.AlertAsync("It seems you have no active internet connection. Please verify that you have and try again.",
                                                      "No internet", "OK");

                return;
            }

            HasItems    = false;
            HasSearched = false;
            IsLoading   = true;

            try
            {
                var resultBreaches = await BeenPwnedService.Instance.GetBreachesForAccount(Filter);


                var breachesGroup = BreachesAndPastes.SingleOrDefault(b => b.Name == "Breaches");

                if (breachesGroup == null)
                {
                    BreachesAndPastes.Add(new SearchListGroup("Breaches"));
                }

                BreachesAndPastes.Single(b => b.Name == "Breaches").ReplaceRange(resultBreaches);


                IEnumerable <Paste> resultPastes = null;

                try
                {
                    resultPastes = await BeenPwnedService.Instance.GetPastesForAccount(Filter);

                    var pastesGroup = BreachesAndPastes.SingleOrDefault(b => b.Name == "Pastes");

                    if (resultPastes.Count() > 0)
                    {
                        if (pastesGroup == null)
                        {
                            BreachesAndPastes.Add(new SearchListGroup("Pastes"));
                        }

                        BreachesAndPastes.Single(b => b.Name == "Pastes").ReplaceRange(resultPastes);
                    }
                    else
                    {
                        BreachesAndPastes.Remove(pastesGroup);
                    }
                }
                catch (ArgumentException)
                {
                    // If the given acount is not a (valid) e-mailaddress an ArgumentException will be thrown
                    BreachesAndPastes.SingleOrDefault(b => b.Name == "Pastes")?.Clear();
                    BreachesAndPastes.Remove(BreachesAndPastes.Where(g => g.Name == "Pastes").SingleOrDefault());
                }

                HasItems = BreachesAndPastes.SelectMany(g => g).Any();
                var breachCount = resultBreaches?.Count() ?? 0;
                var pasteCount  = resultPastes?.Count() ?? 0;

                BreachedDescription = $"Pwned on {breachCount} breached site(s) and found {pasteCount} paste(s).";
            }
            catch
            {
                IsError = true;
            }
            finally
            {
                IsLoading   = false;
                HasSearched = true;
            }
        }
Example #2
0
 public MainPageModel()
 {
     BreachesAndPastes.Add(new SearchListGroup("Breaches"));
     BreachesAndPastes.Add(new SearchListGroup("Pastes"));
 }