public HandleUpdateEstablishmentNameCommand(ICommandEntities entities
                                             , ITriggerEvent <EstablishmentChanged> eventTrigger
                                             )
 {
     _entities     = entities;
     _eventTrigger = eventTrigger;
 }
 public HandleUpdateEstablishmentCommand(ICommandEntities entities
                                         , IHandleCommands <UpdateEstablishmentHierarchy> updateHierarchy
                                         , ITriggerEvent <EstablishmentChanged> eventTrigger
                                         )
 {
     _entities        = entities;
     _updateHierarchy = updateHierarchy;
     _eventTrigger    = eventTrigger;
 }
Esempio n. 3
0
 public HandleCreateEstablishmentUrlCommand(ICommandEntities entities
                                            , IHandleCommands <UpdateEstablishmentUrl> updateHandler
                                            , ITriggerEvent <EstablishmentChanged> eventTrigger
                                            )
 {
     _entities      = entities;
     _updateHandler = updateHandler;
     _eventTrigger  = eventTrigger;
 }
Esempio n. 4
0
 public HandleUpdateEstablishmentUrlCommand(ICommandEntities entities
                                            , IUnitOfWork unitOfWork
                                            , ITriggerEvent <EstablishmentChanged> eventTrigger
                                            )
 {
     _entities     = entities;
     _unitOfWork   = unitOfWork;
     _eventTrigger = eventTrigger;
 }
        static void Main(string[] args)
        {
            Timer timer = new Timer(1000 * ExecutionMaxSeconds);

            timer.Elapsed += Timer_Elapsed;
            timer.Start();

            ConfigureLogger();
            Logger.Info("Starting with: " + string.Join(' ', args));
            AppDomain.CurrentDomain.UnhandledException += (object Sender, UnhandledExceptionEventArgs args) =>
            {
                Exception ex = args.ExceptionObject as Exception;
                Logger.Error(ex.ToString());
            };

            INotifier     Notifier = null;
            ITriggerEvent Trigger  = null;
            string        Config   = "config.json";

            Parser.Default.ParseArguments <Options>(args).WithParsed <Options>((Options opt) =>
            {
                Type NotifierType = Type.GetType(opt.OutputType);
                Notifier          = (INotifier)Activator.CreateInstance(NotifierType);

                Type TriggerType = Type.GetType(opt.TriggerType);

                Trigger = (ITriggerEvent)Activator.CreateInstance(TriggerType);

                Config = opt.ConfigFile;
            });

            //Load the config for this notifier
            string JsonText = "";

            if (Config != "" && File.Exists(Config))
            {
                JsonText = File.ReadAllText(Config);
            }
            Notifier.ParseJsonString(JsonText);
            Logger.Info("Parsed Config: \n{0}", JsonText);

            //Read everything from stdin
            string TriggerText = ReadTriggerTextFromStdIn();

            Logger.Info("Loaded Trigger: \n{0}", TriggerText);

            //Execute the trigger
            Trigger.Parse(TriggerText);
            Notifier.NotifyTrigger(Trigger);

            Logger.Info("Finished executing Trigger");
            NLog.LogManager.Flush();

            timer.Stop();

            Environment.Exit(0);
        }
Esempio n. 6
0
 public HandleCreateUserCommand(ICommandEntities entities
                                , IHandleCommands <CreatePerson> createPerson
                                , IHandleCommands <CreateEmailAddress> createEmailAddress
                                , ITriggerEvent <UserCreated> eventTrigger
                                )
 {
     _entities           = entities;
     _createPerson       = createPerson;
     _createEmailAddress = createEmailAddress;
     _eventTrigger       = eventTrigger;
 }
 public static void InvokeGenericTrigger(ITriggerEvent triggerEvent, Client client)
 {
     switch (triggerEvent.Action) {
         case TriggerEventAction.PlayStory: {
             StoryManager.PlayStory(client, triggerEvent.TriggerCommand);
             }
             break;
         case TriggerEventAction.RunScript: {
             Scripting.ScriptManager.InvokeSub("TriggerEventScript", client, triggerEvent);
             }
             break;
     }
 }
