Esempio n. 1
0
 /// <summary>Remove Tag</summary>
 /// <param name="gamer">GamerCard</param>
 public void Remove(GamerCard gamer)
 {
     DeleteFile(gamer.Picture.Filename);
     DeleteFile(gamer.Avatar.Filename);
     foreach (Game game in gamer.Games)
     {
         DeleteFile(game.Image.Filename);
     }
     GamerCards.Remove(gamer);
     Save();
 }
Esempio n. 2
0
 /// <summary>Clear Tags</summary>
 public void Clear()
 {
     Delete(PATTERN_ALL);
     GamerCards.Clear();
 }
Esempio n. 3
0
        /// <summary>Parse</summary>
        /// <param name="source">Source HTML</param>
        /// <param name="tag">Gamer Tag</param>
        private void Parse(string source, string tag)
        {
            try
            {
                GamerCard gamer = new GamerCard();
                xml = XElement.Parse(Sanitise(GetBody(source))); // Parse HTML

                // Card
                XElement xmlCard = (from element in xml.Descendants()
                                    where element.Name == HTML_DIV
                                    select element).First();

                // Link
                gamer.Link = (from element in xmlCard.Descendants()
                              where (string)element.Attribute(ATTR_ID) == VALUE_GAMERTAG
                              select element).Single().Attribute(ATTR_HREF).Value;

                // Gamer Tag
                gamer.Tag = (from element in xmlCard.Descendants()
                             where (string)element.Attribute(ATTR_ID) == VALUE_GAMERTAG
                             select element).Single().Value;

                // Avatar
                gamer.Avatar = PictureFromUri(new Uri(String.Format(URL_AVATAR, gamer.Tag)));

                // Account
                gamer.Account = xmlCard.FirstAttribute.Value.Contains(VALUE_GOLD)
                     ? GamerCard.AccountType.Gold : GamerCard.AccountType.Free;

                // Gamer Picture
                gamer.Picture = PictureFromUri(new Uri((from element in xmlCard.Descendants()
                                                        where (string)element.Attribute(ATTR_ID) == VALUE_GAMERPIC
                                                        select element).Single().Attribute(ATTR_SRC).Value));

                // Gamer Score
                try { gamer.Score = int.Parse(GetGamerItem(xmlCard, VALUE_GAMERSCORE)); }
                catch { gamer.Score = ZERO; }

                // Location
                gamer.Location = GetGamerItem(xmlCard, VALUE_LOCATION);

                // Motto
                gamer.Motto = GetGamerItem(xmlCard, VALUE_MOTTO);

                // Name
                gamer.Name = GetGamerItem(xmlCard, VALUE_NAME);

                // Bio
                gamer.Bio = GetGamerItem(xmlCard, VALUE_BIO);

                // Reputation Container
                XElement xmlRep = (from element in xmlCard.Descendants()
                                   where (string)element.Attribute(ATTR_CLASS) == VALUE_REPUTATION
                                   select element).Single();

                // Repututation
                IEnumerable <XElement> reputation = (from element in xmlRep.Descendants(HTML_DIV)
                                                     where element.Attribute(ATTR_CLASS).Value.StartsWith(VALUE_STAR)
                                                     select element);

                // Stars
                List <StarControl> stars = new List <StarControl>();
                foreach (XElement element in reputation)
                {
                    StarControl star = new StarControl();
                    switch (element.Attribute(ATTR_CLASS).Value)
                    {
                    case VALUE_STAR_FULL:
                        star.Display = StarControl.DisplayValue.Full;
                        stars.Add(star);
                        break;

                    case VALUE_STAR_HALF:
                        star.Display = StarControl.DisplayValue.Half;
                        stars.Add(star);
                        break;

                    case VALUE_STAR_QUARTER:
                        star.Display = StarControl.DisplayValue.Quarter;
                        stars.Add(star);
                        break;

                    case VALUE_STAR_THREE_QUARTER:
                        star.Display = StarControl.DisplayValue.ThreeQuarter;
                        stars.Add(star);
                        break;

                    default:
                        break;
                    }
                    ;
                }
                gamer.Stars = stars;

                // Played Section
                XElement xmlPlayed = (from element in xmlCard.Descendants()
                                      where (string)element.Attribute(ATTR_ID) == VALUE_PLAYED_GAMES
                                      select element).Single();

                // Played Games
                List <Game> games = new List <Game>();
                foreach (XElement element in xmlPlayed.Descendants(HTML_ITEM))
                {
                    try
                    {
                        Game game = new Game();
                        game.Link                  = element.Element(HTML_ANCHOR).Attribute(ATTR_HREF).Value;
                        game.Image                 = PictureFromUri(new Uri(element.Element(HTML_ANCHOR).Element(HTML_IMG).Attribute(ATTR_SRC).Value));
                        game.ID                    = GetID(game.Link);
                        game.Cover                 = PictureFromUri(GetCover(game.ID, false));
                        game.Title                 = GetGameItem(element, VALUE_TITLE);
                        game.LastPlayed            = GetGameItem(element, VALUE_LAST_PLAYED);
                        game.EarnedGamerscore      = GetGameItem(element, VALUE_EARNED_GAMERSCORE);
                        game.AvailableGamerscore   = GetGameItem(element, VALUE_AVAILABLE_GAMERSCORE);
                        game.EarnedAchievements    = GetGameItem(element, VALUE_EARNED_ACHIEVEMENTS);
                        game.AvailableAchievements = GetGameItem(element, VALUE_AVAILABLE_ACHIEVEMENTS);
                        game.PercentageComplete    = GetGameItem(element, VALUE_PERCENTAGE_COMPLETE);
                        games.Add(game);
                    }
                    catch
                    {
                        // Do Nothing
                    }
                }
                gamer.Games = games;
                // Date Updated
                gamer.Updated = DateTime.Now;
                if (Exists(tag))
                {
                    int       position;
                    GamerCard previous = new GamerCard();
                    previous = Get(tag);
                    position = GamerCards.IndexOf(previous);
                    Remove(previous);
                    GamerCards.Insert(position, gamer);
                }
                else
                {
                    GamerCards.Add(gamer);
                }
                Save();
                Completed(this, EventArgs.Empty);
                gamer = null;
            }
            catch
            {
                message = String.Format(ERR_PARSE, tag);
                Failed(this, EventArgs.Empty);
            }
        }