Пример #1
0
        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;
            }
        }
Пример #2
0
        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);
        }
Пример #3
0
        public static string Serialize <T>(T obj)
            where T : class
        {
            CheckHelper.ArgumentNotNull(obj, "obj");

            var serializeService = new SerializeService();

            return(serializeService.Serialize(obj));
        }
Пример #4
0
        public static T Deserialize <T>(string data)
            where T : class
        {
            CheckHelper.ArgumentNotNullAndNotWhiteSpace(data, "data");

            var serializeService = new SerializeService();

            return(serializeService.Deserialize <T>(data));
        }
Пример #5
0
        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);
        }
Пример #6
0
        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);
        }
Пример #7
0
        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);
        }