Browse Source

Code cleanup.

pull/170/head
Sebastian Stehle 9 years ago
parent
commit
d8351a6704
  1. 1
      src/Squidex.Domain.Apps.Read.MongoDb/Apps/MongoAppRepository.cs
  2. 1
      src/Squidex.Domain.Apps.Read.MongoDb/Assets/MongoAssetRepository.cs
  3. 1
      src/Squidex.Domain.Apps.Read.MongoDb/Assets/MongoAssetStatsRepository.cs
  4. 1
      src/Squidex.Domain.Apps.Read.MongoDb/Schemas/MongoSchemaRepository.cs
  5. 1
      src/Squidex.Infrastructure/CQRS/Events/CompoundEventConsumer.cs
  6. 7
      src/Squidex.Infrastructure/Log/Adapter/SemanticLogLoggerFactoryExtensions.cs
  7. 2
      src/Squidex.Infrastructure/Log/Adapter/SemanticLogLoggerProvider.cs
  8. 24
      src/Squidex/AppConfiguration.cs
  9. 53
      src/Squidex/AppServices.cs
  10. 6
      src/Squidex/Config/Domain/EventPublishersServices.cs
  11. 4
      src/Squidex/Config/Identity/AuthenticationServices.cs
  12. 8
      src/Squidex/Config/Identity/IdentityServices.cs
  13. 19
      src/Squidex/Program.cs
  14. 81
      src/Squidex/WebApp.cs

1
src/Squidex.Domain.Apps.Read.MongoDb/Apps/MongoAppRepository.cs

@ -13,7 +13,6 @@ using System.Threading.Tasks;
using MongoDB.Driver;
using Squidex.Domain.Apps.Read.Apps;
using Squidex.Domain.Apps.Read.Apps.Repositories;
using Squidex.Infrastructure.CQRS.Events;
using Squidex.Infrastructure.MongoDb;
namespace Squidex.Domain.Apps.Read.MongoDb.Apps

1
src/Squidex.Domain.Apps.Read.MongoDb/Assets/MongoAssetRepository.cs

@ -14,7 +14,6 @@ using MongoDB.Bson;
using MongoDB.Driver;
using Squidex.Domain.Apps.Read.Assets;
using Squidex.Domain.Apps.Read.Assets.Repositories;
using Squidex.Infrastructure.CQRS.Events;
using Squidex.Infrastructure.MongoDb;
namespace Squidex.Domain.Apps.Read.MongoDb.Assets

1
src/Squidex.Domain.Apps.Read.MongoDb/Assets/MongoAssetStatsRepository.cs

@ -14,7 +14,6 @@ using MongoDB.Driver;
using Squidex.Domain.Apps.Read.Assets;
using Squidex.Domain.Apps.Read.Assets.Repositories;
using Squidex.Infrastructure;
using Squidex.Infrastructure.CQRS.Events;
using Squidex.Infrastructure.MongoDb;
namespace Squidex.Domain.Apps.Read.MongoDb.Assets

1
src/Squidex.Domain.Apps.Read.MongoDb/Schemas/MongoSchemaRepository.cs

@ -15,7 +15,6 @@ using Squidex.Domain.Apps.Core.Schemas;
using Squidex.Domain.Apps.Read.Schemas;
using Squidex.Domain.Apps.Read.Schemas.Repositories;
using Squidex.Infrastructure;
using Squidex.Infrastructure.CQRS.Events;
using Squidex.Infrastructure.MongoDb;
namespace Squidex.Domain.Apps.Read.MongoDb.Schemas

1
src/Squidex.Infrastructure/CQRS/Events/CompoundEventConsumer.cs

@ -6,7 +6,6 @@
// All rights reserved.
// ==========================================================================
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

7
src/Squidex.Infrastructure/Log/Adapter/SemanticLogLoggerFactoryExtensions.cs

