using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Configuration; namespace GazeWebSocketServer { public class ConfigurationData { public string TrackerSerialNumber { get; private set; } public float TrackerFrequency { get; private set; } public int WebSocketPort { get; private set; } public string WebSocketEndpoint { get; private set; } public bool DebugFlag { get; private set; } public static ConfigurationData ParseToObject() { ConfigurationData result = new ConfigurationData { TrackerSerialNumber = ConfigurationManager.AppSettings["TrackerSerialNumber"], TrackerFrequency = float.Parse(ConfigurationManager.AppSettings["TrackerFrequency_Hz"]), WebSocketPort = int.Parse(ConfigurationManager.AppSettings["WebSocketPort"]), WebSocketEndpoint = ConfigurationManager.AppSettings["WebSocketEndpoint"], DebugFlag = bool.Parse(ConfigurationManager.AppSettings["DebugFlag"]) }; return result; } public static void InitializeUnexistingWithDefaults() { InitializeSetting("TrackerSerialNumber", ""); InitializeSetting("TrackerFrequency_Hz", "600"); InitializeSetting("WebSocketPort", "8001"); InitializeSetting("WebSocketEndpoint", "/gaze"); InitializeSetting("DebugFlag", "false"); } private static void InitializeSetting(string key, string value) { try { var configFile = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); var settings = configFile.AppSettings.Settings; if (settings[key] == null) { settings.Add(key, value); } configFile.Save(ConfigurationSaveMode.Modified); ConfigurationManager.RefreshSection(configFile.AppSettings.SectionInformation.Name); } catch (ConfigurationErrorsException) { Console.WriteLine("Error writing app settings"); } } } }