142 lines
5.7 KiB
C#
142 lines
5.7 KiB
C#
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> ();
|
|
}
|
|
}
|
|
} |