private bool Send(IssueDtoEventArgs args) { var token = args.Context.GlobalConfigurationWidgetStore.Get <string>(AppConstants.AppId); if (token == null || token.Value.IsEmpty()) { return(false); } var client = new RestClient("https://api.flowdock.com/v1/messages"); var request = new RestRequest("team_inbox/{token}", Method.POST); request.AddUrlSegment("token", token.Value); request.AddHeader("Accept", "application/json"); request.JsonSerializer = new JsonSerializer(); request.Method = Method.POST; request.RequestFormat = DataFormat.Json; request.AddHeader("Content-Type", "application/json"); var data = new { source = "Gemini", project = args.Issue.ProjectCode, from_name = args.User.Fullname, from_address = args.User.Email, subject = args.Issue.Title, content = args.Issue.Description, tags = args.Issue.Type, link = args.BuildIssueUrl(args.Issue) }; //reply_to request.AddBody(data); var response = client.Execute(request); var content = response.Content; return(true); }
//called when the timeout has expired which was waiting for pending changes. private static void PostChangesToSlack(IssueDtoEventArgs args, GlobalConfigurationWidgetData <SlackConfigData> data, string channel, DateTime createDate) { var issueManager = GeminiApp.GetManager <IssueManager>(args.User); var userManager = GeminiApp.GetManager <UserManager>(args.User); var userDto = userManager.Convert(args.User); var issue = issueManager.Get(args.Issue.Id); //get the changelog of all changes since the create date (minus a second to avoid missing the initial change) var changelog = issueManager.GetChangeLog(issue, userDto, userDto, createDate.AddSeconds(-1)); changelog.RemoveAll(c => c.Entity.AttributeChanged == ItemAttributeVisibility.AssociatedComments); // No need to show comments in updates as we already do that in the AfterComment event. if (changelog.Count == 0) { return; // No changes made! } var fields = changelog .Select(a => new { title = a.Field, value = StripHTML(a.FullChange), _short = a.Entity.AttributeChanged != ItemAttributeVisibility.Description && a.Entity.AttributeChanged != ItemAttributeVisibility.AssociatedComments }); QuickSlack.Send(data.Value.SlackAPIEndpoint, channel, string.Format("{0} updated issue <{1}|{2} - {3}>" , args.User.Fullname, args.BuildIssueUrl(args.Issue), args.Issue.IssueKey, args.Issue.Title), "details attached", "good", //todo colors here based on something fields.ToArray()); }