feat: Refaktorierung von ClientEvents zur Verwendung eines Delegaten für öffentliche Schlüsselaktualisierungen
- Ersetzt `Action<string, string, string, ILogger?>` durch den `ClientEvent`-Delegaten für eine bessere Struktur. - `ClientEvent`-Delegaten mit `AuthClient`-Referenz eingeführt, um öffentliche Schlüssel direkt zu aktualisieren.
This commit is contained in:
parent
63c37551be
commit
a2c74cbdd9
@ -57,7 +57,7 @@ public class AuthClient : IAuthClient, IAsyncDisposable
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public Task ReceivePublicKeyAsync(string issuer, string audience, string message) => Task.Run(() => _params.Events.OnMessageReceived(issuer, audience, message, _logger));
|
public Task ReceivePublicKeyAsync(string issuer, string audience, string message) => Task.Run(() => _params.TriggerOnMessageReceived(this, issuer, audience, message, _logger));
|
||||||
|
|
||||||
public Task SendPublicKeyAsync(string issuer, string audience, string message) => _connection.InvokeAsync(nameof(SendPublicKeyAsync), issuer, audience, message);
|
public Task SendPublicKeyAsync(string issuer, string audience, string message) => _connection.InvokeAsync(nameof(SendPublicKeyAsync), issuer, audience, message);
|
||||||
|
|
||||||
|
|||||||
@ -1,10 +1,18 @@
|
|||||||
using Microsoft.Extensions.Logging;
|
using DigitalData.Core.Abstractions.Security;
|
||||||
|
using Microsoft.Extensions.Logging;
|
||||||
|
|
||||||
namespace DigitalData.Auth.Client
|
namespace DigitalData.Auth.Client;
|
||||||
|
|
||||||
|
public delegate void ClientEvent(AuthClient client, string issuer, string audience, string content, ILogger? logger = null);
|
||||||
|
|
||||||
|
public static class ClientEvents
|
||||||
{
|
{
|
||||||
public class ClientEvents
|
public static readonly ClientEvent UpdatePublicKeys = (client, issuer, audience, content, logger) =>
|
||||||
{
|
{
|
||||||
public Action<string, string, string, ILogger?> OnMessageReceived { get; set; } = (issuer, audience, key, logger)
|
if(client.PublicKeys.TryGet(issuer, audience, out var publicKey))
|
||||||
=> logger?.LogInformation("Public key value has been updated. Issuer: {Issuer}, Audience: {Audience}, New Key: {Key}", issuer, audience, key);
|
publicKey.Content = content;
|
||||||
}
|
else
|
||||||
|
logger?.LogWarning(
|
||||||
|
"Failed to update public key: No matching key found. Issuer: {Issuer}, Audience: {Audience}. Ensure the key exists before attempting an update.", issuer, audience);
|
||||||
|
};
|
||||||
}
|
}
|
||||||
@ -1,5 +1,6 @@
|
|||||||
using DigitalData.Auth.Client;
|
using DigitalData.Auth.Client;
|
||||||
using Microsoft.AspNetCore.SignalR.Client;
|
using Microsoft.AspNetCore.SignalR.Client;
|
||||||
|
using Microsoft.Extensions.Logging;
|
||||||
|
|
||||||
namespace DigitalData.Auth.Client;
|
namespace DigitalData.Auth.Client;
|
||||||
|
|
||||||
@ -24,7 +25,10 @@ public class ClientParams
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public TimeSpan? RetryDelay { get; set; }
|
public TimeSpan? RetryDelay { get; set; }
|
||||||
|
|
||||||
public readonly ClientEvents Events = new();
|
public ClientEvent OnMessageReceived = delegate { };
|
||||||
|
|
||||||
|
internal void TriggerOnMessageReceived(AuthClient client, string issuer, string audience, string key, ILogger? logger = null)
|
||||||
|
=> OnMessageReceived(client, issuer, audience, key, logger);
|
||||||
|
|
||||||
public ClientParams()
|
public ClientParams()
|
||||||
{
|
{
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user