コード例 #1
0
 public async Task Handle(BlockActionRequest request, Responder respond)
 {
     if (request.Action.ActionId == _actionId)
     {
         await _handler.Handle(request, respond).ConfigureAwait(false);
     }
 }
コード例 #2
0
 public async Task Handle(TAction action, BlockActionRequest request)
 {
     if (request.Action.ActionId == _actionId)
     {
         await _handler.Handle(action, request).ConfigureAwait(false);
     }
 }
コード例 #3
0
 public async Task Handle(ExternalSelectAction select, BlockActionRequest request)
 {
     await _slack.Chat.PostMessage(new Message
     {
         Text    = $"Selected color: {select.SelectedOption.Text.Text} ({select.SelectedOption.Value})",
         Channel = request.Channel.Id
     }).ConfigureAwait(false);
 }
コード例 #4
0
        public async Task Handle(ButtonAction button, BlockActionRequest request)
        {
            var counter = SectionBeforeAddButtons(button, request);

            if (counter != null)
            {
                var counterText = _counterPattern.Match(counter.Text.Text ?? string.Empty);
                if (counterText.Success)
                {
                    var count     = int.Parse(counterText.Groups[1].Value);
                    var increment = int.Parse(((ButtonAction)request.Action).Value);
                    counter.Text = $"Counter: {count + increment}";
                    await _slack.Chat.Update(new MessageUpdate
                    {
                        Ts          = request.Message.Ts,
                        Text        = request.Message.Text,
                        Blocks      = request.Message.Blocks,
                        Attachments = request.Message.Attachments,
                        ChannelId   = request.Channel.Id
                    }).ConfigureAwait(false);
                }
            }
        }
コード例 #5
0
        private async Task <HttpResponse> HandleBlockActions(HttpContext context, BlockActionRequest blockActionRequest)
        {
            await _slackBlockActions.Handle(blockActionRequest).ConfigureAwait(false);

            return(await context.Respond(HttpStatusCode.OK).ConfigureAwait(false));
        }
コード例 #6
0
 public Task Handle(BlockActionRequest request, Responder respond) => ResolvedHandle(h => h.Handle(request, respond));
コード例 #7
0
 private Task <SlackResult> HandleBlockActions(BlockActionRequest blockActionRequest) =>
 RespondAsync(r => _blockActionHandler.Handle(blockActionRequest, r));
コード例 #8
0
        public void RegisterBlockActionHandler()
        {
            // Arrange
            var keyedHandler        = Substitute.For <IBlockActionHandler <ButtonAction> >();
            var typedHandler        = Substitute.For <IBlockActionHandler <ButtonAction> >();
            var genericHandler      = Substitute.For <IBlockActionHandler>();
            var keyedAsyncHandler   = Substitute.For <IAsyncBlockActionHandler <ButtonAction> >();
            var typedAsyncHandler   = Substitute.For <IAsyncBlockActionHandler <ButtonAction> >();
            var genericAsyncHandler = Substitute.For <IAsyncBlockActionHandler>();
            var overflowRequest     = new BlockActionRequest {
                Actions = { new OverflowAction {
                                ActionId = "other"
                            } }
            };
            var otherButtonAction = new ButtonAction {
                ActionId = "other"
            };
            var otherButtonRequest = new BlockActionRequest {
                Actions = { otherButtonAction }
            };
            var buttonAction = new ButtonAction {
                ActionId = "key"
            };
            var buttonRequest = new BlockActionRequest {
                Actions = { buttonAction }
            };
            var responder = Substitute.For <Responder>();

            var sut = Configure(c => c
                                .RegisterBlockActionHandler("key", keyedHandler)
                                .RegisterBlockActionHandler(typedHandler)
                                .RegisterBlockActionHandler(genericHandler)
                                .RegisterAsyncBlockActionHandler("key", keyedAsyncHandler)
                                .RegisterAsyncBlockActionHandler(typedAsyncHandler)
                                .RegisterAsyncBlockActionHandler(genericAsyncHandler));

            // Act
            HandleBlockActions(sut, responder, new[] { overflowRequest, otherButtonRequest, buttonRequest });

            // Assert
            keyedHandler.DidNotReceive().Handle(Arg.Any <ButtonAction>(), overflowRequest);
            keyedHandler.DidNotReceive().Handle(otherButtonAction, otherButtonRequest);
            keyedHandler.Received().Handle(buttonAction, buttonRequest);

            typedHandler.DidNotReceive().Handle(Arg.Any <ButtonAction>(), overflowRequest);
            typedHandler.Received().Handle(otherButtonAction, otherButtonRequest);
            typedHandler.Received().Handle(buttonAction, buttonRequest);

            genericHandler.Received().Handle(overflowRequest);
            genericHandler.Received().Handle(otherButtonRequest);
            genericHandler.Received().Handle(buttonRequest);

            keyedAsyncHandler.DidNotReceive().Handle(Arg.Any <ButtonAction>(), overflowRequest, responder);
            keyedAsyncHandler.DidNotReceive().Handle(otherButtonAction, otherButtonRequest, responder);
            keyedAsyncHandler.Received().Handle(buttonAction, buttonRequest, responder);

            typedAsyncHandler.DidNotReceive().Handle(Arg.Any <ButtonAction>(), overflowRequest, responder);
            typedAsyncHandler.Received().Handle(otherButtonAction, otherButtonRequest, responder);
            typedAsyncHandler.Received().Handle(buttonAction, buttonRequest, responder);

            genericAsyncHandler.Received().Handle(overflowRequest, responder);
            genericAsyncHandler.Received().Handle(otherButtonRequest, responder);
            genericAsyncHandler.Received().Handle(buttonRequest, responder);
        }
コード例 #9
0
 public Task Handle(BlockActionRequest request) => _slackBlockActions.Handle(request);
コード例 #10
0
        private async Task <SlackResponse> HandleBlockActions(BlockActionRequest blockActionRequest)
        {
            await _slackBlockActions.Handle(blockActionRequest).ConfigureAwait(false);

            return(new EmptyResponse(HttpStatusCode.OK));
        }
コード例 #11
0
 public async Task Handle(ButtonAction action, BlockActionRequest request)
 {
     await OpenDialog(action.ActionId, request.TriggerId).ConfigureAwait(false);
 }
コード例 #12
0
ファイル: LoggingTests.cs プロジェクト: soxtoby/SlackNet
 public async Task Handle(ButtonAction action, BlockActionRequest request, Responder respond)
 {
 }
コード例 #13
0
ファイル: LoggingTests.cs プロジェクト: soxtoby/SlackNet
 public async Task Handle(ButtonAction action, BlockActionRequest request)
 {
 }
コード例 #14
0
ファイル: LoggingTests.cs プロジェクト: soxtoby/SlackNet
 public async Task Handle(BlockActionRequest request)
 {
 }
コード例 #15
0
 private static SectionBlock SectionBeforeAddButtons(ButtonAction button, BlockActionRequest request)
 {
     return(request.Message.Blocks
            .TakeWhile(b => b.BlockId != button.BlockId)
            .LastOrDefault() as SectionBlock);
 }