public SearchEngineTests() { MessageLogger = new EventMessageLogger <SearchEngineTests>(); MessageLogger.Messages += MessageLogger_Messages; var settings = new RoadieSettings(); IConfigurationBuilder configurationBuilder = new ConfigurationBuilder(); configurationBuilder.AddJsonFile("appsettings.test.json"); IConfiguration configuration = configurationBuilder.Build(); configuration.GetSection("RoadieSettings").Bind(settings); Configuration = settings; CacheManager = new DictionaryCacheManager(Logger, new CachePolicy(TimeSpan.FromHours(4))); HttpEncoder = new Encoding.DummyHttpEncoder(); }
public ID3TagsHelperTests() { this.MessageLogger = new EventMessageLogger(); this.MessageLogger.Messages += MessageLogger_Messages; var settings = new RoadieSettings(); IConfigurationBuilder configurationBuilder = new ConfigurationBuilder(); configurationBuilder.AddJsonFile("appsettings.test.json"); IConfiguration configuration = configurationBuilder.Build(); configuration.GetSection("RoadieSettings").Bind(settings); settings.ConnectionString = configuration.GetConnectionString("RoadieDatabaseConnection"); this.Configuration = settings; this.CacheManager = new DictionaryCacheManager(this.Logger, new CachePolicy(TimeSpan.FromHours(4))); this.TagsHelper = new ID3TagsHelper(this.Configuration, this.CacheManager, this.Logger); }
public Inspector() { Console.WriteLine("Roadie Media Inspector"); MessageLogger = new EventMessageLogger(); MessageLogger.Messages += MessageLogger_Messages; var settings = new RoadieSettings(); IConfigurationBuilder configurationBuilder = new ConfigurationBuilder(); configurationBuilder.AddJsonFile("appsettings.json", false); IConfiguration configuration = configurationBuilder.Build(); configuration.GetSection("RoadieSettings").Bind(settings); settings.ConnectionString = configuration.GetConnectionString("RoadieDatabaseConnection"); Configuration = settings; CacheManager = new DictionaryCacheManager(Logger, new CachePolicy(TimeSpan.FromHours(4))); TagsHelper = new ID3TagsHelper(Configuration, CacheManager, Logger); }
public MemorySessionDao() { CacheManager = new DictionaryCacheManager(); }
// This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { services.AddSingleton <ITokenService, TokenService>(); services.AddSingleton <IHttpEncoder, HttpEncoder>(); services.AddSingleton <IEmailSender, EmailSenderService>(); var cacheManager = new DictionaryCacheManager(this._loggerFactory.CreateLogger <DictionaryCacheManager>(), new CachePolicy(TimeSpan.FromHours(4))); services.AddSingleton <ICacheManager>(cacheManager); services.AddDbContextPool <ApplicationUserDbContext>( options => options.UseMySql(this._configuration.GetConnectionString("RoadieDatabaseConnection"), mySqlOptions => { mySqlOptions.ServerVersion(new Version(5, 5), Pomelo.EntityFrameworkCore.MySql.Infrastructure.ServerType.MariaDb); mySqlOptions.EnableRetryOnFailure( maxRetryCount: 10, maxRetryDelay: TimeSpan.FromSeconds(30), errorNumbersToAdd: null); } )); services.AddDbContextPool <IRoadieDbContext, RoadieDbContext>( options => options.UseMySql(this._configuration.GetConnectionString("RoadieDatabaseConnection"), mySqlOptions => { mySqlOptions.ServerVersion(new Version(5, 5), Pomelo.EntityFrameworkCore.MySql.Infrastructure.ServerType.MariaDb); mySqlOptions.EnableRetryOnFailure( maxRetryCount: 10, maxRetryDelay: TimeSpan.FromSeconds(30), errorNumbersToAdd: null); } )); services.AddIdentity <ApplicationUser, ApplicationRole>() .AddRoles <ApplicationRole>() .AddEntityFrameworkStores <ApplicationUserDbContext>() .AddDefaultTokenProviders(); services.AddAuthorization(options => { options.AddPolicy("Admin", policy => policy.RequireRole("Admin")); options.AddPolicy("Editor", policy => policy.RequireRole("Admin", "Editor")); }); services.Configure <IConfiguration>(this._configuration); var corsOrigins = (this._configuration["CORSOrigins"] ?? "http://localhost:8080").Split('|'); this.Logger.LogDebug("Setting Up CORS Policy [{0}]", string.Join(", ", corsOrigins)); services.AddCors(options => options.AddPolicy("CORSPolicy", builder => { builder .WithOrigins(corsOrigins) .AllowAnyHeader() .AllowAnyMethod() .AllowCredentials(); })); services.AddSingleton <IRoadieSettings, RoadieSettings>(ctx => { var settings = new RoadieSettings(); var configuration = ctx.GetService <IConfiguration>(); configuration.GetSection("RoadieSettings").Bind(settings); var hostingEnvironment = ctx.GetService <IHostingEnvironment>(); settings.ContentPath = hostingEnvironment.WebRootPath; settings.ConnectionString = this._configuration.GetConnectionString("RoadieDatabaseConnection"); // This is so 'User Secrets' can be used in Debugging var integrationKeys = this._configuration.GetSection("IntegrationKeys") .Get <IntegrationKey>(); if (integrationKeys != null) { settings.Integrations.ApiKeys = new System.Collections.Generic.List <ApiKey> { new ApiKey { ApiName = "LastFMApiKey", Key = integrationKeys.LastFMApiKey, KeySecret = integrationKeys.LastFMSecret }, new ApiKey { ApiName = "DiscogsConsumerKey", Key = integrationKeys.DiscogsConsumerKey, KeySecret = integrationKeys.DiscogsConsumerSecret }, new ApiKey { ApiName = "BingImageSearch", Key = integrationKeys.BingImageSearch } }; } return(settings); }); services.AddSingleton <IActionContextAccessor, ActionContextAccessor>(); services.AddSingleton <IDefaultNotFoundImages, DefaultNotFoundImages>(); services.AddScoped <IStatisticsService, StatisticsService>(); services.AddScoped <ICollectionService, CollectionService>(); services.AddScoped <IPlaylistService, PlaylistService>(); services.AddScoped <IBookmarkService, BookmarkService>(); services.AddScoped <IArtistService, ArtistService>(); services.AddScoped <IImageService, ImageService>(); services.AddScoped <IReleaseService, ReleaseService>(); services.AddScoped <ITrackService, TrackService>(); services.AddScoped <ILabelService, LabelService>(); services.AddScoped <IPlaylistService, PlaylistService>(); services.AddScoped <IPlayActivityService, PlayActivityService>(); services.AddScoped <IGenreService, GenreService>(); services.AddScoped <ISubsonicService, SubsonicService>(); services.AddScoped <IUserService, UserService>(); services.AddScoped <IAdminService, AdminService>(); services.AddScoped <ILookupService, LookupService>(); var securityKey = new SymmetricSecurityKey(System.Text.Encoding.Default.GetBytes(this._configuration["Tokens:PrivateKey"])); services.AddAuthentication(options => { options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme; options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme; }).AddJwtBearer(config => { config.RequireHttpsMetadata = false; config.SaveToken = true; config.TokenValidationParameters = new TokenValidationParameters() { IssuerSigningKey = securityKey, ValidateAudience = true, ValidAudience = this._configuration["Tokens:Audience"], ValidateIssuer = true, ValidIssuer = this._configuration["Tokens:Issuer"], ValidateLifetime = true, ValidateIssuerSigningKey = true }; }); //services.AddSwaggerGen(c => //{ // c.SwaggerDoc("v1", new Info // { // Title = "Roadie API", // Version = "v1" // }); //}); services.AddSignalR(); services.AddMvc(options => { options.RespectBrowserAcceptHeader = true; // false by default options.ModelBinderProviders.Insert(0, new SubsonicRequestBinderProvider()); }) .AddJsonOptions(options => { options.SerializerSettings.NullValueHandling = NullValueHandling.Ignore; options.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore; }) .AddXmlSerializerFormatters() .SetCompatibilityVersion(CompatibilityVersion.Latest); services.Configure <IdentityOptions>(options => { options.Password.RequireDigit = true; options.Password.RequireLowercase = true; options.Password.RequireNonAlphanumeric = true; options.Password.RequireUppercase = true; options.Password.RequiredLength = 6; options.Password.RequiredUniqueChars = 1; }); services.AddHttpContextAccessor(); services.AddScoped <IHttpContext>(factory => { var actionContext = factory.GetService <IActionContextAccessor>() .ActionContext; return(new HttpContext(factory.GetService <IRoadieSettings>(), new UrlHelper(actionContext))); }); }