예제 #1
0
        public IActionResult PusherForIt(PusherNotifications data)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            // Get the notification creation timestamp.
            var createdAtUnix = data.CreatedAt;
            var createdAt     = DateTimeOffset.FromUnixTimeMilliseconds(createdAtUnix);

            _logger.LogInformation(
                0,
                "{ControllerName} received {Count} notifications created at '{CreatedAt}'.",
                nameof(PusherController),
                data.Events.Count,
                createdAt.ToString("o"));

            // Get details of the individual notifications.
            var index = 0;

            foreach (var @event in data.Events)
            {
                if (@event.TryGetValue(PusherConstants.EventNamePropertyName, out var eventName))
                {
                    if (@event.TryGetValue(PusherConstants.ChannelNamePropertyName, out var channelName))
                    {
                        _logger.LogInformation(
                            1,
                            "Event {EventNumber} has {Count} properties, including name '{EventName}' and channel " +
                            "'{ChannelName}'.",
                            index,
                            @event.Count,
                            eventName,
                            channelName);
                    }
                    else
                    {
                        _logger.LogInformation(
                            2,
                            "Event {EventNumber} has {Count} properties, including name '{EventName}'.",
                            index,
                            @event.Count,
                            eventName);
                    }
                }
                else
                {
                    _logger.LogError(
                        3,
                        "Event {EventNumber} has {Count} properties but does not contain a {PropertyName} property.",
                        index,
                        @event.Count,
                        PusherConstants.EventNamePropertyName);
                }

                index++;
            }

            return(Ok());
        }
        public IActionResult PusherForIt(string[] eventNames, PusherNotifications data)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            // Get the notification creation timestamp.
            var createdAtUnix = data.CreatedAt;
            var createdAt     = DateTimeOffset.FromUnixTimeMilliseconds(createdAtUnix);

            _logger.LogInformation(
                0,
                $"{nameof(PusherController)} / 'It' received {{Count}} notifications and {{EventCount}} events " +
                "created at '{CreatedAt}'.",
                data.Events.Count,
                eventNames.Length,
                createdAt.ToString("o"));
            for (var i = 0; i < eventNames.Length; i++)
            {
                _logger.LogInformation(
                    1,
                    "Event {Index} was '{EventName}'.",
                    i,
                    eventNames[i]);
            }

            // Get details of the individual notifications.
            var index = 0;

            foreach (var @event in data.Events)
            {
                if (@event.TryGetValue(PusherConstants.EventNamePropertyName, out var eventName))
                {
                    if (@event.TryGetValue(PusherConstants.ChannelNamePropertyName, out var channelName))
                    {
                        _logger.LogInformation(
                            2,
                            "Event {EventNumber} has {Count} properties, including name '{EventName}' and channel " +
                            "'{ChannelName}'.",
                            index,
                            @event.Count,
                            eventName,
                            channelName);
                    }
                    else
                    {
                        _logger.LogInformation(
                            3,
                            "Event {EventNumber} has {Count} properties, including name '{EventName}'.",
                            index,
                            @event.Count,
                            eventName);
                    }
                }
                else
                {
                    _logger.LogWarning(
                        4,
                        "Event {EventNumber} has {Count} properties but does not contain a " +
                        $"{PusherConstants.EventNamePropertyName} property.",
                        index,
                        @event.Count);
                }

                index++;
            }

            return(Ok());
        }