private IEnumerable <ResponseMessage> ApplicationDetailHandler(IncomingMessage incomingMessage, IValidHandle matchedHandle) { yield return(incomingMessage.IndicateTypingOnChannel()); if (NewRelicPlugin.ApplicationDetailTargetedCommandMisformed(incomingMessage.TargetedText)) { yield return(incomingMessage.ReplyToChannel($"NewRelic application detail command was not formatted correctly. Help: {this.applicationDetailHelpText}")); yield break; } var applicationName = this.newRelicPlugin.GetApplicationNameFromTargetedText(incomingMessage.TargetedText); var applicationAttachments = this.newRelicPlugin.GetApplicationDetailsFiltered(applicationName); if (!applicationAttachments.Any()) { yield return(incomingMessage.ReplyToChannel( $"No applications were found in NewRelic with the name `{applicationName}`")); } else { foreach (var responseMessage in ChuckAttachmentsAndReplyToChannel( incomingMessage, applicationAttachments, $"There were {applicationAttachments.Count} application(s) found for that name. They are:")) { yield return(responseMessage); } } }
public NewRelicMiddleware(IMiddleware next, NewRelicPlugin newRelicPlugin, ILog log) : base(next) { this.newRelicPlugin = newRelicPlugin; this.HandlerMappings = new[] { new HandlerMapping { ValidHandles = ExactMatchHandle.For($"{Configuration.CommandPrefix} applications"), EvaluatorFunc = this.ApplicationsHandler, Description = $"Gets applications summary from NewRelic. '{Configuration.CommandPrefix} applications'", VisibleInHelp = true }, new HandlerMapping { ValidHandles = ExactMatchHandle.For($"{Configuration.CommandPrefix} applications detail"), EvaluatorFunc = this.ApplicationsDetailHandler, Description = $"Gets applications detail from NewRelic. {Configuration.CommandPrefix} applications detail", VisibleInHelp = true }, new HandlerMapping { ValidHandles = ExactMatchHandle.For($"{Configuration.CommandPrefix} applications detail unhealthy"), EvaluatorFunc = this.UnhealthyApplicationsDetailHandler, Description = $"Gets applications detail from NewRelic which are unhealthy. `applications detail unhealthy`", VisibleInHelp = true }, new HandlerMapping { ValidHandles = StartsWithHandle.For($"{Configuration.CommandPrefix} application detail"), EvaluatorFunc = this.ApplicationDetailHandler, Description = $"Gets application detail for one or more applications from NewRelic. {this.applicationDetailHelpText}", VisibleInHelp = true }, new HandlerMapping { ValidHandles = StartsWithHandle.For($"{Configuration.CommandPrefix} application metrics"), EvaluatorFunc = this.ApplicationMetricsHandler, Description = $"Gets application metrics from NewRelic for the requested application id. {this.applicationMetricsHelpText}", VisibleInHelp = false }, }; }