Esempio n. 8
0
        public static void InvokeGenericTrigger(ITriggerEvent triggerEvent, Client client)
        {
            switch (triggerEvent.Action)
            {
            case TriggerEventAction.PlayStory: {
                StoryManager.PlayStory(client, triggerEvent.TriggerCommand);
            }
            break;

            case TriggerEventAction.RunScript: {
                Scripting.ScriptManager.InvokeSub("TriggerEventScript", client, triggerEvent);
            }
            break;
            }
        }
 public HandleCreateEstablishmentCommand(ICommandEntities entities
                                         , IHandleCommands <CreateEstablishmentName> createName
                                         , IHandleCommands <CreateEstablishmentUrl> createUrl
                                         , IHandleCommands <UpdateEstablishmentLocation> updateLocation
                                         , IHandleCommands <UpdateEstablishmentHierarchy> updateHierarchy
                                         , ITriggerEvent <EstablishmentChanged> eventTrigger
                                         )
 {
     _entities        = entities;
     _createName      = createName;
     _createUrl       = createUrl;
     _updateLocation  = updateLocation;
     _updateHierarchy = updateHierarchy;
     _eventTrigger    = eventTrigger;
 }
Esempio n. 10
0
 public virtual void TriggerUnhandled(ITriggerEvent triggerEvent)
 {
 }
Esempio n. 11
0
 public static Task RaiseAsync(this ITriggerEvent triggersEvent, Object entry) => ((ITriggerEventInternal)triggersEvent).RaiseAsync(entry);
