public async Task <IActionResult> Receive([FromBody] ApplicationPayload payload)
        {
            // Find handler
            if (!RouteData.Values.TryGetValue(RouteKeyConstants.HandlerType, out object t) ||
                !(t is Type handlerType) ||
                !(_serviceProvider.GetService(handlerType) is ISpaceWebHookHandler handler))
            {
                return(BadRequest($"No registered {nameof(ISpaceWebHookHandler)} could be found."));
            }

            // Handle payload
            switch (payload)
            {
            // List commands?
            case ListCommandsPayload listCommandsPayload:
                var commands = await handler.HandleListCommandsAsync(listCommandsPayload);

                PropagatePropertyAccessPathHelper.SetAccessPathForValue(string.Empty, false, commands);

                // ReSharper disable once ConstantNullCoalescingCondition
                commands.CommandsItems ??= new List <CommandDetail>();

                return(new JsonResult(commands, JsonSerializerOptions));

            // List menu extensions?
            case ListMenuExtensionsPayload listMenuExtensionsPayload:
                var menuExtensions = await handler.HandleListMenuExtensionsAsync(listMenuExtensionsPayload);

                PropagatePropertyAccessPathHelper.SetAccessPathForValue(string.Empty, false, menuExtensions);

                // ReSharper disable once ConstantNullCoalescingCondition
                menuExtensions.Extensions ??= new List <MenuExtensionDetail>();

                return(new JsonResult(menuExtensions, JsonSerializerOptions));

            // Message?
            case MessagePayload messagePayload:
                await handler.HandleMessageAsync(messagePayload);

                return(Ok());

            // Action?
            case MessageActionPayload actionPayload:
                var actionResult = await handler.HandleMessageActionAsync(actionPayload);

                return(!string.IsNullOrEmpty(actionResult.Message)
                        ? Content(actionResult.Message, "text/plain") as IActionResult
                        : Ok());

            // Menu action?
            case MenuActionPayload menuActionPayload:
                var menuActionResult = await handler.HandleMenuActionAsync(menuActionPayload);

                return(!string.IsNullOrEmpty(menuActionResult.Message)
                        ? Content(menuActionResult.Message, "text/plain") as IActionResult
                        : Ok());
            }

            return(BadRequest("Payload is not supported."));
        }
Beispiel #2
0
 public ApplicationDidLaunch(ApplicationPayload payload)
 {
     Payload = payload;
 }
 public ApplicationDidLaunchEvent(string device, ApplicationPayload payload) : base(EventType.ApplicationDidLaunch, device, payload)
 {
 }
Beispiel #4
0
 public ApplicationDidTerminateEvent(string device, ApplicationPayload payload) : base(EventType.ApplicationDidTerminate, device, payload)
 {
 }
Beispiel #5
0
 protected ApplicationEvent(EventType eventType, string device, ApplicationPayload payload) : base(eventType, device)
 {
     Payload = payload;
 }
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="payload"></param>
 public ApplicationDidTerminate(ApplicationPayload payload)
 {
     Payload = payload;
 }