public override async Task NotifyAsync(IVssRequestContext requestContext, INotification notification, BotElement bot, EventRuleElement matchingRule) { var token = bot.GetSetting("token"); if (string.IsNullOrEmpty(token)) throw new ArgumentException("Missing token!"); var tasks = new List<Task>(); var slackClient = new SlackClient(); foreach (string tfsUserName in notification.TargetUserNames) { var userId = bot.GetMappedUser(tfsUserName); if (userId != null) { Message slackMessage = ToSlackMessage((dynamic)notification, bot, null, true); if (slackMessage != null) { slackMessage.AsUser = true; var t = Task.Run(async () => { var response = await slackClient.SendApiMessageAsync(slackMessage, token, userId); response.EnsureSuccessStatusCode(); var content = await response.Content.ReadAsStringAsync(); }); tasks.Add(t); } } } await Task.WhenAll(tasks); }
public override string ToString(BotElement bot, Func<string, string> transform) { var formatter = new { DisplayName = transform(DisplayName), RepoUri, ProjectName = transform(ProjectName), RepoName = transform(RepoName), Pushed = IsForcePush ? bot.Text.ForcePushed : bot.Text.Pushed, UserName = transform(UserName), MappedUser = bot.GetMappedUser(UniqueName) }; return bot.Text.PushFormat.FormatWith(formatter); }
public override IList<string> ToMessage(BotElement bot, TextElement text, Func<string, string> transform) { var formatter = new { TeamProjectCollection = transform(TeamProjectCollection), DisplayName = transform(DisplayName), ProjectName = transform(ProjectName), RepoUri, RepoName = transform(RepoName), PrId, PrUrl, PrTitle = transform(PrTitle), UserName = transform(UserName), SourceBranchName = transform(SourceBranch.Name), TargetBranchName = transform(TargetBranch.Name), CreatorUserName = transform(CreatorUserName), MappedCreatorUser = bot.GetMappedUser(CreatorUniqueName), MappedUser = bot.GetMappedUser(UniqueName) }; return new[] { text.PullRequestCommentFormat.FormatWith(formatter), Comment }; }
public override IList<string> ToMessage(BotElement bot, Func<string, string> transform) { var lines = new List<string>(); var formatter = new { TeamProjectCollection = transform(TeamProjectCollection), DisplayName = transform(DisplayName), ProjectName = transform(ProjectName), AreaPath = transform(AreaPath), WiUrl, WiType = transform(WiType), WiId, WiTitle = transform(WiTitle), UserName = transform(UserName), Action = bot.Text.CommentedOn, AssignedToUserName = transform(AssignedToUserName), MappedAssignedToUser = bot.GetMappedUser(AssignedToUniqueName), MappedUser = bot.GetMappedUser(UniqueName) }; lines.Add(bot.Text.WorkItemchangedFormat.FormatWith(formatter)); lines.Add(TextHelper.Truncate(Comment, Settings.DiscussionCommentMaxLength)); return lines; }
public override IList<string> ToMessage(BotElement bot, TextElement text, Func<string, string> transform) { var formatter = new { TeamProjectCollection = transform(TeamProjectCollection), ProjectName = transform(ProjectName), ReleaseDefinition = transform(ReleaseDefinition), ReleaseStatus = transform(ReleaseStatus.ToString()), ReleaseUrl, ReleaseName = transform(ReleaseName), ReleaseReason = transform(ReleaseReason.ToString()), CreatedBy = transform(CreatedByUniqueName), CreatedByDisplayName = transform(CreatedByDisplayName), DisplayName = transform(CreatedByDisplayName), CreatedOn, UserName = transform(UserName), MappedUser = bot.GetMappedUser(CreatedByUniqueName) }; return new[] { text.ReleaseCreatedFormat.FormatWith(formatter) }; }
public override IList<string> ToMessage(BotElement bot, Func<string, string> transform) { var formatter = new { TeamProjectCollection = transform(TeamProjectCollection), DisplayName = transform(DisplayName), ChangesetUrl, ChangesetId, Comment = transform(Comment), UserName = transform(UserName), ProjectLinks = FormatProjectLinks(bot, transform), MappedUser = bot.GetMappedUser(UniqueName) }; return new[] { bot.Text.CheckinFormat.FormatWith(formatter) }; }
public override IList<string> ToMessage(BotElement bot, Func<string, string> transform) { var formatter = new { TeamProjectCollection = transform(TeamProjectCollection), DisplayName = transform(DisplayName), UserName = transform(UserName), ProjectName = transform(ProjectName), RepoUri, RepoName = transform(RepoName), MappedUser = bot.GetMappedUser(UniqueName) }; return new[] { bot.Text.RepositoryCreatedFormat.FormatWith(formatter) }; }
public override IList<string> ToMessage(BotElement bot, Func<string, string> transform) { var formatter = new { TeamProjectCollection = transform(TeamProjectCollection), ProjectName = transform(ProjectName), BuildDefinition = transform(BuildDefinition), BuildStatus = transform(BuildStatus.ToString()), BuildUrl, BuildNumber = transform(BuildNumber), BuildReason = transform(BuildReason.ToString()), RequestedFor = transform(RequestedForUniqueName), RequestedForDisplayName = transform(RequestedForDisplayName), DisplayName = transform(RequestedForDisplayName), StartTime, FinishTime, UserName = transform(UserName), BuildDuration = FormatBuildDuration(bot), DropLocation, MappedUser = bot.GetMappedUser(RequestedForUniqueName) }; return new[] { GetBuildFormat(bot).FormatWith(formatter), transform(BuildStatus.ToString()) }; }
public override IList<string> ToMessage(BotElement bot, TextElement text, Func<string, string> transform) { var lines = new List<string>(); var formatter = new { TeamProjectCollection = transform(TeamProjectCollection), DisplayName = transform(DisplayName), ProjectName = transform(ProjectName), WiUrl, WiType = transform(WiType), WiId, WiTitle = transform(WiTitle), IsStateChanged, IsAssignmentChanged, AssignedTo = transform(AssignedTo), State = transform(State), UserName = transform(UserName), Action = FormatAction(text), AssignedToUserName = transform(AssignedToUserName), MappedAssignedToUser = bot.GetMappedUser(AssignedToUniqueName), MappedUser = bot.GetMappedUser(UniqueName) }; lines.Add(text.WorkItemchangedFormat.FormatWith(formatter)); var searchType = IsNew ? SearchFieldsType.Core : SearchFieldsType.Changed; var displayFieldsKey = IsNew ? "wiCreatedDisplayFields" : "wiChangedDisplayFields"; var pattern = IsNew ? "{name}: {newValue}" : "{name}: " + text.WorkItemFieldTransitionFormat; foreach (var fieldId in bot.GetCsvSetting(displayFieldsKey, Defaults.WorkItemFields)) { var field = GetUnifiedField(fieldId, searchType); if (field != null) lines.Add(pattern.FormatWith(field)); } return lines; }
public override IList<string> ToMessage(BotElement bot, TextElement text, Func<string, string> transform) { var formatter = new { TeamProjectCollection = transform(TeamProjectCollection), DisplayName = transform(DisplayName), ProjectName = transform(ProjectName), RepoUri, RepoName = transform(RepoName), CommitId = transform(CommitId.ToHexString(Settings.HashLength)), CommitUri, Comment = transform(Comment), UserName = transform(UserName), PusherUserName = transform(PusherUserName), MappedPusherUser = bot.GetMappedUser(PusherUniqueName), MappedUser = bot.GetMappedUser(UniqueName) }; return new[] { text.CommitCommentFormat.FormatWith(formatter), Comment }; }
public override IList<string> ToMessage(BotElement bot, TextElement text, Func<string, string> transform) { var formatter = new { TeamProjectCollection = transform(TeamProjectCollection), DisplayName = transform(DisplayName), ChangesetUrl, ChangesetId, Comment = transform(Comment), UserName = transform(UserName), ProjectName = transform(ProjectName), ProjectUrl, CreatorUserName = transform(CreatorUserName), MappedCreatorUser = bot.GetMappedUser(CreatorUniqueName), MappedUser = bot.GetMappedUser(UniqueName) }; return new[] { text.ChangesetCommentFormat.FormatWith(formatter), Comment }; }