2024-01-15 19:15:18 +00:00
|
|
|
using BotSharp.Abstraction.Settings;
|
|
|
|
|
using BotSharp.Core.Plugins;
|
|
|
|
|
using Microsoft.Extensions.Configuration;
|
|
|
|
|
|
|
|
|
|
namespace BotSharp.Core.Infrastructures;
|
|
|
|
|
|
|
|
|
|
public class SettingService : ISettingService
|
|
|
|
|
{
|
|
|
|
|
private readonly IServiceProvider _services;
|
|
|
|
|
private readonly IConfiguration _config;
|
|
|
|
|
private readonly ILogger _logger;
|
|
|
|
|
|
|
|
|
|
public SettingService(IServiceProvider services,
|
|
|
|
|
IConfiguration config,
|
|
|
|
|
ILogger<SettingService> logger)
|
|
|
|
|
{
|
|
|
|
|
_services = services;
|
|
|
|
|
_config = config;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public T Bind<T>(string path) where T : new()
|
|
|
|
|
{
|
|
|
|
|
var settings = new T();
|
|
|
|
|
_config.Bind(path, settings);
|
|
|
|
|
return settings;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public object GetDetail(string settingName, bool mask = false)
|
|
|
|
|
{
|
|
|
|
|
var pluginService = _services.GetRequiredService<PluginLoader>();
|
|
|
|
|
var plugins = pluginService.GetPlugins(_services);
|
|
|
|
|
var plugin = plugins.First(x => x.Module.Settings.Name == settingName);
|
|
|
|
|
var instance = plugin.Module.GetNewSettingsInstance();
|
2024-08-13 18:26:57 +00:00
|
|
|
|
2024-01-15 19:15:18 +00:00
|
|
|
_config.Bind(settingName, instance);
|
|
|
|
|
if (mask)
|
|
|
|
|
{
|
|
|
|
|
plugin.Module.MaskSettings(instance);
|
|
|
|
|
}
|
|
|
|
|
return instance;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static string Mask(string value)
|
|
|
|
|
{
|
2024-01-16 17:38:45 +00:00
|
|
|
if (string.IsNullOrEmpty(value))
|
2024-01-15 19:15:18 +00:00
|
|
|
{
|
2024-01-16 17:38:45 +00:00
|
|
|
return string.Empty;
|
2024-01-15 19:15:18 +00:00
|
|
|
}
|
|
|
|
|
value = value.Substring(0, value.Length / 2 - 1)
|
|
|
|
|
+ string.Join("", Enumerable.Repeat("*", value.Length / 2));
|
|
|
|
|
return value;
|
|
|
|
|
}
|
|
|
|
|
}
|