Skip to content

Commit 286c942

Browse files
committed
Added '/api/ to default 'UrlLocalizer.QuickUrlExclusionFilter (#240, #271, #289). Added tests for same.
1 parent 4df64af commit 286c942

File tree

4 files changed

+61
-2
lines changed

4 files changed

+61
-2
lines changed

Diff for: README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -452,7 +452,7 @@ Firstly, you can set a RegEx pattern to match against the localpath part of the
452452
{
453453
...
454454
// Blacklist certain URLs from being 'localized'.
455-
i18n.UrlLocalizer.QuickUrlExclusionFilter = new System.Text.RegularExpressions.Regex(@"(?:sitemap\.xml|\.css|\.less|\.jpg|\.jpeg|\.png|\.gif|\.ico|\.svg|\.woff|\.woff2|\.ttf|\.eot)$", RegexOptions.IgnoreCase);
455+
i18n.UrlLocalizer.QuickUrlExclusionFilter = new System.Text.RegularExpressions.Regex(@"(^\/api\/)|((sitemap\.xml|\.css|\.less|\.jpg|\.jpeg|\.png|\.gif|\.ico|\.svg|\.woff|\.woff2|\.ttf|\.eot)$)", RegexOptions.IgnoreCase);
456456
}
457457
```
458458

Diff for: src/i18n.Tests/Tests/UrlLocalizerTests.cs

+58
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Linq;
4+
using System.Text;
5+
using System.Text.RegularExpressions;
6+
using System.Web;
7+
using Microsoft.VisualStudio.TestTools.UnitTesting;
8+
using i18n.Domain.Concrete;
9+
using i18n.Helpers;
10+
using NSubstitute;
11+
12+
namespace i18n.Tests
13+
{
14+
[TestClass]
15+
public class UrlLocalizerTests
16+
{
17+
void Helper_UrlLocalizer_FilterIncoming(string urlPath, bool expected_result = false)
18+
{
19+
UriBuilder ub = new UriBuilder("http://example.com");
20+
ub.Path = urlPath;
21+
UrlLocalizer obj = new UrlLocalizer();
22+
bool result = obj.FilterIncoming(ub.Uri);
23+
Assert.AreEqual(expected_result, result);
24+
}
25+
26+
/// <summary>
27+
/// Effectively test the default UrlLocalizer.QuickUrlExclusionFilter setting.
28+
/// </summary>
29+
[TestMethod]
30+
public void UrlLocalizer_FilterIncoming()
31+
{
32+
Helper_UrlLocalizer_FilterIncoming("/api/blogs/12345");
33+
Helper_UrlLocalizer_FilterIncoming("/Api/blogs/12345");
34+
Helper_UrlLocalizer_FilterIncoming("/API/blogs/12345");
35+
Helper_UrlLocalizer_FilterIncoming("/apinine/12345", true);
36+
Helper_UrlLocalizer_FilterIncoming("/Apinine/12345", true);
37+
Helper_UrlLocalizer_FilterIncoming("/APININE/12345", true);
38+
39+
Helper_UrlLocalizer_FilterIncoming("sitemap.xml");
40+
Helper_UrlLocalizer_FilterIncoming("sitemap.xml/123", true);
41+
42+
Helper_UrlLocalizer_FilterIncoming("123.css");
43+
Helper_UrlLocalizer_FilterIncoming("123.csst", true);
44+
45+
Helper_UrlLocalizer_FilterIncoming("123.less");
46+
Helper_UrlLocalizer_FilterIncoming("123.jpg");
47+
Helper_UrlLocalizer_FilterIncoming("123.jpeg");
48+
Helper_UrlLocalizer_FilterIncoming("123.png");
49+
Helper_UrlLocalizer_FilterIncoming("123.gif");
50+
Helper_UrlLocalizer_FilterIncoming("123.ico");
51+
Helper_UrlLocalizer_FilterIncoming("123.svg");
52+
Helper_UrlLocalizer_FilterIncoming("123.woff");
53+
Helper_UrlLocalizer_FilterIncoming("123.woff2");
54+
Helper_UrlLocalizer_FilterIncoming("123.ttf");
55+
Helper_UrlLocalizer_FilterIncoming("123.eot");
56+
}
57+
}
58+
}

Diff for: src/i18n.Tests/i18n.Tests.csproj

+1
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@
5353
<Compile Include="Tests\LanguageTagTests.cs" />
5454
<Compile Include="Tests\NuggetLocalizerTests.cs" />
5555
<Compile Include="Tests\ResponseFilterTests.cs" />
56+
<Compile Include="Tests\UrlLocalizerTests.cs" />
5657
<Compile Include="Properties\AssemblyInfo.cs" />
5758
</ItemGroup>
5859
<ItemGroup>

Diff for: src/i18n/Concrete/UrlLocalizer.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ public class UrlLocalizer : IUrlLocalizer
103103
/// <remarks>
104104
/// This filtering in performed in addition to any custom IncomingUrlFilters/OutgoingUrlFilters filters.
105105
/// </remarks>
106-
public static Regex QuickUrlExclusionFilter = new System.Text.RegularExpressions.Regex(@"(?:sitemap\.xml|\.css|\.less|\.jpg|\.jpeg|\.png|\.gif|\.ico|\.svg|\.woff|\.woff2|\.ttf|\.eot)$", RegexOptions.IgnoreCase);
106+
public static Regex QuickUrlExclusionFilter = new System.Text.RegularExpressions.Regex(@"(^\/api\/)|((sitemap\.xml|\.css|\.less|\.jpg|\.jpeg|\.png|\.gif|\.ico|\.svg|\.woff|\.woff2|\.ttf|\.eot)$)", RegexOptions.IgnoreCase);
107107

108108
/// <summary>
109109
/// Filters that examines the request URL during Early URL Localization

0 commit comments

Comments
 (0)