private static bool IsRelevant(WebHookPayload payload, HashSet <GitHubIssueId> knownIds) { if (payload.action == null || !_relevantActions.Contains(payload.action)) { return(false); } if (payload.issue != null && payload.repository != null) { var idText = payload.repository.full_name + "#" + payload.issue.number; if (GitHubIssueId.TryParse(idText, out var issueId) && knownIds.Contains(issueId)) { return(true); } } if (payload.project_card != null) { if (GitHubIssueId.TryParse(payload.project_card.content_url, out var issueId) && knownIds.Contains(issueId)) { return(true); } } return(IsRelevant(payload.label) || IsRelevant(payload.issue)); }
public async Task PostMessage(string text) { var payload = new WebHookPayload { Text = text }; try { var request = new HttpRequestMessage(HttpMethod.Post, _url); var payloadText = JsonConvert.SerializeObject(payload); request.Content = new StringContent(payloadText); var response = await _httpClient.SendAsync(request); response.EnsureSuccessStatusCode(); } catch (Exception e) { _logger.Error(e, $"failed to send message {text} to slack using {_url}"); } }