public void Get_EU_Realm_Auction_Data() { WowExplorer euExplorer = new WowExplorer(Region.EU, Locale.fr_FR, APIKey); Auctions auctions = euExplorer.GetAuctions("Twisting Nether"); Assert.IsTrue(auctions.Horde.Auctions.Count() > 0); }
public void Get_TW_Realm_Auction_Data() { WowExplorer twExplorer = new WowExplorer(Region.TW, Locale.zh_TW, APIKey); Auctions auctions = twExplorer.GetAuctions("Balnazzar"); Assert.IsTrue(auctions.Horde.Auctions.Count() > 0); }
//int count = 1; protected override void OnCreate(Bundle savedInstanceState) { base.OnCreate(savedInstanceState); // Set our view from the "main" layout resource SetContentView(Resource.Layout.Main); // connect to the Mashery API WowExplorer explorer = new WowExplorer(Region.US, Locale.en_US, "r8qtcbzwx8sc3dvrxwsgbh4rczmkf8jm"); // explicitly look up a guild //Guild userGuild = explorer.GetGuild("thrall", "blackfyre", GuildOptions.GetEverything); Character userCharacter = explorer.GetCharacter("thrall", "zantlock", CharacterOptions.GetPvP); TextView charName = FindViewById <TextView>(Resource.Id.charName1); TextView charKills = FindViewById <TextView>(Resource.Id.totalKills1); //userCharacter.PvP.TotalHonorableKills // Get our button from the layout resource, // and attach an event to it Button btnGetKills = FindViewById <Button>(Resource.Id.getPvpKills); btnGetKills.Click += delegate { charName.Text = userCharacter.Name; charKills.Text = userCharacter.PvP.TotalHonorableKills.ToString(); }; //button.Click += delegate { button.Text = string.Format("{0} clicks!", count++); }; }
public void GetSpiritsOfTheSunItemTest() { WowExplorer explorer = new WowExplorer(); Item i1 = explorer.GetItemDetails(86885); Assert.AreEqual("Spirits of the Sun", i1.name); }
public void Get_Invalid_Data_From_CN_Region_Throws_Exception() { WowExplorer wEx = new WowExplorer(Region.CN); Action a = () => wEx.GetCharacterClasses(); TestUtility.ThrowsException<Exception>(a, "The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel."); }
public void Get_TW_Realm_Auction_Data() { WowExplorer twExplorer = new WowExplorer(Region.TW, Locale.zh_TW, APIKey); Auctions auctions = twExplorer.GetAuctions("Balnazzar"); Assert.IsTrue(auctions.AllAuctionHouses.Auctions.Count() > 0); }
public void Get_EU_Realm_Auction_Data() { WowExplorer euExplorer = new WowExplorer(Region.EU, Locale.fr_FR, APIKey); Auctions auctions = euExplorer.GetAuctions("Twisting Nether"); Assert.IsTrue(auctions.AllAuctionHouses.Auctions.Count() > 0); }
public void Get_Guild_With_Connected_Realms() { WowExplorer explorer2 = new WowExplorer(Region.EU, Locale.en_GB, APIKey); Guild guild2 = explorer2.GetGuild("darksorrow", "mentality", GuildOptions.GetMembers); List <GuildMember> guildMembers = guild2.Members.Where(x => x.Character.Name.Equals("Danishpala", StringComparison.CurrentCultureIgnoreCase)).ToList(); Assert.AreEqual(0, guildMembers.Count(x => !x.Character.Realm.Equals(x.Character.GuildRealm))); }
public void GetCharacterBriandekFromSkullcrusherTest() { WowExplorer explorer = new WowExplorer(Region.US, Locale.en_US); Character c1 = explorer.GetCharacterDetails("skullcrusher", "briandek"); Assert.AreEqual(85, c1.level); Assert.AreEqual(1, c1.@class); }
public void GetCharacterFleasFromSkullcrusherTest() { WowExplorer explorer = new WowExplorer(Region.US, Locale.en_US); Character c1 = explorer.GetCharacterDetails("skullcrusher", "fleas"); Assert.AreEqual(90, c1.level); Assert.AreEqual(11, c1.@class); }
public void Get_Guild_With_Connected_Realms() { WowExplorer explorer2 = new WowExplorer(Region.EU, Locale.en_GB, APIKey); Guild guild2 = explorer2.GetGuild("darksorrow", "mentality", GuildOptions.GetMembers); List<GuildMember> guildMembers = guild2.Members.Where(x => x.Character.Name.Equals("Danishpala", StringComparison.CurrentCultureIgnoreCase)).ToList(); Assert.AreEqual(2, guildMembers.Count); Assert.AreEqual(1, guildMembers.Count(x => !x.Character.Realm.Equals(x.Character.GuildRealm))); }
private void testRealm(Region region, string realm) { WowExplorer explorer = new WowExplorer(Region.US); Auctions auctions = explorer.GetAuctions("Skullcrusher"); Assert.IsTrue(auctions.Horde.Auctions.Count() > 0); Assert.IsTrue((from n in auctions.Horde.Auctions where n.ItemId == 53010 select n).Count() > 0); }
public void FetchData_When_Authenticated() { WowExplorer authExplorer = new WowExplorer(Region.US, Locale.en_US, "", ""); IEnumerable<Realm> realms = authExplorer.GetRealms(); Realm realm = realms.GetRealm("skullcrusher"); Assert.IsNotNull(realm); Assert.IsTrue(realm.Name == "Skullcrusher"); Assert.IsTrue(realm.Type == RealmType.PVP); Assert.IsTrue(realm.Slug == "skullcrusher"); }
public IEnumerable<Business.Character> ParserRoster(string region, string server, string name) { WowExplorer explorer = new WowExplorer(Region.US); try { Guild guildMembers = explorer.GetGuild(server, name, GuildOptions.GetMembers | GuildOptions.GetAchievements); if (guildMembers == null) { return new List<Business.Character>(); } return guildMembers.Members.Select(m => new Business.Character(m.Character.Name, server, region) { CurrentPoints = m.Character.AchievementPoints, Level = m.Character.Level }); } catch (Exception ex) { return new List<Business.Character>(); } }
private void Initialize() { _explorer = new WowExplorer(Region.EU, Locale.ru_RU, _apiKey); GuildsForChecking = new ObservableCollection <Guild>(GetObjectFromFile <List <Guild> >(GuildsForCheckingFileName) ?? new List <Guild>()); BannedGuilds = new ObservableCollection <Guild>(GetObjectFromFile <List <Guild> >(BannedGuildsFileName) ?? new List <Guild>()); BannedPlayers = new ObservableCollection <Character>(GetObjectFromFile <List <Character> >(BannedPlayersFileName) ?? new List <Character>()); ServerNames = new List <string> { "Страж Смерти", "Черный Шрам", "Свежеватель душ", "Ревущий фьорд", "Азурегос", "Борейская тундра", "Вечная Песня", "Галакронд", "Голдринн", "Гордунни", "Гром", "Термоштепсель", "Дракономор", "Пиратская бухта", "Ткач Смерти", "Король-лич", "Седогрив", "Подземье", "Разувий", "Ясеневый лес" }; }
public void Parse(bool download) { WowExplorer explorer = new WowExplorer(Region.US); IEnumerable<AchievementList> achievementList = explorer.GetAchievements(); IList<Achievement> achievements = new List<Achievement>(); foreach (AchievementList mainAchievementCategory in achievementList) { Console.WriteLine(mainAchievementCategory.Name); if (mainAchievementCategory.Categories != null) { // First handle the sub categories foreach (AchievementCategory subCategory in mainAchievementCategory.Categories) { ProcessAchievementList(subCategory.Achievements, subCategory.Name, subCategory.Id, mainAchievementCategory.Id); Console.WriteLine("\t{0}", subCategory.Name); } } ProcessAchievementList(mainAchievementCategory.Achievements, mainAchievementCategory.Name, mainAchievementCategory.Id, -1); } }
public static void ClassInit(TestContext context) { explorer = new WowExplorer(Region.US, Locale.en_US); }
static Api() { ApiClient = new WowExplorer(); Characters = new List <Character>(); Guilds = new List <Guild>(); }
public static void ClassInit(TestContext context) { explorer = new WowExplorer(WowRegion, WowLocale, APIKey); }
public static void ClassInit(TestContext context) { explorer = new WowExplorer(Region.US, Locale.en_US, APIKey); }
public static void ClassInit(TestContext context) { explorer = new WowExplorer(Region.US, Locale.en_US, APIKey); guild = explorer.GetGuild("korgath", "immortality", GuildOptions.GetEverything); }
static Api() { ApiClient = new WowExplorer(); Characters = new List<Character>(); Guilds = new List<Guild>(); }
public Business.Character Parse(Business.Character character, bool forceParse) { WowExplorer explorer = new WowExplorer(Region.US); try { WowDotNetAPI.Models.Character downloadedCharacter = explorer.GetCharacter(Region.US, character.Server, character.Name, CharacterOptions.GetAchievements | CharacterOptions.GetGuild); if (downloadedCharacter == null) { return null; } character.Class = downloadedCharacter.Class.ToString(); character.CurrentPoints = downloadedCharacter.AchievementPoints; character.LastParseDate = DateTime.UtcNow; character.Level = downloadedCharacter.Level; character.Race = downloadedCharacter.Race.ToString(); character.Thumbnail = downloadedCharacter.Thumbnail; character.Guild = downloadedCharacter.Guild.Name; if (downloadedCharacter.Race == WowDotNetAPI.Models.CharacterRace.BLOOD_ELF || downloadedCharacter.Race == WowDotNetAPI.Models.CharacterRace.GOBLIN || downloadedCharacter.Race == WowDotNetAPI.Models.CharacterRace.ORC || downloadedCharacter.Race == WowDotNetAPI.Models.CharacterRace.PANDAREN_HORDE || downloadedCharacter.Race == WowDotNetAPI.Models.CharacterRace.TAUREN || downloadedCharacter.Race == WowDotNetAPI.Models.CharacterRace.TROLL || downloadedCharacter.Race == WowDotNetAPI.Models.CharacterRace.UNDEAD) { character.Side = Achievement.HordeOnly; } else { character.Side = Achievement.AllianceOnly; } for (int i = 0; i < downloadedCharacter.Achievements.AchievementsCompleted.Count(); i++) { int blizzardId = downloadedCharacter.Achievements.AchievementsCompleted.ElementAt(i); DateTime completedOn = ConvertUnixEpochTime(downloadedCharacter.Achievements.AchievementsCompletedTimestamp.ElementAt(i)); Achievement achievement = _achievementRepository.FindAchivementByBlizzardId(blizzardId); if (achievement != null && !character.HasAchieved(achievement)) { character.AddNewAchivement(completedOn, achievement); } } for (int i = 0; i < downloadedCharacter.Achievements.Criteria return character; } catch (WebException we) { HttpWebResponse webResponse = we.Response as HttpWebResponse; if (webResponse != null && webResponse.StatusCode == HttpStatusCode.NotFound) { return null; } throw we; } }
public async Task UpdateGuildCacheCmd(string level, [Remainder] string optionalguildname = null) { string guildname = optionalguildname ?? Globals.DEFAULTGUILDNAME; StringBuilder sb = new StringBuilder(); // check if the level passed is a range string lowerrange = ""; string upperrange = ""; if (level.Contains("-")) { // it does so parse the lower upper level range string[] ranges = level.Split('-'); lowerrange = ranges[0].Trim(); upperrange = ranges[1].Trim(); // make sure the range isn't over level 100 if (int.Parse(lowerrange) > 100 || int.Parse(upperrange) > 100) { sb.AppendLine("Level ranges cannot exceed level 100.\nLevels 101 thru 110 must be run individually."); await ReplyAsync(sb.ToString()); return; } // make sure the range isn't over 100 if (int.Parse(upperrange) - int.Parse(lowerrange) > 10) { sb.AppendLine("Level ranges cannot exceed 10 levels at once.\nEX: ripbot updateguildcache 50-60 is ok.\nEX: ripbot updateguildcache 50-61 is NOT ok."); await ReplyAsync(sb.ToString()); return; } } WowExplorer explorer = new WowExplorer(Region.US, Locale.en_US, Globals.MASHERYAPIKEY); Character player = null; if (level == "110") { await ReplyAsync("Updating level 110 players can take upwards of 5-10 minutes because of the amount we have. Be patient.\n"); } sb.AppendLine("Attempting to update level " + level + " members of " + guildname + " (" + DateTime.Now.ToString() + ")"); await ReplyAsync(sb.ToString()); sb.Clear(); DataAccess da = new DataAccess(); // check if guild exists bool ret = false; ret = da.DoesGuildExist(guildname); // if it doesn't, get it if (!ret) { Guild thenewguild = null; try { thenewguild = explorer.GetGuild(Globals.DEFAULTREALM, guildname, GuildOptions.GetEverything); UpdateGuildInfo(thenewguild); } catch { sb.AppendLine("Guild" + guildname + " not found."); await ReplyAsync(sb.ToString()); return; } thenewguild = null; } int numofplayers = 0; int numofupdatedplayers = 0; List <string> insertedplayers = new List <string>(); List <string> updatedplayers = new List <string>(); List <string> failedplayers = new List <string>(); DataAccess.UpsertResult result = new DataAccess.UpsertResult(); // Get the list of playernames in a guild from the cache who have a matching lvl string sql = "SELECT PlayerName FROM PLAYERS WHERE Level = " + level + " AND GuildName = '" + guildname + "'"; if (!string.IsNullOrEmpty(lowerrange) && !string.IsNullOrEmpty(upperrange)) { sql = "SELECT PlayerName FROM PLAYERS WHERE Level >= " + lowerrange + " AND Level <= " + upperrange + " AND GuildName = '" + guildname + "'"; } DataTable matchingplayersfromcache = da.GetTable(sql, "Matches"); if (matchingplayersfromcache != null & matchingplayersfromcache.Rows.Count > 0) { numofplayers = matchingplayersfromcache.Rows.Count; numofupdatedplayers = 0; // loop through them foreach (DataRow dr in matchingplayersfromcache.Rows) { try { player = explorer.GetCharacter(Globals.DEFAULTREALM, dr["PlayerName"].ToString(), CharacterOptions.GetEverything); } catch (Exception ex) { failedplayers.Add(dr["PlayerName"].ToString()); Console.WriteLine(ex.Message); sb.AppendLine("Player " + dr["PlayerName"].ToString() + " not found.\nREASON: " + ex.Message + "\n"); continue; } // upsert the player and capture the inserts/updates try { result = da.UpdatePlayer(player); switch (result) { case DataAccess.UpsertResult.INSERTED: insertedplayers.Add(player.Name); break; case DataAccess.UpsertResult.UPDATED: updatedplayers.Add(player.Name); break; case DataAccess.UpsertResult.ERROR: failedplayers.Add(player.Name); break; default: break; } } catch (Exception exx) { failedplayers.Add(player.Name); Console.WriteLine(exx.Message); await ReplyAsync("\nERROR:\n" + exx.ToString() + "\n"); } if (result != DataAccess.UpsertResult.ERROR) { numofupdatedplayers++; } else { Console.WriteLine(""); sb.AppendLine("Player " + dr["PlayerName"].ToString() + " not updated."); failedplayers.Add(player.Name); } //Thread.Sleep(2000); } } else { sb.AppendLine("There aren't any level " + level.ToString() + " players in the guild. (" + DateTime.Now.ToString() + ")\n"); } matchingplayersfromcache = null; player = null; // TODO: get the inserted players // get players from wow List <string> playersfromwow = new List <string>(); Guild theguild = explorer.GetGuild(Globals.DEFAULTREALM, guildname, GuildOptions.GetMembers); if (theguild == null) { await ReplyAsync(guildname + " not found."); return; } foreach (GuildMember gm in theguild.Members) { playersfromwow.Add(gm.Character.Name); } playersfromwow.Sort(); // get players from cache List <string> playersfromcache = da.GetPlayers(guildname); playersfromcache.Sort(); // create list of players in wow but not cache List <string> playerstoinsert = new List <string>(); foreach (string playerinwow in playersfromwow) { if (!playersfromcache.Contains(playerinwow)) { playerstoinsert.Add(playerinwow); } } //// create list of players in cache but not wow for purge //List<string> playerstopurge = new List<string>(); //foreach (string playerincache in playersfromcache) //{ // if (!playersfromwow.Contains(playerincache)) // playerstopurge.Add(playerincache); //} // add the players to the cache that are missing foreach (string playertoadd in playerstoinsert) { try { player = explorer.GetCharacter(Globals.DEFAULTREALM, playertoadd, CharacterOptions.GetEverything); } catch (Exception ex) { if (ex.HResult == -2146233076) // seems to happen on Wrobbinhuud and Nighteld { sb.AppendLine(playertoadd + ": Error deserializing WoW character."); continue; } if (ex.HResult == -2146233079) // "The remote server returned an error: (503) Server Unavailable." { sb.AppendLine(playertoadd + ": Error Blizzard API service is down."); continue; } sb.AppendLine(playertoadd + ": not found."); continue; } result = da.UpdatePlayer(player); switch (result) { case DataAccess.UpsertResult.INSERTED: insertedplayers.Add(player.Name); break; case DataAccess.UpsertResult.UPDATED: updatedplayers.Add(player.Name); break; case DataAccess.UpsertResult.ERROR: failedplayers.Add(player.Name); break; default: break; } } da.Dispose(); da = null; explorer = null; if (sb != null && !string.IsNullOrEmpty(sb.ToString())) { await ReplyAsync(sb.ToString()); } // build the output EmbedBuilder embugc = BuildUGCOutput(level, guildname, insertedplayers, updatedplayers, failedplayers); await ReplyAsync("\n", embed : embugc); await ReplyAsync("FINISHED adding/updating level " + level + " players." + " (" + DateTime.Now.ToString() + ")\n"); // TODO: purge players not in guild anymore //await PurgePlayersCmd(guildname); }
public static void ClassInit(TestContext context) { explorer = new WowExplorer(Region.US, Locale.en_US, APIKey); guild = explorer.GetGuild("skullcrusher", "immortality", GuildOptions.GetEverything); }
public async Task PurgePlayersCmd([Remainder] string optionalguildname = null) { string guildname = optionalguildname ?? Globals.DEFAULTGUILDNAME; await ReplyAsync("Attempting to purge players in " + guildname + " (" + DateTime.Now.ToString() + ").\n"); List <string> playerstoremove = new List <string>(); #region pull guildmembers list from Blizz // pull guildmembers list from Blizz Hashtable guildmembers = new Hashtable(); WowExplorer explorer = new WowExplorer(Region.US, Locale.en_US, Globals.MASHERYAPIKEY); Guild theguild = null; try { theguild = explorer.GetGuild(Globals.DEFAULTREALM, guildname, GuildOptions.GetEverything); } catch (Exception ex) { Console.WriteLine(ex.Message); if (ex.HResult == -2146233079) // "The remote server returned an error: (503) Server Unavailable." { //await ReplyAsync("Blizzard API service is down.\n"); //await ReplyAsync(ex.Message + "\n"); } await ReplyAsync(ex.Message + "\n"); await ReplyAsync(guildname + " guild not found.\n"); return; } // Update the guild and guildmember(PLAYERS) tables UpdateGuildInfo(theguild); // loop through the guildmembers and add to HashTable using players name as key foreach (GuildMember guildmember in theguild.Members) { guildmembers.Add(guildmember.Character.Name, guildmember.Character.Name); } theguild = null; explorer = null; #endregion #region pull players list from cache // create players list from cache DataAccess da = new DataAccess(); List <string> players = da.GetPlayers(guildname); players.Sort(); #endregion #region store the playernames to purge // store the playernames to purge foreach (string playername in players) { // check if player exist in guildmember list if (guildmembers.ContainsKey(playername)) { continue; } // if it doesn't then add to removal list playerstoremove.Add(playername); } #endregion // remove the players from the cache who are in the removal list int playersdeletedfromguild = da.PurgePlayers(playerstoremove); da.Dispose(); da = null; #region build our output EmbedBuilder embpurges = Utility.GetBuilder(withname: "PurgePlayers", withtitle: "Purges a guilds players from the cache who are no longer are in the guild.", withdescription: "```\n" + "The following players are flagged for removal from " + guildname + "." + "```", withiconurl: Context.Guild.IconUrl); string tmp = ""; foreach (string flaggedplayer in playerstoremove) { tmp += flaggedplayer + " -- "; } // remove the trailing " -- " if it exist if (!string.IsNullOrEmpty(tmp)) { tmp = tmp.Substring(0, tmp.Length - 4); } embpurges.AddField(x => { x.IsInline = true; x.Name = "__**Flagged**__"; if (string.IsNullOrEmpty(tmp)) { x.Value = "No players to purge."; } else { x.Value = tmp; } }); embpurges.Build(); #endregion await ReplyAsync("", embed : embpurges); await ReplyAsync("\n" + playersdeletedfromguild + " players purged from " + guildname + " cache out of " + playerstoremove.Count.ToString() + " to be purged (" + DateTime.Now.ToString() + ")."); }
public void Get_Simple_Character_Briandek_From_Skullcrusher() { WowExplorer we = new WowExplorer(Region.EU, Locale.en_GB); Character character = we.GetCharacter("aegwynn", "nahrilol", CharacterOptions.GetEverything); Assert.AreEqual(character.Class, WowDotNetAPI.Models.CharacterClass.WARRIOR); Assert.AreEqual(57, character.Stats.Int); var briandek = explorer.GetCharacter("skullcrusher", "briandek"); Assert.IsNull(briandek.Guild); Assert.IsNull(briandek.Stats); Assert.IsNull(briandek.Talents); Assert.IsNull(briandek.Items); Assert.IsNull(briandek.Reputation); Assert.IsNull(briandek.Titles); Assert.IsNull(briandek.Professions); Assert.IsNull(briandek.Appearance); Assert.IsNull(briandek.Companions); Assert.IsNull(briandek.Mounts); //Assert.IsNull(briandek.Pets); Assert.IsNull(briandek.Achievements); Assert.IsNull(briandek.Progression); Assert.IsTrue(briandek.Name.Equals("briandek", StringComparison.InvariantCultureIgnoreCase)); Assert.AreEqual(85, briandek.Level); Assert.AreEqual(CharacterClass.WARRIOR, briandek.@Class); Assert.AreEqual(CharacterRace.HUMAN, briandek.Race); Assert.AreEqual(CharacterGender.MALE, briandek.Gender); }
private int UpdateCharacter(int charId, string name, string realm, string region) { WowExplorer explorer; if (region == "EU") { explorer = new WowExplorer(WowDotNetAPI.Region.EU, Locale.en_GB); } else { explorer = new WowExplorer(WowDotNetAPI.Region.US, Locale.en_US); } Character characterDetails = explorer.GetCharacter(realm, name, CharacterOptions.GetStats | CharacterOptions.GetItems | CharacterOptions.GetGuild | CharacterOptions.GetTalents | CharacterOptions.GetProfessions); IncrementAPIToday(1); if (characterDetails != null) { int changeEvents = HistoryCreateNewSet(characterDetails, charId); UpdateTrackedCharacterTime(charId); return changeEvents; } else { return -1; } }
private Item GetItemFromAPI(int id) { WowExplorer we = new WowExplorer(WowDotNetAPI.Region.EU, Locale.en_GB); IncrementAPIToday(1); return we.GetItem(id.ToString()); }
public void Get_Invalid_Data_From_CN_Region_Throws_Exception() { var CNexplorer = new WowExplorer(Region.CN, Locale.zh_CN); var characterClasses = CNexplorer.GetCharacterClasses(); var error = CNexplorer.ErrorInfo; Assert.IsNull(characterClasses); Assert.IsNotNull(error); }
public void GetHoodOfStilledWindsItemTest() { WowExplorer explorer = new WowExplorer(); Item i1 = explorer.GetItemDetails(89922); Assert.AreEqual("Hood of Stilled Winds", i1.name); }
public static void Main(string[] args) { WowExplorer explorer = new WowExplorer(Region.US); Guild immortalityGuild = explorer.GetGuild("Kilrogg", "PVP Guild", GuildOptions.GetEverything); Console.WriteLine("\n\nGUILD EXPLORER SAMPLE\n"); Console.WriteLine("{0} is a guild of level {1} and has {2} members.", immortalityGuild.Name, immortalityGuild.Level, immortalityGuild.Members.Count()); //Print out first top 20 ranked members of Immortality foreach (GuildMember member in immortalityGuild.Members.OrderBy(m => m.Rank).Take(20)) { Console.WriteLine(member.Character.Name + " has rank " + member.Rank); } Console.WriteLine("\n\nCHARACTER EXPLORER SAMPLE\n"); Character briandekCharacter = explorer.GetCharacter("kilrogg", "debz", CharacterOptions.GetStats | CharacterOptions.GetAchievements); Console.WriteLine("{0} is a retired warrior of level {1} who has {2} achievement points having completed {3} achievements", briandekCharacter.Name, briandekCharacter.Level, briandekCharacter.AchievementPoints, briandekCharacter.Achievements.AchievementsCompleted.Count()); foreach (KeyValuePair<string, object> stat in briandekCharacter.Stats) { Console.WriteLine(stat.Key + " : " + stat.Value); } //Get one realm IEnumerable<Realm> usRealms = explorer.GetRealms(Region.US); Realm skullcrusher = usRealms.GetRealm("skullcrusher"); //Get all pvp realms only IEnumerable<Realm> pvpRealmsOnly = usRealms.WithType(RealmType.PVP); Console.WriteLine("\n\nREALMS EXPLORER SAMPLE\n"); foreach (var realm in pvpRealmsOnly) { Console.WriteLine("{0} has {1} population", realm.Name, realm.Population); } Console.WriteLine("\n\nGUILD PERKS\n"); IEnumerable<GuildPerkInfo> perks = explorer.GetGuildPerks(); foreach (var perk in perks) { Console.WriteLine("{0} perk at guild level {1}", perk.Spell.Name, perk.GuildLevel); } Console.WriteLine("\n\nGUILD REWARDS\n"); IEnumerable<GuildRewardInfo> rewards = explorer.GetGuildRewards(); foreach (var reward in rewards) { Console.WriteLine("{0} reward at min guild level {1}", reward.Item.Name, reward.MinGuildLevel); } Console.WriteLine("\n\nCHARACTER RACES\n"); IEnumerable<CharacterRaceInfo> races = explorer.GetCharacterRaces(); foreach (var race in races.OrderBy(r => r.Id)) { Console.WriteLine("{0} race with numeric value {1}", race.Name, race.Id); } Console.WriteLine("\n\nCHARACTER CLASSES\n"); IEnumerable<CharacterClassInfo> classes = explorer.GetCharacterClasses(); foreach (var @class in classes.OrderBy(c => c.Id)) { Console.WriteLine("{0} class with numeric value {1}", @class.Name, @class.Id); } }