From c074a4d7d4b3ad52841b9e3d6235bb12b04f124d Mon Sep 17 00:00:00 2001 From: Shannon Date: Tue, 22 Dec 2020 13:32:12 +1100 Subject: [PATCH] IsFrontEndUmbracoRequest as ext method instead, makes IUmbracoContext IDisposable since it has a Dispose method --- src/Umbraco.Core/UmbracoContextAccessorExtensions.cs | 1 + src/Umbraco.Core/UmbracoContextExtensions.cs | 12 ++++++++++++ src/Umbraco.Core/Web/IUmbracoContext.cs | 8 +------- .../Middleware/UmbracoRequestMiddleware.cs | 6 ++++-- .../UmbracoContext/UmbracoContext.cs | 5 ----- src/Umbraco.Web/Runtime/WebInitialComposer.cs | 2 +- src/Umbraco.Web/UmbracoContext.cs | 8 ++------ 7 files changed, 21 insertions(+), 21 deletions(-) create mode 100644 src/Umbraco.Core/UmbracoContextExtensions.cs diff --git a/src/Umbraco.Core/UmbracoContextAccessorExtensions.cs b/src/Umbraco.Core/UmbracoContextAccessorExtensions.cs index 74e2dd7380..a8521762c6 100644 --- a/src/Umbraco.Core/UmbracoContextAccessorExtensions.cs +++ b/src/Umbraco.Core/UmbracoContextAccessorExtensions.cs @@ -3,6 +3,7 @@ using Umbraco.Web; namespace Umbraco.Core { + public static class UmbracoContextAccessorExtensions { public static IUmbracoContext GetRequiredUmbracoContext(this IUmbracoContextAccessor umbracoContextAccessor) diff --git a/src/Umbraco.Core/UmbracoContextExtensions.cs b/src/Umbraco.Core/UmbracoContextExtensions.cs new file mode 100644 index 0000000000..06ae2aa497 --- /dev/null +++ b/src/Umbraco.Core/UmbracoContextExtensions.cs @@ -0,0 +1,12 @@ +using Umbraco.Web; + +namespace Umbraco.Core +{ + public static class UmbracoContextExtensions + { + /// + /// Boolean value indicating whether the current request is a front-end umbraco request + /// + public static bool IsFrontEndUmbracoRequest(this IUmbracoContext umbracoContext) => umbracoContext.PublishedRequest != null; + } +} diff --git a/src/Umbraco.Core/Web/IUmbracoContext.cs b/src/Umbraco.Core/Web/IUmbracoContext.cs index 7fa02e3b73..c034997d7e 100644 --- a/src/Umbraco.Core/Web/IUmbracoContext.cs +++ b/src/Umbraco.Core/Web/IUmbracoContext.cs @@ -6,7 +6,7 @@ using Umbraco.Web.Routing; namespace Umbraco.Web { - public interface IUmbracoContext + public interface IUmbracoContext : IDisposable { /// /// This is used internally for performance calculations, the ObjectCreated DateTime is set as soon as this @@ -46,11 +46,6 @@ namespace Umbraco.Web /// IDomainCache Domains { get; } - /// - /// Boolean value indicating whether the current request is a front-end umbraco request - /// - bool IsFrontEndUmbracoRequest { get; } // TODO: This could easily be an ext method and mocking just means setting the published request to null - /// /// Gets/sets the PublishedRequest object /// @@ -74,6 +69,5 @@ namespace Umbraco.Web bool InPreviewMode { get; } IDisposable ForcedPreview(bool preview); - void Dispose(); } } diff --git a/src/Umbraco.Web.Common/Middleware/UmbracoRequestMiddleware.cs b/src/Umbraco.Web.Common/Middleware/UmbracoRequestMiddleware.cs index 35cd2250cb..0474f2445c 100644 --- a/src/Umbraco.Web.Common/Middleware/UmbracoRequestMiddleware.cs +++ b/src/Umbraco.Web.Common/Middleware/UmbracoRequestMiddleware.cs @@ -73,9 +73,11 @@ namespace Umbraco.Web.Common.Middleware _backofficeSecurityFactory.EnsureBackOfficeSecurity(); // Needs to be before UmbracoContext, TODO: Why? UmbracoContextReference umbracoContextReference = _umbracoContextFactory.EnsureUmbracoContext(); + bool isFrontEndRequest = umbracoContextReference.UmbracoContext.IsFrontEndUmbracoRequest(); + try { - if (umbracoContextReference.UmbracoContext.IsFrontEndUmbracoRequest) + if (isFrontEndRequest) { LogHttpRequest.TryGetCurrentHttpRequestId(out Guid httpRequestId, _requestCache); _logger.LogTrace("Begin request [{HttpRequestId}]: {RequestUrl}", httpRequestId, requestUri); @@ -104,7 +106,7 @@ namespace Umbraco.Web.Common.Middleware } finally { - if (umbracoContextReference.UmbracoContext.IsFrontEndUmbracoRequest) + if (isFrontEndRequest) { LogHttpRequest.TryGetCurrentHttpRequestId(out var httpRequestId, _requestCache); _logger.LogTrace("End Request [{HttpRequestId}]: {RequestUrl} ({RequestDuration}ms)", httpRequestId, requestUri, DateTime.Now.Subtract(umbracoContextReference.UmbracoContext.ObjectCreated).TotalMilliseconds); diff --git a/src/Umbraco.Web.Common/UmbracoContext/UmbracoContext.cs b/src/Umbraco.Web.Common/UmbracoContext/UmbracoContext.cs index 97bb9ac7c4..2d22bc5a90 100644 --- a/src/Umbraco.Web.Common/UmbracoContext/UmbracoContext.cs +++ b/src/Umbraco.Web.Common/UmbracoContext/UmbracoContext.cs @@ -110,11 +110,6 @@ namespace Umbraco.Web /// public IDomainCache Domains => PublishedSnapshot.Domains; - /// - /// Boolean value indicating whether the current request is a front-end umbraco request - /// - public bool IsFrontEndUmbracoRequest => PublishedRequest != null; - /// /// Gets/sets the PublishedRequest object /// diff --git a/src/Umbraco.Web/Runtime/WebInitialComposer.cs b/src/Umbraco.Web/Runtime/WebInitialComposer.cs index 7528755865..cac49f9421 100644 --- a/src/Umbraco.Web/Runtime/WebInitialComposer.cs +++ b/src/Umbraco.Web/Runtime/WebInitialComposer.cs @@ -39,7 +39,7 @@ namespace Umbraco.Web.Runtime if (state.Level == RuntimeLevel.Run) { var umbCtx = factory.GetRequiredService(); - return new UmbracoHelper(umbCtx.IsFrontEndUmbracoRequest ? umbCtx.PublishedRequest?.PublishedContent : null, factory.GetRequiredService(), + return new UmbracoHelper(umbCtx.IsFrontEndUmbracoRequest() ? umbCtx.PublishedRequest?.PublishedContent : null, factory.GetRequiredService(), factory.GetRequiredService(), factory.GetRequiredService(), factory.GetRequiredService()); } diff --git a/src/Umbraco.Web/UmbracoContext.cs b/src/Umbraco.Web/UmbracoContext.cs index 5fdfd8c255..8707bea26b 100644 --- a/src/Umbraco.Web/UmbracoContext.cs +++ b/src/Umbraco.Web/UmbracoContext.cs @@ -29,7 +29,8 @@ namespace Umbraco.Web // internal for unit tests // otherwise it's used by EnsureContext above // warn: does *not* manage setting any IUmbracoContextAccessor - internal UmbracoContext(IHttpContextAccessor httpContextAccessor, + internal UmbracoContext( + IHttpContextAccessor httpContextAccessor, IPublishedSnapshotService publishedSnapshotService, IBackOfficeSecurity backofficeSecurity, GlobalSettings globalSettings, @@ -123,11 +124,6 @@ namespace Umbraco.Web /// public IDomainCache Domains => PublishedSnapshot.Domains; - /// - /// Boolean value indicating whether the current request is a front-end umbraco request - /// - public bool IsFrontEndUmbracoRequest => PublishedRequest != null; - /// /// Gets/sets the PublishedRequest object ///