Browse Source

Demonstrate custom middleware.

pull/443/head
Sebastian Stehle 6 years ago
parent
commit
233c19a3e2
  1. 33
      backend/extensions/Squidex.Extensions/Samples/AssetStore/MemoryAssetStorePlugin.cs

33
backend/extensions/Squidex.Extensions/Samples/AssetStore/MemoryAssetStorePlugin.cs

@ -6,6 +6,9 @@
// ========================================================================== // ==========================================================================
using System; using System;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Squidex.Infrastructure.Assets; using Squidex.Infrastructure.Assets;
@ -13,14 +16,40 @@ using Squidex.Infrastructure.Plugins;
namespace Squidex.Extensions.Samples.AssetStore namespace Squidex.Extensions.Samples.AssetStore
{ {
public sealed class MemoryAssetStorePlugin : IPlugin public sealed class MemoryAssetStorePlugin : IPlugin, IStartupFilter
{ {
public Action<IApplicationBuilder> Configure(Action<IApplicationBuilder> next)
{
return builder =>
{
builder.Use(async (context, next) =>
{
if (context.Request.Path.StartsWithSegments("/api/assets/memory"))
{
context.Response.StatusCode = 200;
await context.Response.WriteAsync("Memory Asset Store used.");
}
else
{
await next();
}
});
next(builder);
};
}
public void ConfigureServices(IServiceCollection services, IConfiguration config) public void ConfigureServices(IServiceCollection services, IConfiguration config)
{ {
var storeType = config.GetValue<string>("assetStore:type"); var storeType = config.GetValue<string>("assetStore:type");
if (string.Equals(storeType, "Memory", StringComparison.OrdinalIgnoreCase)) var isMemoryAssetsUsed = string.Equals(storeType, "Memory", StringComparison.OrdinalIgnoreCase);
if (isMemoryAssetsUsed)
{ {
services.AddSingleton<IStartupFilter>(this);
services.AddSingletonAs<MemoryAssetStore>() services.AddSingletonAs<MemoryAssetStore>()
.As<IAssetStore>(); .As<IAssetStore>();
} }

Loading…
Cancel
Save