using System; using System.Xml; using TechBot.Library; namespace TechBot.Commands.Common { [Command("hresult", Help = "!hresult ")] public class HResultCommand : XmlLookupCommand { public HResultCommand() { } public override string XmlFile { get { return Settings.Default.HResultXml; } } public override void ExecuteCommand() { if (Text == null) { Say("Please provide a valid HRESULT value."); } else { NumberParser np = new NumberParser(); long hresult = np.Parse(Text); if (np.Error) { Say("{0} is not a valid HRESULT value.", Text); return; } string description = GetHresultDescription(hresult); if (description != null) { Say("{0} is {1}.", Text, description); } else { Say("I don't know about HRESULT {0}.", Text); } } } public string GetHresultDescription(long hresult) { XmlElement root = base.m_XmlDocument.DocumentElement; XmlNode node = root.SelectSingleNode(String.Format("Hresult[@value='{0}']", hresult.ToString("X8"))); if (node != null) { XmlAttribute text = node.Attributes["text"]; if (text == null) throw new Exception("Node has no text attribute."); return text.Value; } else return null; } } }