Always access config file via provider to utilise lock

This commit is contained in:
ta264 2021-04-27 22:03:22 +01:00
parent 0a2afe692f
commit 36962f176f
2 changed files with 10 additions and 11 deletions

View File

@ -1,9 +1,9 @@
using System;
using System.Linq;
using System.Xml.Linq;
using NzbDrone.Common.Disk;
using NzbDrone.Common.EnvironmentInfo;
using NzbDrone.Common.Extensions;
using NzbDrone.Core.Configuration;
using NzbDrone.Core.Lifecycle;
using NzbDrone.Core.Messaging.Events;
@ -24,12 +24,17 @@ namespace NzbDrone.Core.Authentication
private readonly IUserRepository _repo;
private readonly IAppFolderInfo _appFolderInfo;
private readonly IDiskProvider _diskProvider;
private readonly IConfigFileProvider _configFileProvider;
public UserService(IUserRepository repo, IAppFolderInfo appFolderInfo, IDiskProvider diskProvider)
public UserService(IUserRepository repo,
IAppFolderInfo appFolderInfo,
IDiskProvider diskProvider,
IConfigFileProvider configFileProvider)
{
_repo = repo;
_appFolderInfo = appFolderInfo;
_diskProvider = diskProvider;
_configFileProvider = configFileProvider;
}
public User Add(string username, string password)
@ -105,14 +110,7 @@ namespace NzbDrone.Core.Authentication
return;
}
var configFile = _appFolderInfo.GetConfigPath();
if (!_diskProvider.FileExists(configFile))
{
return;
}
var xDoc = XDocument.Load(configFile);
var xDoc = _configFileProvider.LoadConfigFile();
var config = xDoc.Descendants("Config").Single();
var usernameElement = config.Descendants("Username").FirstOrDefault();
var passwordElement = config.Descendants("Password").FirstOrDefault();

View File

@ -21,6 +21,7 @@ namespace NzbDrone.Core.Configuration
public interface IConfigFileProvider : IHandleAsync<ApplicationStartedEvent>,
IExecute<ResetApiKeyCommand>
{
XDocument LoadConfigFile();
Dictionary<string, object> GetConfigDictionary();
void SaveConfigDictionary(Dictionary<string, object> configValues);
@ -310,7 +311,7 @@ namespace NzbDrone.Core.Configuration
SaveConfigFile(xDoc);
}
private XDocument LoadConfigFile()
public XDocument LoadConfigFile()
{
try
{