Initial Commit ...
This commit is contained in:
@@ -0,0 +1,142 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using xCommons.Extensions;
|
||||
using xExceptions.Constants;
|
||||
using xMessageService.Constants;
|
||||
using xMessageService.Interfaces;
|
||||
using xMessageService.Models;
|
||||
using xMessageService.Providers;
|
||||
|
||||
namespace xMessageService.DI {
|
||||
public static partial class XDIHelperExtension {
|
||||
/// <summary>
|
||||
/// Retrieve XMessage Configuration from App Settings
|
||||
/// </summary>
|
||||
/// <param name="config"></param>
|
||||
/// <returns></returns>
|
||||
public static XMessageConfiguration GetXMessageConfiguration (this IConfiguration config) {
|
||||
//
|
||||
var xMessageConfigSection = config.GetSection (ConfigurationNodeNames.MESSAGE_NODE_NAME);
|
||||
var xMessageConfiguration = xMessageConfigSection.Get<XMessageConfiguration> ();
|
||||
|
||||
//
|
||||
var defaultMailConfiguration = new Dictionary<string, XMailConfiguration> {
|
||||
["EMPTY"] =
|
||||
new XMailConfiguration {
|
||||
Title = xMessageServiceConstants.DEFAULT_EMPTY_PROVIDER,
|
||||
Host = "",
|
||||
Port = 25,
|
||||
EnableSsl = false,
|
||||
Username = "",
|
||||
Password = ""
|
||||
}
|
||||
};
|
||||
|
||||
//
|
||||
var defaultSmsConfiguration = new Dictionary<string, XSmsConfiguration> {
|
||||
["EMPTY"] =
|
||||
new XSmsConfiguration {
|
||||
ServiceUrl = "",
|
||||
Username = "",
|
||||
Password = "",
|
||||
LineNumber = "",
|
||||
UserApiKey = "",
|
||||
SecretKey = "",
|
||||
}
|
||||
};
|
||||
|
||||
//
|
||||
if (xMessageConfiguration.IsNull ()) {
|
||||
//
|
||||
xMessageConfiguration = new XMessageConfiguration {
|
||||
DefaultSMSProvider = xMessageServiceConstants.DEFAULT_EMPTY_PROVIDER,
|
||||
DefaultMailProvider = xMessageServiceConstants.DEFAULT_EMPTY_PROVIDER,
|
||||
MailConfigurations = defaultMailConfiguration,
|
||||
SmsConfigurations = defaultSmsConfiguration
|
||||
};
|
||||
|
||||
//
|
||||
// Warn Message is Default Configuration ...
|
||||
Console.WriteLine ($"IMPORTANT: xMessageService Configuration is Default, so the Service can't works properly ...");
|
||||
}
|
||||
|
||||
//
|
||||
// Handle Default Mail Provider ...
|
||||
if (xMessageConfiguration.DefaultMailProvider.IsNullOrEmpty ()) {
|
||||
//
|
||||
if (xMessageConfiguration.IsNull () ||
|
||||
//
|
||||
xMessageConfiguration.MailConfigurations.IsNull () ||
|
||||
xMessageConfiguration.MailConfigurations.Count == 0) {
|
||||
//
|
||||
Console.WriteLine ("There is no defined Mail Provider Configurations ...");
|
||||
xMessageConfiguration.DefaultMailProvider = xMessageServiceConstants.DEFAULT_EMPTY_PROVIDER;
|
||||
}
|
||||
|
||||
//
|
||||
if (xMessageConfiguration.DefaultMailProvider == xMessageServiceConstants.DEFAULT_EMPTY_PROVIDER) {
|
||||
xMessageConfiguration.MailConfigurations = defaultMailConfiguration;
|
||||
} else {
|
||||
xMessageConfiguration.DefaultMailProvider = xMessageConfiguration.MailConfigurations.Keys.First ();
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Handle Default SMS Provider ...
|
||||
if (xMessageConfiguration.DefaultSMSProvider.IsNullOrEmpty ()) {
|
||||
//
|
||||
if (xMessageConfiguration.IsNull () ||
|
||||
xMessageConfiguration.SmsConfigurations.IsNull () ||
|
||||
xMessageConfiguration.SmsConfigurations.Count == 0) {
|
||||
//
|
||||
Console.WriteLine ("There is no defined SMS Provider Configurations ...");
|
||||
xMessageConfiguration.DefaultSMSProvider = xMessageServiceConstants.DEFAULT_EMPTY_PROVIDER;
|
||||
}
|
||||
|
||||
//
|
||||
if (xMessageConfiguration.DefaultSMSProvider == xMessageServiceConstants.DEFAULT_EMPTY_PROVIDER) {
|
||||
xMessageConfiguration.SmsConfigurations = defaultSmsConfiguration;
|
||||
} else {
|
||||
xMessageConfiguration.DefaultSMSProvider = xMessageConfiguration.SmsConfigurations.Keys.First ();
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
return xMessageConfiguration;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Register XMessage Service
|
||||
/// </summary>
|
||||
/// <param name="services"></param>
|
||||
/// <param name="config"></param>
|
||||
public static void AddXMessageService (this IServiceCollection services, IConfiguration config) {
|
||||
//
|
||||
var xMessageConfiguration = config.GetXMessageConfiguration ();
|
||||
services.AddSingleton<XMessageConfiguration> (xMessageConfiguration);
|
||||
|
||||
//
|
||||
// Register SMS Service ...
|
||||
var xSmsService = new XSmsService (
|
||||
xMessageConfiguration.DefaultSMSProvider,
|
||||
xMessageConfiguration.SmsConfigurations
|
||||
);
|
||||
services.AddSingleton<IXSmsService> (xSmsService);
|
||||
|
||||
//
|
||||
// Register Mail Service ...
|
||||
var xMailService = new XMailService (
|
||||
xMessageConfiguration.DefaultMailProvider,
|
||||
xMessageConfiguration.MailConfigurations
|
||||
);
|
||||
services.AddSingleton<IXMailService> (xMailService);
|
||||
|
||||
//
|
||||
// Register MEssage Provider ...
|
||||
services.AddSingleton<IXMessageProvider, XMessageProvider> ();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user