87 lines
2.4 KiB
C#
87 lines
2.4 KiB
C#
using System;
|
|
using Microsoft.Extensions.Configuration;
|
|
using Microsoft.Extensions.DependencyInjection;
|
|
using xAiApi.Configurations;
|
|
using xAiApi.Constants;
|
|
using xAiApi.Extensions;
|
|
using xCommons.Extensions;
|
|
using xExceptions.Constants;
|
|
|
|
namespace xAiApi.DI
|
|
{
|
|
public static partial class XDIHelperExtension
|
|
{
|
|
/// <summary>
|
|
/// Extract AI Configuration ...
|
|
/// </summary>
|
|
/// <param name="source"></param>
|
|
/// <returns></returns>
|
|
public static XAiApiConfiguration GetXAiApiConfiguration(this IConfiguration source)
|
|
{
|
|
//
|
|
XAiApiConfiguration result = null;
|
|
|
|
//
|
|
var section = source.GetSection(ConfigurationNodeNames.AI_API_NODE);
|
|
if (!section.IsNull())
|
|
{
|
|
result = section.Get<XAiApiConfiguration>();
|
|
}
|
|
|
|
//
|
|
return result;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Register AiApi Configuration ...
|
|
/// </summary>
|
|
/// <param name="source"></param>
|
|
/// <param name="configuration"></param>
|
|
public static void AddXAiApiConfiguration(
|
|
this IServiceCollection source,
|
|
IConfiguration configuration
|
|
)
|
|
{
|
|
//
|
|
var apiConfig = configuration.GetXAiApiConfiguration();
|
|
source.AddXAiApiConfiguration(apiConfig);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Register AiApi Configuration ...
|
|
/// </summary>
|
|
/// <param name="source"></param>
|
|
/// <param name="configuration"></param>
|
|
public static void AddXAiApiConfiguration(
|
|
this IServiceCollection source,
|
|
XAiApiConfiguration configuration
|
|
)
|
|
{
|
|
//
|
|
if (!configuration.IsValid())
|
|
{
|
|
XException.InvalidConfiguration.Throw();
|
|
}
|
|
|
|
//
|
|
source.AddSingleton(configuration);
|
|
}
|
|
|
|
//
|
|
#region Private ...
|
|
/// <summary>
|
|
/// a LogTag for Service ...
|
|
/// </summary>
|
|
private static string XLogTag = XAiApiConstants.XDILogTag;
|
|
|
|
/// <summary>
|
|
/// print a log in Console ...
|
|
/// </summary>
|
|
/// <param name="message"></param>
|
|
private static void Log(string message)
|
|
{
|
|
Console.WriteLine($"{XLogTag} => {message}");
|
|
}
|
|
#endregion
|
|
}
|
|
} |