using System; using System.IO; using System.Text.Json; namespace Terius.Automate.Agent.Models; public sealed class AgentConfig { public string ServerUrl { get; set; } = "https://automate.terius.cl"; public string AgentId { get; set; } = Guid.NewGuid().ToString(); public string AgentSecret { get; set; } = string.Empty; public string Name { get; set; } = $"Robot {Environment.MachineName}"; public bool StartWithWindows { get; set; } = true; public bool MinimizeToTray { get; set; } = true; public bool IsRegistered => !string.IsNullOrWhiteSpace(AgentId) && !string.IsNullOrWhiteSpace(AgentSecret); } public sealed class AgentConfigStore { private static readonly JsonSerializerOptions JsonOptions = new() { WriteIndented = true }; private readonly string _path; public AgentConfigStore() { var directory = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "TERIUS", "Automate"); Directory.CreateDirectory(directory); _path = Path.Combine(directory, "agent.json"); } public AgentConfig Load() { try { return File.Exists(_path) ? JsonSerializer.Deserialize(File.ReadAllText(_path), JsonOptions) ?? new AgentConfig() : new AgentConfig(); } catch { return new AgentConfig(); } } public void Save(AgentConfig config) { var temporary = _path + ".tmp"; File.WriteAllText(temporary, JsonSerializer.Serialize(config, JsonOptions)); File.Move(temporary, _path, true); } }