public void MethodArgumentsTest()
        {
            var provider = new SettingsProvider();
            var settings = new TestSettings() { Test = "Test1" };

            AssertHelper.ExpectedException<ArgumentNullException>(() => provider.SaveSettings(testSettingsPath, null));
            AssertHelper.ExpectedException<ArgumentException>(() => provider.SaveSettings(null, settings));
            AssertHelper.ExpectedException<ArgumentException>(() => provider.SaveSettings("MockSettings.xml", settings));

            AssertHelper.ExpectedException<ArgumentException>(() => provider.LoadSettings<TestSettings>(null));
            AssertHelper.ExpectedException<ArgumentException>(() => provider.LoadSettings<TestSettings>("MockSettings.xml"));
        }
        public void LoadSettings_NoSolutionOpen_NullFileSystemAndNullConfigFileAndNullMachineSettingsUsed()
        {
            fileSystemUsedToLoadSettings = new FakeFileSystem();
            configFileUsedToLoadSettings = "configFile";

            ISettings settings = settingsProvider.LoadSettings();

            Assert.IsNull(fileSystemUsedToLoadSettings);
            Assert.IsNull(configFileUsedToLoadSettings);
            Assert.IsNull(machinesettingsUsedToLoadSettings);
            Assert.AreEqual(fakeSettings, settings);
        }
Exemple #3
0
        public void MethodArgumentsTest()
        {
            var provider = new SettingsProvider();
            var settings = new TestSettings()
            {
                Test = "Test1"
            };

            AssertHelper.ExpectedException <ArgumentNullException>(() => provider.SaveSettings(testSettingsPath, null));
            AssertHelper.ExpectedException <ArgumentException>(() => provider.SaveSettings(null, settings));
            AssertHelper.ExpectedException <ArgumentException>(() => provider.SaveSettings("MockSettings.xml", settings));

            AssertHelper.ExpectedException <ArgumentException>(() => provider.LoadSettings <TestSettings>(null));
            AssertHelper.ExpectedException <ArgumentException>(() => provider.LoadSettings <TestSettings>("MockSettings.xml"));
        }
        public void BasicSaveAndLoadTest()
        {
            var provider = new SettingsProvider();

            var defaultSettings = provider.LoadSettings<TestSettings>(testSettingsPath);
            Assert.AreEqual("Default", defaultSettings.Test);

            var settings1 = new TestSettings() { Test = "Test1" };
            provider.SaveSettings(testSettingsPath, settings1);

            var settings2 = provider.LoadSettings<TestSettings>(testSettingsPath);

            Assert.AreNotEqual(settings1, settings2);
            Assert.AreEqual(settings1.Test, settings2.Test);
        }
