public Task <EventMatchResult> EventMatchesAsync(SlackEventBody slackEventBody) { return(Task.FromResult(new EventMatchResult { Success = false })); }
public Task IdentifySlackEventAsync( SlackEventBody slackEventBody, CancellationToken cancellationToken) { return(slackEventBody switch { { Event : { Type : "message", Subtype : "channel_join" } }
private async Task HandleEventInBackground( SlackEventBody slackEventBody, SemaphoreSlim semaphoreSlim, CancellationToken cancellationToken) { await _slackEventIdentifier.IdentifySlackEventAsync(slackEventBody, cancellationToken); semaphoreSlim.Release(); }
public async Task ExecuteActionAsync(SlackEventBody slackEventBody, EventMatchItem[] eventMatchItems, CancellationToken cancellationToken) { await _slackClient.ReplyToMessageAsync( slackEventBody.TeamId, slackEventBody.Event.Channel, slackEventBody.Event.ThreadParentMessageIdentifier ?? slackEventBody.Event.MessageIdentifier, _value, cancellationToken); }
public async Task MatchAndProcessAsync(SlackEventBody slackEventBody, CancellationToken cancellationToken) { var eventMatchResult = await _eventMatcher.EventMatchesAsync(slackEventBody); if (eventMatchResult.Success) { await _actionExecutor.ExecuteActionAsync( slackEventBody, eventMatchResult.MatchItems, cancellationToken); } }
public async Task HandleSlackEventAsync( SlackEventType slackEventType, SlackEventBody slackEventBody, CancellationToken cancellationToken) { var eventsProcessors = _eventProcessorProvider.GetEventProcessors( slackEventBody.TeamId, slackEventBody.Event.Channel, slackEventType); await Task.WhenAll( eventsProcessors.Select( e => e.MatchAndProcessAsync(slackEventBody, cancellationToken))); }
public async Task <IActionResult> Receive( [FromBody, Required] SlackEventBody slackEventBody, CancellationToken cancellationToken) { if (!string.IsNullOrWhiteSpace(slackEventBody.Challenge)) { return(Ok(slackEventBody.Challenge)); } await _slackEventProducer.ReceiveSlackEvent(slackEventBody, cancellationToken); return(Ok()); }
public async Task MessageOnChannel_IsRoutedCorrectly(string inputText, string target, bool expected) { var slackBody = new SlackEventBody { Event = new SlackEvent { Text = inputText } }; var eventMatcher = new TextContainsEventMatcher(target); var result = await eventMatcher.EventMatchesAsync(slackBody); Assert.Equal(expected, result.Success); }
public Task <EventMatchResult> EventMatchesAsync(SlackEventBody slackEventBody) { var result = new EventMatchResult { Success = _target != null && (slackEventBody?.Event?.Text?.Contains(_target, StringComparison.Ordinal) ?? false) }; if (result.Success) { result.MatchItems = new[] { new EventMatchItem(EventMatchItemType.Text, slackEventBody?.Event?.Text) }; } return(Task.FromResult(result)); }
public Task ReceiveSlackEvent( SlackEventBody slackEvent, CancellationToken cancellationToken) { return(_eventStorage.StoreEventAsync(slackEvent, cancellationToken)); }
public Task ExecuteActionAsync(SlackEventBody slackEventBody, EventMatchItem[] eventMatchItems, CancellationToken cancellationToken) { return(Task.CompletedTask); }
public async Task StoreEventAsync( SlackEventBody slackEvent, CancellationToken cancellationToken) { _slackConcurrentEvents[slackEvent.EventId] = slackEvent; }