AdvancedLauncher.Providers.Korea.KoreaWebProvider.GetGuild C# (CSharp) Method

GetGuild() public method

public GetGuild ( Server server, string guildName, bool isDetailed ) : Guild
server AdvancedLauncher.SDK.Model.Entity.Server
guildName string
isDetailed bool
return AdvancedLauncher.SDK.Model.Entity.Guild
        public override Guild GetGuild(Server server, string guildName, bool isDetailed)
        {
            OnStarted();
            Guild guild = new Guild() {
                Server = server,
                IsDetailed = isDetailed
            };
            HtmlDocument doc = new HtmlDocument();
            OnStatusChanged(DMODownloadStatusCode.GETTING_GUILD, guildName, 0, 50);
            try {
                string html = DownloadContent(string.Format(STR_URL_GUILD_RANK, guildName, server.Identifier));
                doc.LoadHtml(html);

                bool isFound = false;
                HtmlNode ranking = doc.DocumentNode;

                string guildMaster = null;

                try {
                    ranking = doc.DocumentNode.SelectNodes("//div[@id='body']//table[@class='forum_list'][1]//tbody//tr[not(@onmouseover)]")[4];
                    guild.Rank = CheckRankNode(ranking.SelectSingleNode(".//td[1]"));
                    guild.Name = ClearStr(ranking.SelectSingleNode(".//td[2]").InnerText);
                    guild.Rep = Convert.ToInt32(ClearStr(ranking.SelectSingleNode(".//td[4]").InnerText));
                    guildMaster = ClearStr(ranking.SelectSingleNode(".//td[5]").InnerText);

                    Regex r1 = new Regex(STR_GUILD_ID_REGEX, RegexOptions.IgnoreCase | RegexOptions.Singleline);
                    string link = ranking.SelectSingleNode(".//td[7]").InnerHtml;
                    Match m1 = r1.Match(link);
                    if (m1.Success) {
                        guild.Identifier = Convert.ToInt32(m1.Groups[4].ToString());
                        isFound = true;
                    }
                } catch {
                    isFound = false;
                }

                if (!isFound) {
                    OnCompleted(DMODownloadResultCode.NOT_FOUND, guild); // guild not found
                    return guild;
                }

                List<DigimonType> types = GetDigimonTypes();
                using (IDatabaseContext context = DatabaseManager.CreateContext()) {
                    foreach (DigimonType type in types) {
                        context.AddOrUpdateDigimonType(type, true);
                    }
                    context.SaveChanges();
                }

                if (GetGuildInfo(ref guild, isDetailed)) {
                    guild.Tamers.First(t => t.Name == guildMaster).IsMaster = true;
                    guild.UpdateTime = DateTime.Now;
                    OnCompleted(DMODownloadResultCode.OK, guild);
                    return guild;
                } else {
                    OnCompleted(DMODownloadResultCode.CANT_GET, guild); // can't get guild info
                    return guild;
                }
            } catch (WebException) {
                OnCompleted(DMODownloadResultCode.WEB_ACCESS_ERROR, guild);
                return guild;
            }
        }