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 @@
-
-
+
+
-
+