public Task SendAsync(TenantMessage tenantMessage, CancellationToken cancellationToken) { ITenant tenant; if (!_tenants.TryGetValue(tenantMessage.Address.TenantKey, out tenant)) { throw new ArgumentException($"There's no tenant with key '{tenantMessage.Address.TenantKey}'"); } return tenant.SendMessage(tenantMessage, cancellationToken); }
public Task ReplyAsync(TenantMessage tenantMessage, string text, CancellationToken cancellationToken) { return SendAsync(tenantMessage.CreateReply(text), cancellationToken); }
public Task SendMessage(TenantMessage tenantMessage, CancellationToken cancellationToken) { return _slackService.SendMessageAsync( tenantMessage, cancellationToken); }
public async Task<ProcessMessageResult> ProcessAsync(TenantMessage tenantMessage, CancellationToken cancellationToken) { foreach (var pluginCommandDescription in _pluginCommandDescriptions) { foreach (var commandDescription in pluginCommandDescription.Value) { if (!commandDescription.IsMatch(tenantMessage.Text)) { continue; } var plugin = _plugins[pluginCommandDescription.Key]; _logger.Verbose($"Plugin '{pluginCommandDescription.Key}' handles: {tenantMessage.Text}"); await _restClient.PostAsync<object, TenantMessage>(new Uri(plugin.Plugin.BaseUri, commandDescription.Endpoint), tenantMessage, JsonFormat.PascalCase, cancellationToken) .ConfigureAwait(false); return ProcessMessageResult.Handled; } } _logger.Verbose($"Could not find a command match: {tenantMessage.Text}"); return ProcessMessageResult.Skipped; }
public Task SendAsync(TenantMessage tenantMessage, CancellationToken cancellationToken) { return PostAsync("api/tenant-messages", tenantMessage, cancellationToken); }
public Task ReplyToAsync(TenantMessage tenantMessage, string text, CancellationToken cancellationToken) { return SendAsync(tenantMessage.Address, text, cancellationToken); }
private async void HandleMessage(TenantMessage tenantMessage) { // Yes, its async void foreach (var messageProcessor in MessageProcessors()) { var processMessageResult = await messageProcessor.ProcessAsync(tenantMessage, CancellationToken.None).ConfigureAwait(false); if (processMessageResult == ProcessMessageResult.Handled) { break; } } }