From f2ae41ada2f7c6b511acec480689e539686a337e Mon Sep 17 00:00:00 2001 From: Shannon Date: Tue, 19 Feb 2019 01:44:00 +1100 Subject: [PATCH] Fixes the culturerequest.interceptor so that it works in tests (and so circular deps aren't caused), internalizes ClientCulture and makes it a little less error prone. --- .../interceptors/culturerequest.interceptor.js | 14 ++++++++++---- .../WebApi/HttpRequestMessageExtensions.cs | 4 ++-- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/common/interceptors/culturerequest.interceptor.js b/src/Umbraco.Web.UI.Client/src/common/interceptors/culturerequest.interceptor.js index 6496d7a1f9..186f3accf0 100644 --- a/src/Umbraco.Web.UI.Client/src/common/interceptors/culturerequest.interceptor.js +++ b/src/Umbraco.Web.UI.Client/src/common/interceptors/culturerequest.interceptor.js @@ -3,23 +3,29 @@ /** * Used to set the current client culture on all requests API requests - * @param {any} $q * @param {any} $routeParams */ - function cultureRequestInterceptor($q, $routeParams) { + function cultureRequestInterceptor($injector) { return { //dealing with requests: 'request': function (config) { + if (!Umbraco.Sys.ServerVariables.umbracoSettings.umbracoPath) { // no settings available, we're probably on the login screen return config; } + if (!config.url.match(RegExp(Umbraco.Sys.ServerVariables.umbracoSettings.umbracoPath + "\/backoffice\/", "i"))) { // it's not an API request, no handling return config; } - // it's an API request, add the current client culture as a header value - config.headers["X-UMB-CULTURE"] = $routeParams.cculture ? $routeParams.cculture : $routeParams.mculture; + + var $routeParams = $injector.get("$routeParams"); + if ($routeParams) { + // it's an API request, add the current client culture as a header value + config.headers["X-UMB-CULTURE"] = $routeParams.cculture ? $routeParams.cculture : $routeParams.mculture; + } + return config; } }; diff --git a/src/Umbraco.Web/WebApi/HttpRequestMessageExtensions.cs b/src/Umbraco.Web/WebApi/HttpRequestMessageExtensions.cs index 744b60cd52..7bda897a5e 100644 --- a/src/Umbraco.Web/WebApi/HttpRequestMessageExtensions.cs +++ b/src/Umbraco.Web/WebApi/HttpRequestMessageExtensions.cs @@ -161,9 +161,9 @@ namespace Umbraco.Web.WebApi return msg; } - public static string ClientCulture(this HttpRequestMessage request) + internal static string ClientCulture(this HttpRequestMessage request) { - return request.Headers.Contains("X-UMB-CULTURE") ? request.Headers.GetValues("X-UMB-CULTURE").First() : null; + return request.Headers.TryGetValues("X-UMB-CULTURE", out var values) ? values.FirstOrDefault() : null; } }