UI for key update
This commit is contained in:
55
EpsonPrintService/ConfigurationLoader.cs
Normal file
55
EpsonPrintService/ConfigurationLoader.cs
Normal file
@@ -0,0 +1,55 @@
|
||||
using Inspectron.Epson.PrintServer.ConfigurationSources;
|
||||
|
||||
namespace EpsonPrintService;
|
||||
|
||||
public record ConfigLoadResult(bool Success, EpsonPrintServiceConfiguration? Config, string? Error);
|
||||
|
||||
public static class ConfigurationLoader
|
||||
{
|
||||
public static ConfigLoadResult TryLoadFromBase64(string base64Content)
|
||||
{
|
||||
try
|
||||
{
|
||||
var decoded = System.Text.Encoding.UTF8.GetString(Convert.FromBase64String(base64Content.Trim()));
|
||||
var parts = decoded.Split(';');
|
||||
if (parts.Length != 3)
|
||||
return new ConfigLoadResult(false, null, $"Invalid configuration format. Expected 'apiUrl;restaurantId;apiKey', got {parts.Length} parts.");
|
||||
|
||||
var config = new EpsonPrintServiceConfiguration
|
||||
{
|
||||
ApiUrl = parts[0],
|
||||
RestaurantId = parts[1],
|
||||
ApiKey = parts[2]
|
||||
};
|
||||
|
||||
if (string.IsNullOrWhiteSpace(config.ApiUrl) || string.IsNullOrWhiteSpace(config.RestaurantId) || string.IsNullOrWhiteSpace(config.ApiKey))
|
||||
return new ConfigLoadResult(false, null, "Configuration contains empty values.");
|
||||
|
||||
return new ConfigLoadResult(true, config, null);
|
||||
}
|
||||
catch (FormatException)
|
||||
{
|
||||
return new ConfigLoadResult(false, null, "Invalid base64 content.");
|
||||
}
|
||||
}
|
||||
|
||||
public static ConfigLoadResult TryLoadFromFile()
|
||||
{
|
||||
try
|
||||
{
|
||||
var configPath = ConfigurationPaths.GetConfigPath();
|
||||
if (!File.Exists(configPath))
|
||||
return new ConfigLoadResult(false, null, $"Configuration file not found: {configPath}");
|
||||
|
||||
var base64Line = File.ReadAllText(configPath).Trim();
|
||||
if (string.IsNullOrWhiteSpace(base64Line))
|
||||
return new ConfigLoadResult(false, null, "Configuration file is empty.");
|
||||
|
||||
return TryLoadFromBase64(base64Line);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
return new ConfigLoadResult(false, null, $"Failed to read configuration: {ex.Message}");
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user