Example #1
0
        public Main()
        {
            InitializeComponent();

            Logger            = new Logger();
            CommandDispatcher = new CommandDispatcher(Logger);
            MessageHandler    = new MessageHandler(Logger);

            Logger.MessageLogged += delegate(string message)
            {
                if (this.Log.TextLength > 0)
                {
                    this.Log.AppendText("\n");
                }
                this.Log.AppendText(message);
                this.Log.ScrollToCaret();
            };

            Application.ThreadException +=
                delegate(object sender, ThreadExceptionEventArgs e)
            {
                this.Logger.Log("Unhandled Exception: " + e.Exception);
            };

            NotifyIcon.Icon = Icon;

            // Command and Message Handlers
            foreach (var assembly in AppDomain.CurrentDomain.GetAssemblies())
            {
                foreach (var type in assembly.GetTypes())
                {
                    if (!type.IsClass)
                    {
                        continue;
                    }
                    if (type.IsAbstract)
                    {
                        continue;
                    }

                    // Command Handlers
                    if (typeof(ICommandHandler).IsAssignableFrom(type))
                    {
                        var constructorInfo = type.GetConstructor(new Type[0] {
                        });
                        if (constructorInfo == null)
                        {
                            continue;
                        }

                        var commandHandler = constructorInfo.Invoke(null);
                        CommandDispatcher.AddCommandHandler((ICommandHandler)commandHandler);
                    }

                    // Message Handlers
                    if (typeof(IMessageSpanHandler).IsAssignableFrom(type))
                    {
                        var constructorInfo = type.GetConstructor(new Type[0] {
                        });
                        if (constructorInfo == null)
                        {
                            continue;
                        }

                        var messageSpanHandler = constructorInfo.Invoke(null);
                        MessageHandler.AddSpanHandler((IMessageSpanHandler)messageSpanHandler);
                    }
                }
            }

            // Skype
            Skype = new Skype();

            if (!Skype.Client.IsRunning)
            {
                Skype.Client.Start();
            }

            // this.MessageHandler.HandleMessage(x => Debug.Print(x), "http://redd.it/1dko1n");
            // this.MessageHandler.HandleMessage(x => Debug.Print(x), "https://www.youtube.com/watch?v=psuRGfAaju4");
            // this.MessageHandler.HandleMessage(x => Debug.Print(x), "http://youtu.be/1uV63nApaYA");
            // this.MessageHandler.HandleMessage(x => Debug.Print(x), "http://pastebin.com/8jNskG2r");
            // this.MessageHandler.HandleMessage(x => Debug.Print(x), "http://pastebin.com/8jNskG2rasdsad");
            // this.MessageHandler.HandleMessage(x => Debug.Print(x), "http://goo.gl/jmzTY");
            // this.MessageHandler.HandleMessage(x => Debug.Print(x), "http://vimeo.com/61930364#");
            // this.MessageHandler.HandleMessage(x => Debug.Print(x), "https://twitter.com/garrynewman/status/360042767461789698");
            // this.MessageHandler.HandleMessage(x => Debug.Print(x), "https://twitter.com/thronecast/status/548132192988442624/photo/1");
            // this.MessageHandler.HandleMessage(x => Debug.Print(x), "3000€");
            // this.MessageHandler.HandleMessage(x => Debug.Print(x), "£20");
            // this.CommandDispatcher.HandleMessage(x => Debug.Print(x), "!w asdfasdf");

            ConnectToSkype();
        }