public static IServiceCollection AddSwaggerOpenApi(this IServiceCollection services, IConfiguration configuration)
        {
            var swaggerSettings = new SwaggerSettings();

            configuration.Bind(nameof(SwaggerSettings), swaggerSettings);
            services.AddSingleton(swaggerSettings);
            var apiSettings = new TheGameSettings();

            configuration.Bind(nameof(TheGameSettings), apiSettings);

            services.AddSwaggerGen(options => {
                options.SwaggerDoc(apiSettings.CurrentVersion, new OpenApiInfo()
                {
                    Title = apiSettings.Title, Version = apiSettings.CurrentVersion
                });
                options.ExampleFilters();

                var xmlFile = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml";
                var xmlPath = Path.Combine(AppContext.BaseDirectory, xmlFile);
                options.IncludeXmlComments(xmlPath);
            });

            services.AddSwaggerExamplesFromAssemblyOf <Startup>();

            return(services);
        }
示例#2
0
 public ViewCacheDataController(
     ITheGameCacheProvider cacheProvider,
     TheGameSettings settings,
     IMediator mediator) : base(mediator)
 {
     _cacheProvider = cacheProvider ?? throw ArgNullEx(nameof(cacheProvider));
     _settings      = settings ?? throw ArgNullEx(nameof(settings));
 }
示例#3
0
        private static void LoadCache(ITheGameCacheProvider cacheProvider, TheGameSettings settings, ILogger <IHost> logger)
        {
            var factory    = DbProviderFactories.GetFactory(settings.DataProviderName);
            var connection = factory.CreateConnection();

            connection.ConnectionString = settings.DbConnectionString;
            string sql;

            if (!cacheProvider.GetPlayersListAsync(CancellationToken.None).GetAwaiter().GetResult()?.Any() ?? true)
            {
                logger.LogInformation("Loading cache with player data. Please wait...");
                sql = $"SELECT {nameof(Player.Id)} FROM dbo.{nameof(Player)}s";
                try
                {
                    connection.Open();

                    var players = connection.Query <long>(sql);

                    cacheProvider.StorePlayersListAsync(players, null, CancellationToken.None).GetAwaiter().GetResult();
                }
                catch (Exception exc)
                {
                    logger?.LogError(exc, "Unable to load cache with player data!");
                }
                finally
                {
                    if (connection.State == ConnectionState.Open)
                    {
                        connection.Close();
                    }
                }
            }

            if (!cacheProvider.GetGamesListAsync(CancellationToken.None).GetAwaiter().GetResult()?.Any() ?? true)
            {
                logger.LogInformation("Loading cache with game data. Please wait...");
                sql = $"SELECT {nameof(Game.Id)} FROM dbo.{nameof(Game)}s";
                try
                {
                    connection.Open();

                    var games = connection.Query <long>(sql);

                    cacheProvider.StoreGamesListAsync(games, null, CancellationToken.None).GetAwaiter().GetResult();
                }
                catch (Exception exc)
                {
                    logger?.LogError(exc, "Unable to load cache with game data!");
                }
                finally
                {
                    if (connection.State == ConnectionState.Open)
                    {
                        connection.Close();
                    }
                }
            }
        }
示例#4
0
        public static IServiceCollection AddSharedKernel(this IServiceCollection services, IConfiguration configuration)
        {
            var settings = new TheGameSettings();

            configuration.Bind(nameof(TheGameSettings), settings);
            services.AddSingleton(settings);

            return(services);
        }
 public GameMatchesDataDbFlushingService(
     ILogger <GameMatchesDataDbFlushingService> logger,
     ITheGameCacheProvider cacheProvider,
     TheGameSettings settings,
     IDateTimeProvider dateTime)
 {
     _logger             = logger ?? throw ArgNullEx(nameof(logger));
     _cacheProvider      = cacheProvider ?? throw ArgNullEx(nameof(cacheProvider));
     _settings           = settings ?? throw ArgNullEx(nameof(settings));
     _dateTime           = dateTime ?? throw ArgNullEx(nameof(dateTime));
     _commandsRepository = RepositoryFactory.GetCommandsRepository(_settings);
     _queriesRepository  = RepositoryFactory.GetQueriesRepository(settings);
 }
示例#6
0
 public TheGameCommandsRepository(
     TheGameSettings settings)
 {
     _settings = settings ?? throw ArgNullEx(nameof(settings));
 }
示例#7
0
 public TheGameCacheProvider(IMemoryCache memoryCache, TheGameSettings settings) : base(memoryCache)
 {
     _settings = settings ?? throw ArgNullEx(nameof(settings));
 }
 public static ITheGameCommandsRepository GetCommandsRepository(TheGameSettings settings)
 => new TheGameCommandsRepository(settings);
 public static ITheGameQueriesRepository GetQueriesRepository(TheGameSettings settings)
 => new TheGameQueriesRepository(settings);
示例#10
0
 public LeaderboardsController(
     IMediator mediator,
     TheGameSettings settings) : base(mediator)
 {
     _settings = settings ?? throw ArgNullEx(nameof(settings));
 }