@ -6,17 +6,18 @@
// All rights reserved.
// ==========================================================================
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
namespace Squidex.Infrastructure.Log.Adapter
{
public static class SemanticLogLoggerFactoryExtensions
{
public static ILoggerFactory AddSemanticLog(this ILoggerFactory factory, ISemanticLog semanticLog)
public static ILoggingBuilder AddSemanticLog(this ILoggingBuilder builder)
{
factory.AddProvider(new SemanticLogLoggerProvider(semanticLog));
builder.Services.AddSingleton<ILoggerProvider, SemanticLogLoggerProvider>();
return factory;
return builder;
}
}
}

2
src/Squidex.Infrastructure/Log/Adapter/SemanticLogLoggerProvider.cs

@ -16,6 +16,8 @@ namespace Squidex.Infrastructure.Log.Adapter
public SemanticLogLoggerProvider(ISemanticLog semanticLog)
{
Guard.NotNull(semanticLog, nameof(semanticLog));
this.semanticLog = semanticLog;
}

24
src/Squidex/AppConfiguration.cs

@ -0,0 +1,24 @@
// ==========================================================================
// AppConfiguration.cs
// Squidex Headless CMS
// ==========================================================================
// Copyright (c) Squidex Group
// All rights reserved.
// ==========================================================================
using Microsoft.Extensions.Configuration;
namespace Squidex
{
public static class AppConfiguration
{
public static void AddAppConfiguration(this IConfigurationBuilder builder, string environmentName, string[] args)
{
builder.Sources.Clear();
builder.AddJsonFile("appsettings.json", true, true);
builder.AddJsonFile($"appsettings.{environmentName}.json", true);
builder.AddEnvironmentVariables();
builder.AddCommandLine(args);
}
}
}

53
src/Squidex/AppServices.cs

@ -0,0 +1,53 @@
// ==========================================================================
// Services.cs
// Squidex Headless CMS
// ==========================================================================
// Copyright (c) Squidex Group
// All rights reserved.
// ==========================================================================
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Squidex.Config;
using Squidex.Config.Domain;
using Squidex.Config.Identity;
using Squidex.Config.Swagger;
using Squidex.Config.Web;
namespace Squidex
{
public static class AppServices
{
public static void AddAppServices(this IServiceCollection services, IConfiguration config)
{
services.AddLogging();
services.AddMemoryCache();
services.AddOptions();
services.AddMyAssetServices(config);
services.AddMyAuthentication(config);
services.AddMyDataProtectection(config);
services.AddMyEventPublishersServices(config);
services.AddMyEventStoreServices(config);
services.AddMyIdentity();
services.AddMyIdentityServer();
services.AddMyInfrastructureServices(config);
services.AddMyMvc();
services.AddMyPubSubServices(config);
services.AddMyReadServices(config);
services.AddMySerializers();
services.AddMyStoreServices(config);
services.AddMySwaggerSettings();
services.AddMyWriteServices();
services.Configure<MyUrlsOptions>(
config.GetSection("urls"));
services.Configure<MyIdentityOptions>(
config.GetSection("identity"));
services.Configure<MyUIOptions>(
config.GetSection("ui"));
services.Configure<MyUsageOptions>(
config.GetSection("usage"));
}
}
}

6
src/Squidex/Config/Domain/EventPublishersServices.cs

