private void HandleChaskisVersionCommand(ChaskisEventHandlerLineActionArgs args) { if (args.EventArgs.ContainsKey("QUERY") && args.EventArgs["QUERY"] == "VERSION") { Dictionary <string, string> responseArgs = new Dictionary <string, string>(); if (args.EventArgs.ContainsKey("PLUGIN")) { string pluginName = args.EventArgs["PLUGIN"]; if (this.plugins.ContainsKey(pluginName)) { responseArgs["VERSION"] = this.plugins[pluginName].Plugin.Version; } else { responseArgs["ERROR"] = "Plugin Name Not Found"; } } else { responseArgs["ERROR"] = "Need Plugin Key"; } ChaskisEvent responseEvent = this.chaskisEventCreator.CreateTargetedEvent( args.PluginName, responseArgs, args.PassThroughArgs ); this.chaskisEventSender.SendChaskisEvent(responseEvent); } }
private void CompareEvents(ChaskisEvent expected, ChaskisEvent actual) { Assert.AreEqual(expected.SourceType, actual.SourceType); Assert.AreEqual(expected.SourcePlugin, actual.SourcePlugin); Assert.AreEqual(expected.DestinationPlugin, actual.DestinationPlugin); if (expected.Args == null) { Assert.IsNull(actual.Args); } else { Assert.AreEqual(expected.Args.Count, actual.Args.Count); foreach (KeyValuePair <string, string> arg in expected.Args) { Assert.AreEqual(arg.Value, actual.Args[arg.Key]); } } if (expected.PassThroughArgs == null) { // FromXml will not have a null PassThroughArgs Dictionary. Assert.AreEqual(0, actual.PassThroughArgs.Count); } else { Assert.AreEqual(expected.PassThroughArgs.Count, actual.PassThroughArgs.Count); foreach (KeyValuePair <string, string> arg in expected.PassThroughArgs) { Assert.AreEqual(arg.Value, actual.PassThroughArgs[arg.Key]); } } }
public void CreateBCastEventNoArgs() { ChaskisEvent e = this.factory.EventCreators[pluginName].CreateBcastEvent( new Dictionary <string, string>() ); string xmlString = e.ToString(); Assert.IsFalse(xmlString.Contains(Environment.NewLine)); ChaskisEvent recreatedEvent = ChaskisEvent.FromXml(xmlString); this.CompareEvents(e, recreatedEvent); }
public void CreateBCastEvent() { ChaskisEvent e = this.factory.EventCreators[pluginName].CreateBcastEvent( this.expectedArgs, this.expectedPassthroughArgs ); string xmlString = e.ToString(); Assert.IsFalse(xmlString.Contains(Environment.NewLine)); ChaskisEvent recreatedEvent = ChaskisEvent.FromXml(xmlString); this.CompareEvents(e, recreatedEvent); }
private void OnJoinChannel(JoinHandlerArgs args) { if (args.User.Equals(this.ircConfig.Nick, StringComparison.InvariantCultureIgnoreCase)) { string channel = args.Channel; ChaskisEvent e = this.chaskisEventCreator.CreateTargetedEvent( "chaskis", new Dictionary <string, string>() { ["QUERY"] = "VERSION", ["PLUGIN"] = "chaskis" }, new Dictionary <string, string>() { ["CHANNEL"] = channel } ); this.eventSender.SendChaskisEvent(e); } }
// ---- Handlers ---- /// <summary> /// Ran when someone joins the channel. /// </summary> /// <param name="writer">The means to write to an IRC channel.</param> /// <param name="response">The command from the server.</param> private void JoinMessage(JoinHandlerArgs args) { args.Writer.SendMessage( args.User + " has joined " + args.Channel, args.Channel ); ChaskisEvent e = this.eventCreator.CreateTargetedEvent( "karmabot", new Dictionary <string, string>() { ["ACTION"] = "QUERY", ["NAME"] = args.User }, new Dictionary <string, string>() { ["CHANNEL"] = args.Channel, ["NAME"] = args.User } ); this.eventSender.SendChaskisEvent(e); }
private async void HandleChaskisQueryCommand(ChaskisEventHandlerLineActionArgs args) { Dictionary <string, string> responseArgs = new Dictionary <string, string>(); if (args.EventArgs.ContainsKey("ACTION")) { switch (args.EventArgs["ACTION"]) { case "QUERY": if (args.EventArgs.ContainsKey("NAME") == false) { responseArgs["ERROR"] = "'NAME' argument missing"; } else { string userName = args.EventArgs["NAME"]; int karma = await this.dataBase.QueryKarma(userName); responseArgs["KARMA"] = karma.ToString(); } break; default: responseArgs["ERROR"] = "NOT IMPLEMENTED YET"; return; } ChaskisEvent e = this.eventCreator.CreateTargetedEvent( args.PluginName, responseArgs, args.PassThroughArgs ); this.eventSender.SendChaskisEvent(e); } }