More Options refactoring (#2179)

* More Options refactoring

Continues refactoring config classes to use the propert Options pattern where possible.
DataDirectories and DatabaseOptions are now configured the Options pattern and the BTCPayOptions is now moved alongside the other config setup

* Move COnfigure logic for Options to the Startup
This commit is contained in:
Andrew Camilleri
2021-01-06 15:51:13 +01:00
committed by GitHub
parent a18dae6d04
commit 58d01738ab
18 changed files with 179 additions and 234 deletions

View File

@@ -11,19 +11,20 @@ using BTCPayServer.Configuration;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Options;
using Newtonsoft.Json;
namespace BTCPayServer.Plugins
{
public class PluginService: IPluginHookService
{
private readonly DataDirectories _datadirs;
private readonly IOptions<DataDirectories> _datadirs;
private readonly BTCPayServerOptions _options;
private readonly HttpClient _githubClient;
private readonly IEnumerable<IPluginHookAction> _actions;
private readonly IEnumerable<IPluginHookFilter> _filters;
public PluginService(IEnumerable<IBTCPayServerPlugin> btcPayServerPlugins,
IHttpClientFactory httpClientFactory, DataDirectories datadirs, BTCPayServerOptions options, IEnumerable<IPluginHookAction> actions, IEnumerable<IPluginHookFilter> filters)
IHttpClientFactory httpClientFactory, IOptions<DataDirectories> datadirs, BTCPayServerOptions options, IEnumerable<IPluginHookAction> actions, IEnumerable<IPluginHookFilter> filters)
{
LoadedPlugins = btcPayServerPlugins;
_githubClient = httpClientFactory.CreateClient();
@@ -50,7 +51,7 @@ namespace BTCPayServer.Plugins
public async Task DownloadRemotePlugin(string plugin)
{
var dest = _datadirs.PluginDir;
var dest = _datadirs.Value.PluginDir;
var resp = await _githubClient
.GetStringAsync(new Uri($"https://api.github.com/repos/{_options.PluginRemote}/contents"));
var files = JsonConvert.DeserializeObject<GithubFile[]>(resp);
@@ -67,19 +68,19 @@ namespace BTCPayServer.Plugins
public void InstallPlugin(string plugin)
{
var dest = _datadirs.PluginDir;
var dest = _datadirs.Value.PluginDir;
UninstallPlugin(plugin);
PluginManager.QueueCommands(dest, ("install", plugin));
}
public void UpdatePlugin(string plugin)
{
var dest = _datadirs.PluginDir;
var dest = _datadirs.Value.PluginDir;
PluginManager.QueueCommands(dest, ("update", plugin));
}
public async Task UploadPlugin(IFormFile plugin)
{
var dest = _datadirs.PluginDir;
var dest = _datadirs.Value.PluginDir;
var filedest = Path.Combine(dest, plugin.FileName);
Directory.CreateDirectory(Path.GetDirectoryName(filedest));
if (Path.GetExtension(filedest) == PluginManager.BTCPayPluginSuffix)
@@ -91,7 +92,7 @@ namespace BTCPayServer.Plugins
public void UninstallPlugin(string plugin)
{
var dest = _datadirs.PluginDir;
var dest = _datadirs.Value.PluginDir;
PluginManager.QueueCommands(dest, ("delete", plugin));
}
@@ -126,12 +127,12 @@ namespace BTCPayServer.Plugins
public (string command, string plugin)[] GetPendingCommands()
{
return PluginManager.GetPendingCommands(_datadirs.PluginDir);
return PluginManager.GetPendingCommands(_datadirs.Value.PluginDir);
}
public void CancelCommands(string plugin)
{
PluginManager.CancelCommands(_datadirs.PluginDir, plugin);
PluginManager.CancelCommands(_datadirs.Value.PluginDir, plugin);
}
public async Task ApplyAction(string hook, object args)