private MessageResult AddLinksForMentionedBugs(Message message) { var matches = s_BugRegex.Matches(message.MessageText).Cast <Match>(); var ids = matches.Select(x => x.Groups[0].ToString()).Distinct(); var bugs = ids.Select(id => m_JiraApi.FromId(id).Result).Where(x => x != null); var messageTexts = bugs.Select(FormatBug); return(new MessageResult(messageTexts.Select(x => Response.ToMessage(message, x, s_JiraLogo)).ToList())); }
public Task <JiraBug> FromId(string id) { var cached = m_Cache.Get(id); if (cached == null) { m_Cache.Set(id, m_Underlying.FromId(id)); } return(m_Cache.Get(id)); }
public MessageResult ProcessMessage(Message message) { string toSuggest; if (m_CommandParser.TryGetCommand(message, "suggest labels for", out toSuggest)) { var bug = m_JiraApi.FromId(toSuggest).Result; if (bug == null) { return(Response.ToMessage(message, "Couldn't find bug " + toSuggest)); } return(Response.ToMessage(message, String.Join(" ", SuggestionsFor(bug).Distinct()))); } return(MessageResult.Empty); }