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); } } }
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()); }
private bool CanHandle(CommandPostedEvent @event) => @event.CommandName.Equals(_commandName, StringComparison.InvariantCultureIgnoreCase) && !string.IsNullOrEmpty(@event.CommandArguments);