Esempio n. 12
0
 public static void Raise(this ITriggerEvent triggersEvent, Object entry) => ((ITriggerEventInternal)triggersEvent).Raise(entry);
        public void NotifyTrigger(ITriggerEvent Event)
        {
            foreach (DiscordNotifierConfig Webhook in Config)
            {
                EmbedBuilder EmbedBuilder = new EmbedBuilder()
                                            .WithTitle(Event.Title.ChopString(EmbedBuilder.MaxTitleLength))
                                            .WithDescription(Event.Body.ChopString(EmbedBuilder.MaxDescriptionLength))
                                            .WithCurrentTimestamp();


                string Footer = "";

                if (Webhook.ShowAuthor)
                {
                    Footer += "Author " + Event.Author;
                }

                if (Webhook.ShowServer)
                {
                    if (Footer != "")
                    {
                        Footer += " ";
                    }
                    Footer += "on Server: " + Event.Server;
                }
                if (Footer != "")
                {
                    EmbedBuilder.WithFooter(Footer);
                }

                if (Webhook.ShowDetails && Event is IWithDetails)
                {
                    IEnumerable <object> Details = (Event as IWithDetails).Details;

                    if (Details.FirstOrDefault() != null)
                    {
                        bool HasDirectories = true;

                        //Strip out directory changes if we are a FileChange and we don't want directory changes
                        if (Details.First() is IWithFileChange)
                        {
                            bool HasFiles = Details.Count(x => (x as IWithFileChange).FileType == FileType.File) > 0;
                            if (!Webhook.ShowAllFileChanges && HasFiles)
                            {
                                Details        = Details.Where(x => (x as IWithFileChange).FileType == FileType.File);
                                HasDirectories = false;
                            }
                        }

                        Logger.Info("Appending {0} Details. Num Details is {1}", Details.Count(), Webhook.NumDetails);
                        if (Details.Count() > Webhook.NumDetails)
                        {
                            string AndDirectories = "";
                            if (HasDirectories)
                            {
                                AndDirectories = " and Directories";
                            }


                            string ExtraDetails = string.Format("{1}{1}{1}Showing {2}/{0} Files{3}", Details.Count(), Environment.NewLine, Webhook.NumDetails, AndDirectories);

                            if (EmbedBuilder.Description.Length + ExtraDetails.Length > EmbedBuilder.MaxDescriptionLength)
                            {
                                EmbedBuilder.Description = EmbedBuilder.Description.ChopString(EmbedBuilder.MaxDescriptionLength - ExtraDetails.Length - 5);
                            }

                            EmbedBuilder.Description += ExtraDetails;
                            Details = Details.Take(Webhook.NumDetails);
                            Logger.Info("Too many details, limiting to {0} Details", Details.Count());
                        }

                        if (Details.First() is IWithFileChange)
                        {
                            int FileNameLength = EmbedFieldBuilder.MaxFieldValueLength / Details.Count();

                            EmbedFieldBuilder[] Fields = new EmbedFieldBuilder[]
                            {
                                new EmbedFieldBuilder().WithName("Operation")
                                .WithValue(string.Join(Environment.NewLine,
                                                       Details.Select(x => (x as IWithFileChange).FileOperation.ToString())).ChopString(EmbedFieldBuilder.MaxFieldValueLength))
                                .WithIsInline(true),
                                new EmbedFieldBuilder().WithName("File Name")
                                .WithValue(string.Join(Environment.NewLine,
                                                       Details.Select(x => (x as IWithFileChange).FileName.ToString().SubChopString(FileNameLength))).ChopString(EmbedFieldBuilder.MaxFieldValueLength))
                                .WithIsInline(true),
                                new EmbedFieldBuilder().WithName("Repository/Branch")
                                .WithValue(string.Join(Environment.NewLine,
                                                       Details.Select(x => (x as IWithFileChange).Repository + (x as IWithFileChange).Branch)).ChopString(EmbedFieldBuilder.MaxFieldValueLength))
                                .WithIsInline(true),
                            };

                            EmbedBuilder.WithFields(Fields);
                        }
                        else
                        {
                            EmbedBuilder.WithFields(new EmbedFieldBuilder().WithName("Details").WithValue(string.Join(Environment.NewLine, Details.Select(x => x.ToString())).ChopString(EmbedFieldBuilder.MaxFieldValueLength)));
                        }
                    }
                }

                //Last chance to catch an embed that is too big.
                if (EmbedBuilder.Length > EmbedBuilder.MaxEmbedLength)
                {
                    int diff = EmbedBuilder.Length - EmbedBuilder.MaxEmbedLength;

                    //If we can't chop down the description, drop the fields
                    if (EmbedBuilder.Length - EmbedBuilder.Description.Length > EmbedBuilder.MaxEmbedLength)
                    {
                        EmbedBuilder.Fields.Clear();

                        //Recompute the diff
                        diff = EmbedBuilder.Length - EmbedBuilder.MaxEmbedLength;
                    }

                    //If we can chop the description down, Chop it!
                    if (EmbedBuilder.Description.Length > diff)
                    {
                        EmbedBuilder.Description = EmbedBuilder.Description.ChopString(EmbedBuilder.Description.Length - diff);
                    }
                }


                DiscordWebhookClient c = new DiscordWebhookClient(Webhook.URL);
                Embed e = EmbedBuilder.Build();

                if (e.Length < EmbedBuilder.MaxEmbedLength)
                {
                    c.SendMessageAsync(embeds: new Embed[] { e }, username: Webhook.Name).Wait(1000 * 15);
                }
                else
                {
                    c.SendMessageAsync(text: "Attempted to send an embed for '" + Event.Title + "' but failed!", username: Webhook.Name).Wait(1000 * 15);
                }
            }
        }
Esempio n. 14
0
 public bool Remove(ITriggerEvent triggerEvent)
 {
     return(TriggerEvents.Remove(triggerEvent));
 }
Esempio n. 15
0
 public void Add(ITriggerEvent triggerEvent)
 {
     TriggerEvents.Add(triggerEvent);
 }