public static Character LoadCharacter(this Armory armory, string realmName, string characterName, CharacterDetail loadDetail) { XmlNode characterDetails = LoadDetailNode(armory, CharacterDetail.Basic, realmName, characterName); if (characterDetails != null) { XmlNode characterNode = characterDetails.SelectSingleNode("character"); // <character battleGroup="Vindication" charUrl="r=Sporeggar&n=Zoing" class="Rogue" classId="4" faction="Horde" factionId="1" gender="Female" genderId="1" guildName="The Dominion" guildUrl="r=Sporeggar&n=The+Dominion&p=1" lastModified="31 August 2008" level="70" name="Zoing" prefix="" race="Blood Elf" raceId="10" realm="Sporeggar" suffix=""> G guild = new G( GuildDetail.Basic, armory.Region, (Faction)Enum.Parse(typeof(Faction), characterNode.Attributes["factionId"].Value), characterNode.Attributes["guildName"].Value, characterNode.Attributes["realm"].Value, characterNode.Attributes["battleGroup"].Value, characterNode.Attributes["guildUrl"].Value); Character character = new Character( armory, CharacterDetail.Basic, armory.Region, (Faction)Enum.Parse(typeof(Faction), characterNode.Attributes["factionId"].Value), characterNode.Attributes["name"].Value, characterNode.Attributes["realm"].Value, characterNode.Attributes["battleGroup"].Value, (Gender)Enum.Parse(typeof(Gender), characterNode.Attributes["genderId"].Value), (Race)Enum.Parse(typeof(Race), characterNode.Attributes["raceId"].Value), (Class)Enum.Parse(typeof(Class), characterNode.Attributes["classId"].Value), Convert.ToInt32(characterNode.Attributes["level"].Value), characterNode.Attributes["charUrl"].Value, guild); if (loadDetail.ContainsDetail(CharacterDetail.CharacterSheet)) { character.LoadDetail(CharacterDetail.CharacterSheet); } if (loadDetail.ContainsDetail(CharacterDetail.Reputation)) { character.LoadDetail(CharacterDetail.Reputation); } if (loadDetail.ContainsDetail(CharacterDetail.Skills)) { character.LoadDetail(CharacterDetail.Skills); } if (loadDetail.ContainsDetail(CharacterDetail.Talents)) { character.LoadDetail(CharacterDetail.Talents); } return character; } else { return null; } }
public static List<Character> SearchCharacter(this Armory armory, string characterName) { // TODO: Take multiple pages into account! // http://eu.wowarmory.com/search.xml?searchQuery=Zoing&searchType=characters string searchString = string.Format("search.xml?searchQuery={0}&searchType=characters", HttpUtility.UrlEncode(characterName)); XmlDocument searchResults = armory.Request(searchString); XmlNodeList characterNodes = searchResults.SelectNodes("/page/armorySearch/searchResults/characters/character"); List<Character> characters = new List<Character>(); foreach (XmlNode characterNode in characterNodes) { // <character battleGroup="Vindication" battleGroupId="61" class="Rogue" classId="4" faction="Horde" factionId="1" gender="Female" genderId="1" guild="The Dominion" guildId="222341" level="70" name="Zoing" race="Blood Elf" raceId="10" realm="Sporeggar" url="r=Sporeggar&n=Zoing"/> G guild = new G( GuildDetail.Basic, armory.Region, (Faction)Enum.Parse(typeof(Faction), characterNode.Attributes["factionId"].Value), characterNode.Attributes["guild"].Value, characterNode.Attributes["realm"].Value, characterNode.Attributes["battleGroup"].Value, string.Format("r={0}&n={1}&p=1", characterNode.Attributes["realm"].Value, characterNode.Attributes["guild"].Value)); Character character = new Character( armory, CharacterDetail.Basic, armory.Region, (Faction)Enum.Parse(typeof(Faction), characterNode.Attributes["factionId"].Value), characterNode.Attributes["name"].Value, characterNode.Attributes["realm"].Value, characterNode.Attributes["battleGroup"].Value, (Gender)Enum.Parse(typeof(Gender), characterNode.Attributes["genderId"].Value), (Race)Enum.Parse(typeof(Race), characterNode.Attributes["raceId"].Value), (Class)Enum.Parse(typeof(Class), characterNode.Attributes["classId"].Value), Convert.ToInt32(characterNode.Attributes["level"].Value), characterNode.Attributes["url"].Value, guild); characters.Add(character); } return characters; }