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 Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Squidex.Infrastructure.Assets;
@ -13,14 +16,40 @@ using Squidex.Infrastructure.Plugins;
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)
{
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>()
.As<IAssetStore>();
}

Loading…
Cancel
Save