Code reorganization

This commit is contained in:
Anton Kasyanov
2018-04-03 23:50:27 +03:00
parent 36cf3f421e
commit c9121873b5
8 changed files with 9 additions and 9 deletions

View File

@@ -0,0 +1,56 @@
using System.IO;
using Newtonsoft.Json;
namespace EveOPreview.Configuration.Implementation
{
class ConfigurationStorage : IConfigurationStorage
{
private const string ConfigurationFileName = "EVE-O Preview.json";
private readonly IAppConfig _appConfig;
private readonly IThumbnailConfiguration _thumbnailConfiguration;
public ConfigurationStorage(IAppConfig appConfig, IThumbnailConfiguration thumbnailConfiguration)
{
this._appConfig = appConfig;
this._thumbnailConfiguration = thumbnailConfiguration;
}
public void Load()
{
string filename = this.GetConfigFileName();
if (!File.Exists(filename))
{
return;
}
string rawData = File.ReadAllText(filename);
JsonConvert.PopulateObject(rawData, this._thumbnailConfiguration);
// Validate data after loading it
this._thumbnailConfiguration.ApplyRestrictions();
}
public void Save()
{
string rawData = JsonConvert.SerializeObject(this._thumbnailConfiguration, Formatting.Indented);
string filename = this.GetConfigFileName();
try
{
File.WriteAllText(filename, rawData);
}
catch (IOException)
{
// Ignore error if for some reason the updated config cannot be written down
}
}
private string GetConfigFileName()
{
return string.IsNullOrEmpty(this._appConfig.ConfigFileName) ? ConfigurationStorage.ConfigurationFileName : this._appConfig.ConfigFileName;
}
}
}