Пример #1
0
        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);
            }
        }
Пример #2
0
        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]);
                }
            }
        }
Пример #3
0
        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);
        }
Пример #4
0
        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);
        }
Пример #5
0
        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);
            }
        }
Пример #6
0
        // ---- 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);
        }
Пример #7
0
        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);
            }
        }