using DigitalData.Auth.Abstractions; using Microsoft.AspNetCore.SignalR.Client; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; namespace DigitalData.Auth.Client; public class AuthClient : IAuthClient { private readonly HubConnection _connection; private readonly ILogger? _logger; private readonly ClientParams _params; public AuthClient(IOptions paramsOptions, HubConnectionBuilder connectionBuilder, ILogger? logger = null) { _connection = connectionBuilder .WithUrl(paramsOptions.Value.Url) .Build(); _connection.On(nameof(ReceiveMessage), ReceiveMessage); _logger = logger; _params = paramsOptions.Value; } public async Task StartAsync() => await _connection.StartAsync(); public Task ReceiveMessage(string user, string message) => _params.Events.OnMessageReceived(user, message, _logger); }