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 MongoDB.Driver;
using Squidex.Domain.Apps.Read.Apps; using Squidex.Domain.Apps.Read.Apps;
using Squidex.Domain.Apps.Read.Apps.Repositories; using Squidex.Domain.Apps.Read.Apps.Repositories;
using Squidex.Infrastructure.CQRS.Events;
using Squidex.Infrastructure.MongoDb; using Squidex.Infrastructure.MongoDb;
namespace Squidex.Domain.Apps.Read.MongoDb.Apps 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 MongoDB.Driver;
using Squidex.Domain.Apps.Read.Assets; using Squidex.Domain.Apps.Read.Assets;
using Squidex.Domain.Apps.Read.Assets.Repositories; using Squidex.Domain.Apps.Read.Assets.Repositories;
using Squidex.Infrastructure.CQRS.Events;
using Squidex.Infrastructure.MongoDb; using Squidex.Infrastructure.MongoDb;
namespace Squidex.Domain.Apps.Read.MongoDb.Assets 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;
using Squidex.Domain.Apps.Read.Assets.Repositories; using Squidex.Domain.Apps.Read.Assets.Repositories;
using Squidex.Infrastructure; using Squidex.Infrastructure;
using Squidex.Infrastructure.CQRS.Events;
using Squidex.Infrastructure.MongoDb; using Squidex.Infrastructure.MongoDb;
namespace Squidex.Domain.Apps.Read.MongoDb.Assets 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;
using Squidex.Domain.Apps.Read.Schemas.Repositories; using Squidex.Domain.Apps.Read.Schemas.Repositories;
using Squidex.Infrastructure; using Squidex.Infrastructure;
using Squidex.Infrastructure.CQRS.Events;
using Squidex.Infrastructure.MongoDb; using Squidex.Infrastructure.MongoDb;
namespace Squidex.Domain.Apps.Read.MongoDb.Schemas namespace Squidex.Domain.Apps.Read.MongoDb.Schemas

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

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

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

@ -6,17 +6,18 @@
// All rights reserved. // All rights reserved.
// ========================================================================== // ==========================================================================
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
namespace Squidex.Infrastructure.Log.Adapter namespace Squidex.Infrastructure.Log.Adapter
{ {
public static class SemanticLogLoggerFactoryExtensions 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) public SemanticLogLoggerProvider(ISemanticLog semanticLog)
{ {
Guard.NotNull(semanticLog, nameof(semanticLog));
this.semanticLog = 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 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()) 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'."); 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"); var enabled = child.GetValue<bool>("enabled");

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

@ -28,11 +28,11 @@ namespace Squidex.Config.Identity
return services; 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 apiScope = Constants.ApiScope;
var urlsOptions = configuration.GetSection("urls").Get<MyUrlsOptions>(); var urlsOptions = config.GetSection("urls").Get<MyUrlsOptions>();
if (!string.IsNullOrWhiteSpace(urlsOptions.BaseUrl)) 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 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"); var dataProtection = services.AddDataProtection().SetApplicationName("Squidex");
configuration.ConfigureByOption("identity:keysStore:type", new Options config.ConfigureByOption("identity:keysStore:type", new Options
{ {
["Redis"] = () => ["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)); var connectionMultiplexer = Singletons<ConnectionMultiplexer>.GetOrAdd(redisConfiguration, s => ConnectionMultiplexer.Connect(s));
@ -33,7 +33,7 @@ namespace Squidex.Config.Identity
}, },
["Folder"] = () => ["Folder"] = () =>
{ {
var folderPath = configuration.GetRequiredValue("identity:keysStore:folder:path"); var folderPath = config.GetRequiredValue("identity:keysStore:folder:path");
dataProtection.PersistKeysToFileSystem(new DirectoryInfo(folderPath)); dataProtection.PersistKeysToFileSystem(new DirectoryInfo(folderPath));
}, },

19
src/Squidex/Program.cs

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

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

@ -1,5 +1,5 @@
// ========================================================================== // ==========================================================================
// Startup.cs // WebApp.cs
// Squidex Headless CMS // Squidex Headless CMS
// ========================================================================== // ==========================================================================
// Copyright (c) Squidex Group // Copyright (c) Squidex Group
@ -13,20 +13,18 @@ using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Squidex.Config; using Squidex.Config;
using Squidex.Config.Domain; using Squidex.Config.Domain;
using Squidex.Config.Identity; using Squidex.Config.Identity;
using Squidex.Config.Swagger; using Squidex.Config.Swagger;
using Squidex.Config.Web; using Squidex.Config.Web;
using Squidex.Infrastructure.Log; using Squidex.Infrastructure.Log;
using Squidex.Infrastructure.Log.Adapter;
#pragma warning disable RECS0002 // Convert anonymous method to method group #pragma warning disable RECS0002 // Convert anonymous method to method group
namespace Squidex namespace Squidex
{ {
public class Startup public static class WebApp
{ {
private static readonly string[] IdentityServerPaths = private static readonly string[] IdentityServerPaths =
{ {
@ -36,52 +34,9 @@ namespace Squidex
"/error" "/error"
}; };
private IConfiguration Configuration { get; } public static void ConfigureApp(this IApplicationBuilder app)
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)
{ {
loggerFactory.AddSemanticLog(app.ApplicationServices.GetRequiredService<ISemanticLog>()); var env = app.ApplicationServices.GetRequiredService<IHostingEnvironment>();
app.TestExternalSystems(); app.TestExternalSystems();
@ -89,30 +44,32 @@ namespace Squidex
app.UseMyForwardingRules(); app.UseMyForwardingRules();
app.UseMyTracking(); app.UseMyTracking();
MapAndUseIdentity(app); app.MapAndUseIdentityServer(env);
MapAndUseApi(app); app.MapAndUseApi(env);
MapAndUseFrontend(app); app.MapAndUseFrontend(env);
app.UseMyEventStore();
var log = app.ApplicationServices.GetRequiredService<ISemanticLog>(); var log = app.ApplicationServices.GetRequiredService<ISemanticLog>();
var config = app.ApplicationServices.GetRequiredService<IConfiguration>();
log.LogInformation(w => w log.LogInformation(w => w
.WriteProperty("message", "Application started") .WriteProperty("message", "Application started")
.WriteObject("environment", c => .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); 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 => app.Map(Constants.IdentityPrefix, identityApp =>
{ {
if (Environment.IsDevelopment()) if (env.IsDevelopment())
{ {
identityApp.UseDeveloperExceptionPage(); identityApp.UseDeveloperExceptionPage();
} }
@ -127,18 +84,18 @@ namespace Squidex
identityApp.UseMyAdmin(); identityApp.UseMyAdmin();
identityApp.UseStaticFiles(); identityApp.UseStaticFiles();
identityApp.MapWhen(x => IsIdentityRequest(x), mvcApp => identityApp.MapWhen(IsIdentityRequest, mvcApp =>
{ {
mvcApp.UseMvc(); mvcApp.UseMvc();
}); });
}); });
} }
private void MapAndUseApi(IApplicationBuilder app) private static void MapAndUseApi(this IApplicationBuilder app, IHostingEnvironment env)
{ {
app.Map(Constants.ApiPrefix, appApi => app.Map(Constants.ApiPrefix, appApi =>
{ {
if (Environment.IsDevelopment()) if (env.IsDevelopment())
{ {
appApi.UseDeveloperExceptionPage(); 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(); app.UseWebpackProxy();
Loading…
Cancel
Save