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; }
public HandleCreateEstablishmentUrlCommand(ICommandEntities entities , IHandleCommands <UpdateEstablishmentUrl> updateHandler , ITriggerEvent <EstablishmentChanged> eventTrigger ) { _entities = entities; _updateHandler = updateHandler; _eventTrigger = eventTrigger; }
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); }
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; } }
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; }
public virtual void TriggerUnhandled(ITriggerEvent triggerEvent) { }
public static Task RaiseAsync(this ITriggerEvent triggersEvent, Object entry) => ((ITriggerEventInternal)triggersEvent).RaiseAsync(entry);
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); } } }
public bool Remove(ITriggerEvent triggerEvent) { return(TriggerEvents.Remove(triggerEvent)); }
public void Add(ITriggerEvent triggerEvent) { TriggerEvents.Add(triggerEvent); }