Ejemplo n.º 1
0
        public async Task <bool> RemoveFavourite(FbFavourite favouriteItem)
        {
            var postData = new List <KeyValuePair <string, string> >
            {
                new KeyValuePair <string, string>("s", ""),
                new KeyValuePair <string, string>("do", favouriteItem.Type == FbItemType.Forum ? "dostuff-forum" : "dostuff"),
                new KeyValuePair <string, string>("folderid", "0"),
                new KeyValuePair <string, string>(favouriteItem.FbId, "yes"),
                new KeyValuePair <string, string>("what", "delete"),
                new KeyValuePair <string, string>("stoken", "")
            };

            var postContent = new FlashbackStringUrlContent(postData);

            var response = await _httpClient.PostAsync("https://www.flashback.org/subscription.php", postContent);

            return(response.IsSuccessStatusCode);
        }
Ejemplo n.º 2
0
        private async void ExecuteDeleteItemCommand(FbFavourite item)
        {
            try
            {
                Error = null;

                var result = await _threadsService.RemoveFavourite(item);

                if (result)
                {
                    this.Favourites.Remove(item);
                    Messenger.Default.Send <string>(item.Name + " är borttagen från favoriterna!", FlashbackConstants.MessengerShowInformation);
                }
            }
            catch (Exception e)
            {
                Error = e.ToString();
            }
        }
Ejemplo n.º 3
0
 private bool CanExecuteDeleteItemCommand(FbFavourite item)
 {
     return(true);
 }
Ejemplo n.º 4
0
        private async Task <List <FbFavourite> > ParseFavourites(string result)
        {
            var parser = new HtmlParser();

            var resultFavourites = new List <FbFavourite>();

            var favourites = await parser.ParseAsync(result);

            // börjar först med favoriter som är a typen forum
            var favouritesForumCheck = favourites.QuerySelectorAll("table.forumslist tr.tr_subforum");

            if (favouritesForumCheck != null)
            {
                foreach (var forum in favouritesForumCheck)
                {
                    FbFavourite item = new FbFavourite()
                    {
                        Type = FbItemType.Forum
                    };

                    var titleCheck = forum.QuerySelector("td:nth-child(2) div a:nth-child(1)");

                    if (titleCheck != null)
                    {
                        item.Name = WebUtility.HtmlDecode(titleCheck.TextContent).FixaRadbrytningar();
                        item.Id   = titleCheck.Attributes["href"].Value.Replace("/", "").Replace("n", "");

                        if (titleCheck.Parent != null && titleCheck.Parent.NodeName == "STRONG")
                        {
                            item.IsUnread = true;
                        }
                    }
                    else
                    {
                        continue;
                    }

                    var senasteCheck = forum.QuerySelector("td:nth-child(1) div:nth-child(2) div a");
                    if (senasteCheck != null)
                    {
                        item.LastPost = WebUtility.HtmlDecode(senasteCheck.TextContent.FixaRadbrytningar().Replace("av", " av").Trim());
                    }

                    var idCheck = forum.QuerySelector("td:nth-child(3) input");
                    if (idCheck != null)
                    {
                        item.FbId = idCheck.Attributes[1].Value;
                    }

                    resultFavourites.Add(item);
                }
            }

            // därefter tar vi vanliga favoriter
            Regex regex = new Regex(@"Svar: ([\d]+)");
            var   favouritesThreadsCheck = favourites.QuerySelectorAll("table#threadslist tr");

            if (favouritesThreadsCheck != null)
            {
                foreach (var thread in favouritesThreadsCheck)
                {
                    var item = new FbFavourite()
                    {
                        Type = FbItemType.Thread, ShowPostCount = true, ShowForumColor = false
                    };

                    var titleCheck = thread.QuerySelector("td:nth-child(2) div a");

                    if (titleCheck != null)
                    {
                        item.Name = WebUtility.HtmlDecode(titleCheck.TextContent).FixaRadbrytningar();
                        item.Id   = titleCheck.Attributes["href"].Value.Replace("/", "");

                        if (titleCheck.Parent != null && titleCheck.Parent.NodeName == "STRONG")
                        {
                            item.IsUnread = true;
                        }
                    }
                    else
                    {
                        continue;
                    }

                    var    usernameCheck = thread.QuerySelector("td:nth-child(3) div:nth-child(2) a:nth-child(1)");
                    string username      = "";
                    if (usernameCheck != null)
                    {
                        username = WebUtility.HtmlDecode(usernameCheck.TextContent.FixaRadbrytningar());
                    }

                    var lastPostCheck = thread.QuerySelector("td:nth-child(3) div");
                    if (lastPostCheck != null)
                    {
                        item.LastPost = WebUtility.HtmlDecode(lastPostCheck.TextContent.FixaRadbrytningar().Replace("av", " av").Trim()) + " av " + username;
                    }

                    var countCheck = thread.QuerySelector("td:nth-child(3)");
                    if (countCheck != null)
                    {
                        foreach (Match match in regex.Matches(countCheck.Attributes[1].Value.Replace(" ", "").FixaRadbrytningar()))
                        {
                            item.PostCount = int.Parse(match.Groups[1].Value);
                        }
                    }

                    var favourteIdCheck = thread.QuerySelector("td:nth-child(4) input");
                    if (favourteIdCheck != null)
                    {
                        item.FbId = favourteIdCheck.Attributes[1].Value;
                    }

                    resultFavourites.Add(item);
                }
            }

            return(resultFavourites);
        }