From ce3b1dc1e88db23cfb99e135f7d57a08194560c7 Mon Sep 17 00:00:00 2001 From: vnugent Date: Thu, 22 Jun 2023 21:13:35 -0400 Subject: Extensions async updates --- .../src/TEmailConfig.cs | 37 ++++++++++++---------- 1 file changed, 20 insertions(+), 17 deletions(-) (limited to 'lib/Emails.Transactional.Extensions/src/TEmailConfig.cs') diff --git a/lib/Emails.Transactional.Extensions/src/TEmailConfig.cs b/lib/Emails.Transactional.Extensions/src/TEmailConfig.cs index 7905982..7642283 100644 --- a/lib/Emails.Transactional.Extensions/src/TEmailConfig.cs +++ b/lib/Emails.Transactional.Extensions/src/TEmailConfig.cs @@ -39,7 +39,7 @@ namespace Emails.Transactional.Client.Extensions /// Provides transactional emails based on templates and variable complilation. Should be loaded as a singleton for a plugin /// [ConfigurationName(EMAIL_CONFIG_KEY)] - public class TEmailConfig : TransactionalEmailConfig, IAsyncConfigurable, IDisposable + public class TEmailConfig : TransactionalEmailConfig, IDisposable { const string DEFAULT_USER_AGENT = "VN Transactional Email System"; @@ -58,17 +58,19 @@ namespace Emails.Transactional.Client.Extensions /// /// public RestClientPool RestClientPool { get; } + /// /// A global from email address name /// public string EmailFromName { get; } + /// /// A global from email address /// public string EmailFromAddress { get; } - private SecretResult? _clientId; - private SecretResult? _clientSecret; + private readonly IAsyncLazy _clientId; + private readonly IAsyncLazy _clientSecret; /// @@ -116,22 +118,19 @@ namespace Emails.Transactional.Client.Extensions //Init templates and service url WithTemplates(templates) .WithUrl(mailConfig.ServiceUri); - } - private Credential OAuthCredentialGet() - { - _ = _clientId ?? throw new InvalidOperationException("Oauth2 client id was not loaded"); - _ = _clientSecret ?? throw new InvalidOperationException("Oauth2 client secret was not loaded"); + //Load oauth secrets + _clientId = plugin.GetSecretAsync("email_client_id") + .ToLazy(static s => s.Result.ToString()); - //Create new credential - return Credential.Create(_clientId.Result, _clientSecret.Result); + _clientSecret = plugin.GetSecretAsync("email_client_secret") + .ToLazy(static s => s.Result.ToString()); } - async Task IAsyncConfigurable.ConfigureServiceAsync(PluginBase plugin) + private Credential OAuthCredentialGet() { - //Load oauth secrets - _clientId = await plugin.TryGetSecretAsync("email_client_id"); - _clientSecret = await plugin.TryGetSecretAsync("email_client_secret"); + //Create new credential + return Credential.Create(_clientId.Value, _clientSecret.Value); } /// @@ -141,12 +140,10 @@ namespace Emails.Transactional.Client.Extensions { if (disposing) { - _clientId?.Dispose(); - _clientSecret?.Dispose(); - _authenticator.Dispose(); RestClientPool.Dispose(); } + disposedValue = true; } } @@ -162,16 +159,22 @@ namespace Emails.Transactional.Client.Extensions { [JsonPropertyName("from_name")] public string? EmailFromName { get; set; } + [JsonPropertyName("from_address")] public string? EmailFromAddress { get; set; } + [JsonPropertyName("email_url")] public string? ServiceUrl { get; set; } + [JsonPropertyName("auth_url")] public string? AuthUrl { get; set; } + [JsonPropertyName("user_agent")] public string UserAgent { get; set; } = DEFAULT_USER_AGENT; + [JsonPropertyName("timeout_ms")] public int TimeoutMs { get; set; } = DEFAULT_CLIENT_TIMEOUT_MS; + [JsonPropertyName("max_clients")] public int MaxClients { get; set; } = DEFAULT_MAX_CLIENTS; -- cgit