Exemple #5
0
        static void Main(string[] args)
        {
            try {
                SettingsProvider settingsProvider = new SettingsProvider();
                Settings         settings         = settingsProvider.LoadSettings();
                ICrawler         crawler          = new HSCrawler(settings);
                IProfileCrawler  profileCrawler   = new MALProfileCrawler(settings.UpdateProfile);


                IntializeDriver(settings);

                driver.Url = settings.ProfileURL;
                ICollection <Anime> animes = profileCrawler.GetAnimes(driver, settings.DestinationFolder);

                crawler.DownloadAnimes(driver, animes);

                settingsProvider.SaveSettings(settings);
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
            finally
            {
                System.Threading.Thread.Sleep(waitTimeMS);
                if (null != driver)
                {
                    driver.Quit();
                }

                Environment.Exit(0);
            }
        }
Exemple #6
0
        private void Load(SettingsLocation?location)
        {
            ClearError();
            if (!location.HasValue)
            {
                return;
            }

            Settings settings;

            try
            {
                settings = SettingsProvider.LoadSettings(location.Value);
            }
            catch (Exception ex)
            {
                LogHelper.LogError(ex);
                ShowError($"Error loading {location.Value} settings, exception logged");
                return;
            }
            if (settings == null)
            {
                ShowError($"No {location.Value} settings found");
                return;
            }
            ApplySettings(settings);
        }
Exemple #7
0
 private Settings LoadSettingsForUser(string sid)
 {
     if (sid == null)
     {
         return(_settingsProvider.LoadSettings(SettingsLocation.System));
     }
     return(_settingsProvider.LoadSettingsForUser(sid));
 }
Exemple #8
0
        public void BasicSaveAndLoadTest()
        {
            var provider = new SettingsProvider();

            var defaultSettings = provider.LoadSettings <TestSettings>(testSettingsPath);

            Assert.AreEqual("Default", defaultSettings.Test);

            var settings1 = new TestSettings()
            {
                Test = "Test1"
            };

            provider.SaveSettings(testSettingsPath, settings1);

            var settings2 = provider.LoadSettings <TestSettings>(testSettingsPath);

            Assert.AreNotEqual(settings1, settings2);
            Assert.AreEqual(settings1.Test, settings2.Test);
        }
        public static void Main(string[] args)
        {
            int port = SettingsProvider.LoadSettings().Port;

            var host = new WebHostBuilder()
                       .UseKestrel()
                       .UseContentRoot(Directory.GetCurrentDirectory())
                       .UseIISIntegration()
                       .UseStartup <Startup>()
                       .UseUrls("http://localhost:" + port)
                       .Build();

            host.Run();
        }
Exemple #10
0
        // This method gets called by the runtime. Use this method to add services to the container.
        // For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddSingleton <ISecurity>(new SecurityProvider());
            services.AddSingleton <ISettings>(SettingsProvider.LoadSettings());
            services.AddSingleton <IDatabase>(new LiteDbProvider());

            //Set Admin policy
            services.AddAuthorization(o =>
            {
                o.AddPolicy(UserRoles.Admin, p => p.AddRequirements(new HasRoleRequirement(UserRoles.Admin)));
            });

            //Set MVC with default lockdown
            services.AddMvc(
                config =>
            {
                var policy = new AuthorizationPolicyBuilder()
                             .RequireAuthenticatedUser()
                             .Build();
                config.Filters.Add(new AuthorizeFilter(policy));
            }
                );
        }
        public static void AddSharedCore <TS>(this IServiceCollection services, bool addUIServices = false)
        {
            var settings = SettingsProvider.LoadSettings();

            var environment = System.Environment.GetEnvironmentVariable("PUBCRAWL_ENVIRONMENT");

            if (string.IsNullOrWhiteSpace(environment))
            {
                environment = "default";
            }

            services.Configure <RouteOptions>(options => options.LowercaseUrls = true);
            services.AddLogging(configure => {
                configure.AddConsole();
                if (!environment.Equals("default", StringComparison.OrdinalIgnoreCase))
                {
                    // We use the log path /var/log/koasta-{environment}.log on Linux, as we use a Linux-based AMI in AWS which
                    // automatically publishes logs to CloudWatch on our behalf at this file location.
                    var logPath = RuntimeInformation.IsOSPlatform(OSPlatform.Linux) ? $"/var/log/koasta-{environment}.log" : Path.Join(System.Environment.CurrentDirectory, $"koasta-{environment}.log");
                    configure.AddFile(logPath, fileOptions => {
                        fileOptions.Append             = true;
                        fileOptions.FileSizeLimitBytes = 1024 * 1024 * 10; // 10 megabytes
                        fileOptions.MaxRollingFiles    = 5;
                    });
                }
            })
            .Configure <LoggerFilterOptions>(options => options.MinLevel = settings.Meta.Debug ? LogLevel.Debug : LogLevel.Information);
            services.AddMvc();
            services.AddSingleton(typeof(ISettings), settings);
            services.AddSingleton <IEnvironment, Koasta.Shared.Configuration.Environment>();
            services.AddSingleton(typeof(CompanyRepository));
            services.AddSingleton(typeof(EmployeeRepository));
            services.AddSingleton(typeof(EmployeeRoleRepository));
            services.AddSingleton(typeof(EmployeeSessionRepository));
            services.AddSingleton(typeof(UserRepository));
            services.AddSingleton(typeof(UserSessionRepository));
            services.AddSingleton(typeof(MenuRepository));
            services.AddSingleton(typeof(MenuItemRepository));
            services.AddSingleton(typeof(OrderRepository));
            services.AddSingleton(typeof(OrderLineRepository));
            services.AddSingleton(typeof(ProductRepository));
            services.AddSingleton(typeof(ProductTypeRepository));
            services.AddSingleton(typeof(VenueRepository));
            services.AddSingleton(typeof(ReviewRepository));
            services.AddSingleton(typeof(SubscriptionPackageRepository));
            services.AddSingleton(typeof(SubscriptionPlanRepository));
            services.AddSingleton(typeof(ImageRepository));
            services.AddSingleton(typeof(TagRepository));
            services.AddSingleton(typeof(DeviceRepository));
            services.AddSingleton(typeof(TokenRepository));
            services.AddSingleton(typeof(MediaRepository));
            services.AddSingleton(typeof(DocumentRepository));
            services.AddSingleton(typeof(VenueDocumentRepository));
            services.AddSingleton(typeof(FeatureFlagRepository));
            services.AddSingleton(typeof(VenueOpeningTimeRepository));
            services.AddSingleton <IKeyStoreHelper, KeyStoreHelper>();
            if (settings.Connection.StubMessaging)
            {
                services.AddSingleton(typeof(IMessagePublisher), typeof(StubMessagePublisher));
            }
            else
            {
                services.AddSingleton(typeof(IMessagePublisher), typeof(RabbitMQMessagePublisher));
            }
            if (settings.Connection.StubBilling)
            {
                services.AddSingleton(typeof(IBillingManager), typeof(StubBillingManager));
            }
            else
            {
                services.AddSingleton(typeof(IBillingManager), typeof(BillingManager));
            }
            services.AddSingleton(typeof(Constants));
            services.AddSingleton(typeof(AnalyticsRepository));
            services.AddSingleton <ICryptoHelper, CryptoHelper>();

            var startupType = new StartupType
            {
                Type = typeof(TS)
            };

            services.AddSingleton(typeof(StartupType), startupType);

            services.AddHealthChecks().AddNpgSql(settings.Connection.DatabaseConnectionString);

            if (settings.Meta.RequiresMessageQueue && !settings.Connection.StubMessaging)
            {
                string rabbitmqconnection = $"amqp://{HttpUtility.UrlEncode(settings.Connection.RabbitMQUsername)}:{ HttpUtility.UrlEncode(settings.Connection.RabbitMQPassword)}@{settings.Connection.RabbitMQHostname}:5672";

                services
                .AddHealthChecks()
                .AddRabbitMQ(rabbitConnectionString: rabbitmqconnection);
            }

            if (addUIServices && !environment.Equals("default", StringComparison.OrdinalIgnoreCase))
            {
                services.AddDataProtection()
                .SetApplicationName($"koasta{environment}")
                .PersistKeysToAWSSystemsManager("/Koasta/DataProtection");
            }

            if (!string.IsNullOrWhiteSpace(settings.Connection.MemcachedUrl))
            {
                services.AddEnyimMemcached(options => options.AddServer(settings.Connection.MemcachedUrl, 11211));
            }
        }
        public static void AddShared <TS>(this IServiceCollection services)
        {
            AddSharedCore <TS>(services);
            var settings = SettingsProvider.LoadSettings();

            services.AddMvc(options =>
            {
                if (settings.Meta.Debug)
                {
                    options.Filters.Add(new BadRequestDebugMiddleware());
                }
            });

            services.AddSingleton(typeof(ApiWarmer));
            services.AddScoped <AuthorisationMiddleware>();

            services.AddSwaggerGen(options =>
            {
                options.SwaggerDoc("v1", new OpenApiInfo {
                    Title = "Koasta API", Version = "v1"
                });

                options.AddSecurityDefinition("Bearer", new OpenApiSecurityScheme
                {
                    Description = "Employee Authorization header using the Bearer scheme. Example: \"bearer {token}\"",
                    In          = ParameterLocation.Header,
                    Name        = "Authorization",
                    Type        = SecuritySchemeType.ApiKey,
                    Scheme      = "Bearer"
                });

                options.AddSecurityDefinition("API Key", new OpenApiSecurityScheme
                {
                    Description = "Employee API key",
                    In          = ParameterLocation.Header,
                    Name        = "x-api-key",
                    Type        = SecuritySchemeType.ApiKey,
                    Scheme      = "Bearer"
                });

                options.AddSecurityRequirement(new OpenApiSecurityRequirement()
                {
                    {
                        new OpenApiSecurityScheme
                        {
                            Reference = new OpenApiReference
                            {
                                Type = ReferenceType.SecurityScheme,
                                Id   = "Bearer"
                            },
                            Scheme = "oauth2",
                            Name   = "Bearer",
                            In     = ParameterLocation.Header,
                        },
                        new List <string>()
                    },
                    {
                        new OpenApiSecurityScheme
                        {
                            Reference = new OpenApiReference
                            {
                                Type = ReferenceType.SecurityScheme,
                                Id   = "API Key"
                            },
                            Scheme = "oauth2",
                            Name   = "API Key",
                            In     = ParameterLocation.Header,
                        },
                        new List <string>()
                    }
                });
            });
        }