private void RecoveryFormState() { var directory = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "Backlog Killer"); if (!Directory.Exists(directory)) { Directory.CreateDirectory(directory); } _pathFileFormState = Path.Combine(directory, "form-state.xml"); var serializeService = new SerializeService <ConfigurationViewModel>(); if (File.Exists(_pathFileFormState)) { var configurationViewModel = serializeService.Deserialize(_pathFileFormState); txtProjectDirectoryRoot.Text = configurationViewModel.Directory; txtFilters.Text = configurationViewModel.Filters; dgvSubstitutions.AllowUserToAddRows = false; dgvSubstitutions.AllowUserToDeleteRows = false; foreach (var subs in configurationViewModel.Substitutions) { dgvSubstitutions.Rows.Add(); dgvSubstitutions.Rows[dgvSubstitutions.Rows.Count - 1].Cells[(int)Column.Find].Value = subs.Find; dgvSubstitutions.Rows[dgvSubstitutions.Rows.Count - 1].Cells[(int)Column.ReplaceWith].Value = subs.ReplaceWith; } dgvSubstitutions.AllowUserToAddRows = true; dgvSubstitutions.AllowUserToDeleteRows = true; } }
private void SaveConfiguration() { if (File.Exists(_pathFileFormState)) { File.Delete(_pathFileFormState); } var configuration = GetConfiguration(); var configurationViewModel = new ConfigurationViewModel { Directory = configuration.ProjectDirectory.Path, Filters = txtFilters.Text }; foreach (var subs in configuration.Substitutions) { configurationViewModel.Substitutions.Add( new ReplacementViewModel { Find = subs.Find, ReplaceWith = subs.ReplaceWith }); } var serializeService = new SerializeService <ConfigurationViewModel>(); serializeService.Serialize(configurationViewModel, _pathFileFormState); }
public static string Serialize <T>(T obj) where T : class { CheckHelper.ArgumentNotNull(obj, "obj"); var serializeService = new SerializeService(); return(serializeService.Serialize(obj)); }
public static T Deserialize <T>(string data) where T : class { CheckHelper.ArgumentNotNullAndNotWhiteSpace(data, "data"); var serializeService = new SerializeService(); return(serializeService.Deserialize <T>(data)); }
public void Deserialize_Should_Deserialize_Data() { // Arrange var serializeService = new SerializeService(); const string data = "<?xml version=\"1.0\" encoding=\"utf-16\"?>\r\n<TestClass xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\r\n <TestProperty1>3</TestProperty1>\r\n <TestProperty2>test</TestProperty2>\r\n</TestClass>"; // Act var obj = serializeService.Deserialize <TestClass>(data); // Assert Assert.IsNotNull(obj); Assert.AreEqual(3, obj.TestProperty1); Assert.AreEqual("test", obj.TestProperty2); }
public void Serialize_Should_Serialize_Object() { // Arrange var serializeService = new SerializeService(); var obj = new TestClass { TestProperty1 = 3, TestProperty2 = "test" }; // Act var data = serializeService.Serialize(obj); // Assert const string expected = "<?xml version=\"1.0\" encoding=\"utf-16\"?>\r\n<TestClass xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\r\n <TestProperty1>3</TestProperty1>\r\n <TestProperty2>test</TestProperty2>\r\n</TestClass>"; Assert.AreEqual(expected, data); }
public static void Main(string[] args) { AppDomain.CurrentDomain.ProcessExit += CurrentDomain_ProcessExit; var commandLineParser = new Parser(settings => settings.CaseSensitive = false); var optionsResult = commandLineParser.ParseArguments <ConsoleOptions>(args); var runtimeDictionary = new Dictionary <string, string>(); ConsoleOptions consoleOptions = new ConsoleOptions(); optionsResult.WithNotParsed(errors => { var text = HelpText.AutoBuild(optionsResult); text.Copyright = " "; text.Heading = "Jackett v" + EnvironmentUtil.JackettVersion; Console.WriteLine(text); Environment.Exit(1); return; }); optionsResult.WithParsed(options => { if (string.IsNullOrEmpty(options.Client)) { bool runningOnDotNetCore = RuntimeInformation.FrameworkDescription.IndexOf("Core", StringComparison.OrdinalIgnoreCase) >= 0; if (runningOnDotNetCore) { options.Client = "httpclientnetcore"; } else { options.Client = "httpclient"; } } Settings = options.ToRunTimeSettings(); consoleOptions = options; runtimeDictionary = GetValues(Settings); }); LogManager.Configuration = LoggingSetup.GetLoggingConfiguration(Settings); Logger logger = LogManager.GetCurrentClassLogger(); logger.Info("Starting Jackett v" + EnvironmentUtil.JackettVersion); // create PID file early if (!string.IsNullOrWhiteSpace(Settings.PIDFile)) { try { var proc = Process.GetCurrentProcess(); File.WriteAllText(Settings.PIDFile, proc.Id.ToString()); } catch (Exception e) { logger.Error(e, "Error while creating the PID file"); } } Initialisation.CheckEnvironmentalVariables(logger); Initialisation.ProcessSettings(Settings, logger); ISerializeService serializeService = new SerializeService(); IProcessService processService = new ProcessService(logger); IConfigurationService configurationService = new ConfigurationService(serializeService, processService, logger, Settings); if (consoleOptions.Install || consoleOptions.Uninstall || consoleOptions.StartService || consoleOptions.StopService || consoleOptions.ReserveUrls) { bool isWindows = Environment.OSVersion.Platform == PlatformID.Win32NT; if (isWindows) { ServerConfig serverConfig = configurationService.BuildServerConfig(Settings); Initialisation.ProcessWindowsSpecificArgs(consoleOptions, processService, serverConfig, logger); } else { logger.Error($"ReserveUrls and service arguments only apply to Windows, please remove them from your start arguments"); Environment.Exit(1); } } var builder = new ConfigurationBuilder(); builder.AddInMemoryCollection(runtimeDictionary); builder.AddJsonFile(Path.Combine(configurationService.GetAppDataFolder(), "appsettings.json"), optional: true); Configuration = builder.Build(); do { if (!isWebHostRestart) { if (consoleOptions.Port != 0 || consoleOptions.ListenPublic || consoleOptions.ListenPrivate) { ServerConfig serverConfiguration = configurationService.BuildServerConfig(Settings); Initialisation.ProcessConsoleOverrides(consoleOptions, processService, serverConfiguration, configurationService, logger); } } ServerConfig serverConfig = configurationService.BuildServerConfig(Settings); Int32.TryParse(serverConfig.Port.ToString(), out Int32 configPort); string[] url = serverConfig.GetListenAddresses(serverConfig.AllowExternal); isWebHostRestart = false; try { logger.Debug("Creating web host..."); string applicationFolder = Path.Combine(configurationService.ApplicationFolder(), "Content"); logger.Debug($"Content root path is: {applicationFolder}"); CreateWebHostBuilder(args, url, applicationFolder).Build().Run(); } catch (Exception ex) { if (ex.InnerException is Microsoft.AspNetCore.Connections.AddressInUseException) { logger.Error("Address already in use: Most likely Jackett is already running. " + ex.Message); Environment.Exit(1); } logger.Error(ex); throw; } } while (isWebHostRestart); }