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
--- 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>";
+ }
+ }
+}
--- 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}']",
--- 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}']",
--- 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>
--- 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,
--- 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}']",