Add !error command which checks NtStatus, Winerror and hResult. Added: trunk/irc/TechBot/TechBot.Library/ErrorCommand.cs Modified: trunk/irc/TechBot/TechBot.Library/HresultCommand.cs Modified: trunk/irc/TechBot/TechBot.Library/NtStatusCommand.cs Modified: trunk/irc/TechBot/TechBot.Library/TechBot.Library.prjx Modified: trunk/irc/TechBot/TechBot.Library/TechBotService.cs Modified: trunk/irc/TechBot/TechBot.Library/WinerrorCommand.cs _____
Added: trunk/irc/TechBot/TechBot.Library/ErrorCommand.cs --- trunk/irc/TechBot/TechBot.Library/ErrorCommand.cs 2006-01-05 16:35:08 UTC (rev 20584) +++ trunk/irc/TechBot/TechBot.Library/ErrorCommand.cs 2006-01-05 17:52:39 UTC (rev 20585) @@ -0,0 +1,91 @@
+using System; +using System.Xml; + +namespace TechBot.Library +{ + public class ErrorCommand : BaseCommand, ICommand + { + private IServiceOutput serviceOutput; + private NtStatusCommand ntStatus; + private WinerrorCommand winerror; + private HresultCommand hresult; + + public ErrorCommand(IServiceOutput serviceOutput, string ntstatusXml, + string winerrorXml, string hresultXml) + { + this.serviceOutput = serviceOutput; + this.ntStatus = new NtStatusCommand(serviceOutput, + ntstatusXml); + this.winerror = new WinerrorCommand(serviceOutput, + winerrorXml); + this.hresult = new HresultCommand(serviceOutput, + hresultXml); + } + + public bool CanHandle(string commandName) + { + return CanHandle(commandName, + new string[] { "error" }); + } + + public void Handle(MessageContext context, + string commandName, + string parameters) + { + string errorText = parameters; + if (errorText.Equals(String.Empty)) + { + serviceOutput.WriteLine(context, + "Please provide an Error Code."); + return; + } + + NumberParser np = new NumberParser(); + long error = np.Parse(errorText); + if (np.Error) + { + serviceOutput.WriteLine(context, + String.Format("{0} is not a valid Error Code.", + errorText)); + return; + } + + string description = null; + if (winerror.GetWinerrorDescription(error) != null) + { + description = winerror.GetWinerrorDescription(error); + serviceOutput.WriteLine(context, + String.Format("{0} is {1}.", + error, + description)); + } + if (ntStatus.GetNtstatusDescription(error) != null) + { + description = ntStatus.GetNtstatusDescription(error); + serviceOutput.WriteLine(context, + String.Format("{0} is {1}.", + errorText, + description)); + } + if (hresult.GetHresultDescription(error) != null) + { + description = hresult.GetHresultDescription(error); + serviceOutput.WriteLine(context, + String.Format("{0} is {1}.", + errorText, + description)); + } + if(description == null) + { + serviceOutput.WriteLine(context, + String.Format("I don't know about Error Code {0}.", + errorText)); + } + } + + public string Help() + { + return "!error <value>"; + } + } +} _____
Modified: trunk/irc/TechBot/TechBot.Library/HresultCommand.cs --- trunk/irc/TechBot/TechBot.Library/HresultCommand.cs 2006-01-05 16:35:08 UTC (rev 20584) +++ trunk/irc/TechBot/TechBot.Library/HresultCommand.cs 2006-01-05 17:52:39 UTC (rev 20585) @@ -67,7 +67,7 @@
return "!hresult <value>"; } - private string GetHresultDescription(long hresult) + public string GetHresultDescription(long hresult) { XmlElement root = hresultXmlDocument.DocumentElement; XmlNode node = root.SelectSingleNode(String.Format("Hresult[@value='{0}']", _____
Modified: trunk/irc/TechBot/TechBot.Library/NtStatusCommand.cs --- trunk/irc/TechBot/TechBot.Library/NtStatusCommand.cs 2006-01-05 16:35:08 UTC (rev 20584) +++ trunk/irc/TechBot/TechBot.Library/NtStatusCommand.cs 2006-01-05 17:52:39 UTC (rev 20585) @@ -67,7 +67,7 @@
return "!ntstatus <value>"; } - private string GetNtstatusDescription(long ntstatus) + public string GetNtstatusDescription(long ntstatus) { XmlElement root = ntstatusXmlDocument.DocumentElement; XmlNode node = root.SelectSingleNode(String.Format("Ntstatus[@value='{0}']", _____
Modified: trunk/irc/TechBot/TechBot.Library/TechBot.Library.prjx --- trunk/irc/TechBot/TechBot.Library/TechBot.Library.prjx 2006-01-05 16:35:08 UTC (rev 20584) +++ trunk/irc/TechBot/TechBot.Library/TechBot.Library.prjx 2006-01-05 17:52:39 UTC (rev 20585) @@ -12,6 +12,7 @@
<File name=".\NumberParser.cs" subtype="Code" buildaction="Compile" dependson="" data="" /> <File name=".\HresultCommand.cs" subtype="Code" buildaction="Compile" dependson="" data="" /> <File name=".\WinerrorCommand.cs" subtype="Code" buildaction="Compile" dependson="" data="" /> + <File name=".\ErrorCommand.cs" subtype="Code" buildaction="Compile" dependson="" data="" /> <File name=".\SvnCommand.cs" subtype="Code" buildaction="Compile" dependson="" data="" /> <File name=".\BugCommand.cs" subtype="Code" buildaction="Compile" dependson="" data="" /> <File name=".\WmCommand.cs" subtype="Code" buildaction="Compile" dependson="" data="" /> @@ -39,4 +40,4 @@ <Output directory="..\bin\Release" assembly="TechBot.Library" executeScript="" executeBeforeBuild="" executeAfterBuild="" executeBeforeBuildArguments="" executeAfterBuildArguments="" /> </Configuration> </Configurations> -</Project> \ No newline at end of file +</Project> _____
Modified: trunk/irc/TechBot/TechBot.Library/TechBotService.cs --- trunk/irc/TechBot/TechBot.Library/TechBotService.cs 2006-01-05 16:35:08 UTC (rev 20584) +++ trunk/irc/TechBot/TechBot.Library/TechBotService.cs 2006-01-05 17:52:39 UTC (rev 20585) @@ -54,6 +54,10 @@
winerrorXml)); commands.Add(new HresultCommand(serviceOutput, hresultXml)); + commands.Add(new ErrorCommand(serviceOutput, + ntstatusXml, + winerrorXml, + hresultXml)); commands.Add(new WmCommand(serviceOutput, wmXml)); commands.Add(new SvnCommand(serviceOutput, _____
Modified: trunk/irc/TechBot/TechBot.Library/WinerrorCommand.cs --- trunk/irc/TechBot/TechBot.Library/WinerrorCommand.cs 2006-01-05 16:35:08 UTC (rev 20584) +++ trunk/irc/TechBot/TechBot.Library/WinerrorCommand.cs 2006-01-05 17:52:39 UTC (rev 20585) @@ -67,7 +67,7 @@
return "!winerror <value>"; } - private string GetWinerrorDescription(long winerror) + public string GetWinerrorDescription(long winerror) { XmlElement root = winerrorXmlDocument.DocumentElement; XmlNode node = root.SelectSingleNode(String.Format("Winerror[@value='{0}']",