From 69311516657fb8b623a1722ac19d7f4043c84c63 Mon Sep 17 00:00:00 2001 From: Tudor Stanciu Date: Sat, 21 Jan 2023 04:25:44 +0200 Subject: [PATCH] Configuration structure changes --- .../DependencyInjectionExtensions.cs | 2 +- .../DependencyInjectionExtensions.cs | 2 +- src/Correo/Extensions/DataTypeExtensions.cs | 10 ++++++ src/Correo/Extensions/SmtpExtensions.cs | 31 +++++++++++++------ src/Correo/appsettings.json | 3 +- 5 files changed, 36 insertions(+), 12 deletions(-) create mode 100644 src/Correo/Extensions/DataTypeExtensions.cs diff --git a/src/Correo.MailKit/DependencyInjectionExtensions.cs b/src/Correo.MailKit/DependencyInjectionExtensions.cs index 8e02510..05bb39b 100644 --- a/src/Correo.MailKit/DependencyInjectionExtensions.cs +++ b/src/Correo.MailKit/DependencyInjectionExtensions.cs @@ -7,7 +7,7 @@ namespace Correo.MailKit { public static class DependencyInjectionExtensions { - public static void AddMailKitSmtpClient(this IServiceCollection services, IConfigurationSection configuration) + public static void AddMailKitSmtpClient(this IServiceCollection services, IConfiguration configuration) { services.Configure(configuration); services.AddTransient(); diff --git a/src/Correo.NetSmtpClient/DependencyInjectionExtensions.cs b/src/Correo.NetSmtpClient/DependencyInjectionExtensions.cs index bf6480d..40f51f1 100644 --- a/src/Correo.NetSmtpClient/DependencyInjectionExtensions.cs +++ b/src/Correo.NetSmtpClient/DependencyInjectionExtensions.cs @@ -7,7 +7,7 @@ namespace Correo.NetSmtpClient { public static class DependencyInjectionExtensions { - public static void AddNetSmtpClient(this IServiceCollection services, IConfigurationSection configuration) + public static void AddNetSmtpClient(this IServiceCollection services, IConfiguration configuration) { services.Configure(configuration); services.AddTransient(); diff --git a/src/Correo/Extensions/DataTypeExtensions.cs b/src/Correo/Extensions/DataTypeExtensions.cs new file mode 100644 index 0000000..d6d9b39 --- /dev/null +++ b/src/Correo/Extensions/DataTypeExtensions.cs @@ -0,0 +1,10 @@ +using System; + +namespace Correo.Extensions +{ + internal static class DataTypeExtensions + { + public static bool EqualsIgnoreCase(this string value1, string value2) + => value1.Equals(value2, StringComparison.InvariantCultureIgnoreCase); + } +} diff --git a/src/Correo/Extensions/SmtpExtensions.cs b/src/Correo/Extensions/SmtpExtensions.cs index d1eae84..0b394d0 100644 --- a/src/Correo/Extensions/SmtpExtensions.cs +++ b/src/Correo/Extensions/SmtpExtensions.cs @@ -12,20 +12,16 @@ namespace Correo.Extensions { public static void AddSmtpService(this IServiceCollection services, IConfiguration configuration) { - var mediator = configuration.GetValue("SmtpMediator", ".NET"); - if (mediator.Equals(".NET", StringComparison.InvariantCultureIgnoreCase)) + var mediator = configuration.GetValue("SmtpMediator", "SmtpClient"); + if (mediator.EqualsIgnoreCase("SmtpClient")) { - services.AddNetSmtpClient(configuration.GetSection("SmtpClient")); + services.AddSmtpClient(configuration.GetSection("SmtpClient")); } - else if (mediator.Equals("MailKit", StringComparison.InvariantCultureIgnoreCase)) - { - services.AddMailKitSmtpClient(configuration.GetSection("SmtpClient")); - } - else if (mediator.Equals("SendGrid", StringComparison.InvariantCultureIgnoreCase)) + else if (mediator.EqualsIgnoreCase("SendGrid")) { services.AddSendGridService(configuration.GetSection("SendGrid")); } - else if (mediator.Equals("Mailgun", StringComparison.InvariantCultureIgnoreCase)) + else if (mediator.EqualsIgnoreCase("Mailgun")) { services.AddMailgunService(configuration.GetSection("Mailgun")); } @@ -34,5 +30,22 @@ namespace Correo.Extensions throw new NotImplementedException($"SmtpMediator '{mediator}' is not implemented."); } } + + private static void AddSmtpClient(this IServiceCollection services, IConfiguration configuration) + { + var package = configuration.GetValue("Package", ".NET"); + if (package.EqualsIgnoreCase(".NET")) + { + services.AddNetSmtpClient(configuration); + } + else if (package.EqualsIgnoreCase("MailKit")) + { + services.AddMailKitSmtpClient(configuration); + } + else + { + throw new NotImplementedException($"SmtpClient:Package '{package}' is not implemented."); + } + } } } diff --git a/src/Correo/appsettings.json b/src/Correo/appsettings.json index 9955318..9e08ba4 100644 --- a/src/Correo/appsettings.json +++ b/src/Correo/appsettings.json @@ -29,8 +29,9 @@ "Address": "noreply@homelab.com", "Name": "HomeLab" }, - "SmtpMediator": ".NET", //.NET, MailKit, SendGrid, Mailgun + "SmtpMediator": "SmtpClient", //SmtpClient, SendGrid, Mailgun "SmtpClient": { + "Package": "MailKit", //.NET, MailKit "Server": "smtp.gmail.com", "Port": "587", "UseAuthentication": true,