コード例 #1
0
        public async Task Handle(NewCommandPostMessage message)
        {
            var logger = _logger.ForContext("Message", message, destructureObjects: true);

            logger.Information("Message {0} with type {1} received", message.Id, typeof(NewCommandPostMessage));

            var bots = await _dbContext.Bots.ToListAsync();

            foreach (var bot in bots)
            {
                try
                {
                    var payload = new CommandPostedEvent
                    {
                        CommandName      = message.CommandName,
                        CommandArguments = message.CommandArguments
                    };

                    var result = await _webhookClient.Post(bot.Url, bot.Secret, payload);

                    if (!result.IsSuccessStatusCode)
                    {
                        logger.Information("Message {0} with type {1} failed posting for {2}", message.Id, typeof(NewCommandPostMessage), bot.Name);
                    }
                }
                catch (Exception ex)
                {
                    logger.Warning(ex, "Message {0} with type {1} failed posting for {2}", message.Id, typeof(NewCommandPostMessage), bot.Name);
                }
            }
        }
コード例 #2
0
        public async Task <ActionResult> ProcessEvent(CommandPostedEvent @event)
        {
            if (!CanHandle(@event))
            {
                return(Ok());
            }

            try
            {
                var result = await _stooq.GetStockValue(@event.CommandArguments);

                await _jobsity.NewPost(CreateSuccessMessage(@event.CommandArguments, result));
            }
            catch (Exception _)
            {
                await _jobsity.NewPost(CreateFailureMessage(@event.CommandArguments));
            }

            return(Ok());
        }
コード例 #3
0
 private bool CanHandle(CommandPostedEvent @event) =>
 @event.CommandName.Equals(_commandName, StringComparison.InvariantCultureIgnoreCase) &&
 !string.IsNullOrEmpty(@event.CommandArguments);