diff --git a/Directory.Build.props b/Directory.Build.props index c74baf022..92da82821 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -3,7 +3,7 @@ VirtoCommerce - Copyright © VirtoCommerce 2011-2020 + Copyright © VirtoCommerce 2011-2022 VirtoCommerce diff --git a/VirtoCommerce.Storefront.sln b/VirtoCommerce.Storefront.sln index e6d362800..1df950271 100644 --- a/VirtoCommerce.Storefront.sln +++ b/VirtoCommerce.Storefront.sln @@ -1,6 +1,6 @@ Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 16 -VisualStudioVersion = 16.0.29613.14 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.32112.339 MinimumVisualStudioVersion = 10.0.40219.1 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "VirtoCommerce.Storefront", "VirtoCommerce.Storefront\VirtoCommerce.Storefront.csproj", "{84C14E0A-0F36-4BB5-9C00-7E8FB72891C2}" EndProject diff --git a/VirtoCommerce.Storefront/Controllers/Api/ApiStaticContentController.cs b/VirtoCommerce.Storefront/Controllers/Api/ApiStaticContentController.cs index 505391502..6d10d3f68 100644 --- a/VirtoCommerce.Storefront/Controllers/Api/ApiStaticContentController.cs +++ b/VirtoCommerce.Storefront/Controllers/Api/ApiStaticContentController.cs @@ -8,6 +8,7 @@ using VirtoCommerce.Storefront.Model; using VirtoCommerce.Storefront.Model.Common; using VirtoCommerce.Storefront.Model.StaticContent; +using VirtoCommerce.Storefront.Models; namespace VirtoCommerce.Storefront.Controllers.Api { @@ -20,19 +21,44 @@ public ApiStaticContentController(IWorkContextAccessor workContextAccessor, ISto { } + // POST: storefrontapi/content/reset-cache + [HttpPost("reset-cache")] + public ActionResult ResetCache([FromBody] ResetCacheEventModel webHookEvent) + { + if (TryResetCacheInternal(webHookEvent?.EventBody?.FirstOrDefault()?.Type)) + { + return Ok("OK"); + } + // we can't return 400, because webhook module use it to repeat request + return Ok("Failed"); + } + + // POST: storefrontapi/content/reset-cache/theme [HttpPost("reset-cache/{region}")] public ActionResult ResetCache([FromRoute] string region) + { + if (TryResetCacheInternal(region)) + { + return Ok("OK"); + } + // we can't return 400, because webhook module use it to repeat request + return Ok("Failed"); + } + + private static bool TryResetCacheInternal(string region) { switch (region) { - case "theme": ThemeEngineCacheRegion.ExpireRegion(); - break; + case "theme": + case "themes": + ThemeEngineCacheRegion.ExpireRegion(); + return true; case "pages": case "blogs": StaticContentCacheRegion.ExpireRegion(); - break; + return true; } - return Ok(); + return false; } // POST: storefrontapi/content/pages diff --git a/VirtoCommerce.Storefront/Infrastructure/Autorest/BaseAuthHandler.cs b/VirtoCommerce.Storefront/Infrastructure/Autorest/BaseAuthHandler.cs index 517bdf5d9..dc04f9f8c 100644 --- a/VirtoCommerce.Storefront/Infrastructure/Autorest/BaseAuthHandler.cs +++ b/VirtoCommerce.Storefront/Infrastructure/Autorest/BaseAuthHandler.cs @@ -75,7 +75,7 @@ protected void AddCurrentUser(HttpRequestMessage request) /// protected void AddUserIp(HttpRequestMessage request) { - var userIp = _httpContextAccessor.HttpContext.Connection.RemoteIpAddress.ToString(); + var userIp = _httpContextAccessor.HttpContext?.Connection.RemoteIpAddress.ToString(); if (!string.IsNullOrEmpty(userIp)) { diff --git a/VirtoCommerce.Storefront/Models/ResetCacheModel.cs b/VirtoCommerce.Storefront/Models/ResetCacheModel.cs new file mode 100644 index 000000000..6768cb069 --- /dev/null +++ b/VirtoCommerce.Storefront/Models/ResetCacheModel.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace VirtoCommerce.Storefront.Models +{ + /// + /// Cache Event Model For Web Hook from Virto Commmerce Platform + /// + public class ResetCacheEventModel + { + public string EventId { get; set; } + + public ResetCacheEventBodyModel[] EventBody { get; set; } + } + + public class ResetCacheEventBodyModel + { + public string ObjectType { get; set; } + + public string Id { get; set; } + + public string Path { get; set; } + + public string Type { get; set; } + } +} diff --git a/VirtoCommerce.Storefront/VirtoCommerce.Storefront.csproj b/VirtoCommerce.Storefront/VirtoCommerce.Storefront.csproj index 9f20c5c7b..10756cc54 100644 --- a/VirtoCommerce.Storefront/VirtoCommerce.Storefront.csproj +++ b/VirtoCommerce.Storefront/VirtoCommerce.Storefront.csproj @@ -6,8 +6,8 @@ 0cd403c4-2cd0-42b3-987a-02900f4a683e The storefront implementation of the Virto Commerce platform. https://virtocommerce.com/open-source-license - https://github.com/VirtoCommerce/vc-storefront-core - https://github.com/VirtoCommerce/vc-storefront-core + https://github.com/VirtoCommerce/vc-storefront + https://github.com/VirtoCommerce/vc-storefront https://virtocommerce.com/themes/assets/logo.jpg @@ -47,10 +47,10 @@ - - + + - +