@ -17,9 +17,9 @@ namespace Squidex.Config.Domain
{
public static class EventPublishersServices
{
public static void AddMyEventPublishersServices(this IServiceCollection services, IConfiguration configuration)
public static void AddMyEventPublishersServices(this IServiceCollection services, IConfiguration config)
{
var eventPublishers = configuration.GetSection("eventPublishers");
var eventPublishers = config.GetSection("eventPublishers");
foreach (var child in eventPublishers.GetChildren())
{
@ -30,7 +30,7 @@ namespace Squidex.Config.Domain
throw new ConfigurationException($"Configure EventPublisher type with 'eventPublishers:{child.Key}:type'.");
}
var eventsFilter = configuration.GetValue<string>("eventsFilter");
var eventsFilter = config.GetValue<string>("eventsFilter");
var enabled = child.GetValue<bool>("enabled");

4
src/Squidex/Config/Identity/AuthenticationServices.cs

@ -28,11 +28,11 @@ namespace Squidex.Config.Identity
return services;
}
public static AuthenticationBuilder AddMyApiProtection(this AuthenticationBuilder authBuilder, MyIdentityOptions identityOptions, IConfiguration configuration)
public static AuthenticationBuilder AddMyApiProtection(this AuthenticationBuilder authBuilder, MyIdentityOptions identityOptions, IConfiguration config)
{
var apiScope = Constants.ApiScope;
var urlsOptions = configuration.GetSection("urls").Get<MyUrlsOptions>();
var urlsOptions = config.GetSection("urls").Get<MyUrlsOptions>();
if (!string.IsNullOrWhiteSpace(urlsOptions.BaseUrl))
{

8
src/Squidex/Config/Identity/IdentityServices.cs

@ -17,15 +17,15 @@ namespace Squidex.Config.Identity
{
public static class IdentityServices
{
public static IServiceCollection AddMyDataProtectection(this IServiceCollection services, IConfiguration configuration)
public static IServiceCollection AddMyDataProtectection(this IServiceCollection services, IConfiguration config)
{
var dataProtection = services.AddDataProtection().SetApplicationName("Squidex");
configuration.ConfigureByOption("identity:keysStore:type", new Options
config.ConfigureByOption("identity:keysStore:type", new Options
{
["Redis"] = () =>
{
var redisConfiguration = configuration.GetRequiredValue("identity:keysStore:redis:configuration");
var redisConfiguration = config.GetRequiredValue("identity:keysStore:redis:configuration");
var connectionMultiplexer = Singletons<ConnectionMultiplexer>.GetOrAdd(redisConfiguration, s => ConnectionMultiplexer.Connect(s));
@ -33,7 +33,7 @@ namespace Squidex.Config.Identity
},
["Folder"] = () =>
{
var folderPath = configuration.GetRequiredValue("identity:keysStore:folder:path");
var folderPath = config.GetRequiredValue("identity:keysStore:folder:path");
dataProtection.PersistKeysToFileSystem(new DirectoryInfo(folderPath));
},

19
src/Squidex/Program.cs

@ -8,7 +8,7 @@
using System.IO;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Squidex.Infrastructure.Log.Adapter;
namespace Squidex
{
@ -20,14 +20,17 @@ namespace Squidex
.UseKestrel(k => { k.AddServerHeader = false; })
.UseContentRoot(Directory.GetCurrentDirectory())
.UseIISIntegration()
.UseStartup<Startup>()
.ConfigureAppConfiguration((hostContext, options) =>
.ConfigureLogging(builder =>
{
options.Sources.Clear();
options.AddJsonFile("appsettings.json", true, true);
options.AddJsonFile($"appsettings.{hostContext.HostingEnvironment.EnvironmentName}.json", true);
options.AddEnvironmentVariables();
options.AddCommandLine(args);
builder.AddSemanticLog();
})
.ConfigureAppConfiguration((hostContext, builder) =>
{
builder.AddAppConfiguration(hostContext.HostingEnvironment.EnvironmentName, args);
})
.ConfigureServices((context, services) =>
{
services.AddAppServices(context.Configuration);
})
.Build()
.Run();

81
src/Squidex/Startup.cs → src/Squidex/WebApp.cs

@ -1,5 +1,5 @@
// ==========================================================================
// Startup.cs
// WebApp.cs
// Squidex Headless CMS
// ==========================================================================
// Copyright (c) Squidex Group
@ -13,20 +13,18 @@ using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Squidex.Config;
using Squidex.Config.Domain;
using Squidex.Config.Identity;
using Squidex.Config.Swagger;
using Squidex.Config.Web;
using Squidex.Infrastructure.Log;
using Squidex.Infrastructure.Log.Adapter;
#pragma warning disable RECS0002 // Convert anonymous method to method group
namespace Squidex
{
public class Startup
public static class WebApp
{
private static readonly string[] IdentityServerPaths =
{
@ -36,52 +34,9 @@ namespace Squidex
"/error"
};
private IConfiguration Configuration { get; }
private IHostingEnvironment Environment { get; }
public Startup(IHostingEnvironment env, IConfiguration config)
{
Environment = env;
Configuration = config;
}
public void ConfigureServices(IServiceCollection services)
{
services.AddLogging();
services.AddMemoryCache();
services.AddOptions();
services.AddMyAssetServices(Configuration);
services.AddMyAuthentication(Configuration);
services.AddMyDataProtectection(Configuration);
services.AddMyEventPublishersServices(Configuration);
services.AddMyEventStoreServices(Configuration);
services.AddMyIdentity();
services.AddMyIdentityServer();
services.AddMyInfrastructureServices(Configuration);
services.AddMyMvc();
services.AddMyPubSubServices(Configuration);
services.AddMyReadServices(Configuration);
services.AddMySerializers();
services.AddMyStoreServices(Configuration);
services.AddMySwaggerSettings();
services.AddMyWriteServices();
services.Configure<MyUrlsOptions>(
Configuration.GetSection("urls"));
services.Configure<MyIdentityOptions>(
Configuration.GetSection("identity"));
services.Configure<MyUIOptions>(
Configuration.GetSection("ui"));
services.Configure<MyUsageOptions>(
Configuration.GetSection("usage"));
}
public void Configure(IApplicationBuilder app, ILoggerFactory loggerFactory)
public static void ConfigureApp(this IApplicationBuilder app)
{
loggerFactory.AddSemanticLog(app.ApplicationServices.GetRequiredService<ISemanticLog>());
var env = app.ApplicationServices.GetRequiredService<IHostingEnvironment>();
app.TestExternalSystems();
@ -89,30 +44,32 @@ namespace Squidex
app.UseMyForwardingRules();
app.UseMyTracking();
MapAndUseIdentity(app);
MapAndUseApi(app);
MapAndUseFrontend(app);
app.UseMyEventStore();
app.MapAndUseIdentityServer(env);
app.MapAndUseApi(env);
app.MapAndUseFrontend(env);
var log = app.ApplicationServices.GetRequiredService<ISemanticLog>();
var config = app.ApplicationServices.GetRequiredService<IConfiguration>();
log.LogInformation(w => w
.WriteProperty("message", "Application started")
.WriteObject("environment", c =>
{
foreach (var kvp in Configuration.AsEnumerable().Where(kvp => kvp.Value != null))
foreach (var kvp in config.AsEnumerable().Where(kvp => kvp.Value != null))
{
c.WriteProperty(kvp.Key, kvp.Value);
}
}));
app.UseMyEventStore();
}
private void MapAndUseIdentity(IApplicationBuilder app)
private static void MapAndUseIdentityServer(this IApplicationBuilder app, IHostingEnvironment env)
{
app.Map(Constants.IdentityPrefix, identityApp =>
{
if (Environment.IsDevelopment())
if (env.IsDevelopment())
{
identityApp.UseDeveloperExceptionPage();
}
@ -127,18 +84,18 @@ namespace Squidex
identityApp.UseMyAdmin();
identityApp.UseStaticFiles();
identityApp.MapWhen(x => IsIdentityRequest(x), mvcApp =>
identityApp.MapWhen(IsIdentityRequest, mvcApp =>
{
mvcApp.UseMvc();
});
});
}
private void MapAndUseApi(IApplicationBuilder app)
private static void MapAndUseApi(this IApplicationBuilder app, IHostingEnvironment env)
{
app.Map(Constants.ApiPrefix, appApi =>
{
if (Environment.IsDevelopment())
if (env.IsDevelopment())
{
appApi.UseDeveloperExceptionPage();
}
@ -152,9 +109,9 @@ namespace Squidex
});
}
private void MapAndUseFrontend(IApplicationBuilder app)
private static void MapAndUseFrontend(this IApplicationBuilder app, IHostingEnvironment env)
{
if (Environment.IsDevelopment())
if (env.IsDevelopment())
{
app.UseWebpackProxy();
Loading…
Cancel
Save