From 233c19a3e2481851dc2f0a949468f9e7dae33ec1 Mon Sep 17 00:00:00 2001 From: Sebastian Stehle Date: Tue, 29 Oct 2019 21:58:11 +0100 Subject: [PATCH] Demonstrate custom middleware. --- .../AssetStore/MemoryAssetStorePlugin.cs | 33 +++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) diff --git a/backend/extensions/Squidex.Extensions/Samples/AssetStore/MemoryAssetStorePlugin.cs b/backend/extensions/Squidex.Extensions/Samples/AssetStore/MemoryAssetStorePlugin.cs index 6a24ef16c..41f6e9b61 100644 --- a/backend/extensions/Squidex.Extensions/Samples/AssetStore/MemoryAssetStorePlugin.cs +++ b/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 Configure(Action 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("assetStore:type"); - if (string.Equals(storeType, "Memory", StringComparison.OrdinalIgnoreCase)) + var isMemoryAssetsUsed = string.Equals(storeType, "Memory", StringComparison.OrdinalIgnoreCase); + + if (isMemoryAssetsUsed) { + services.AddSingleton(this); + services.AddSingletonAs() .As(); }