Skip to content

Commit e32511b

Browse files
authored
Merge pull request #18 from unic/feature/preserve-casing-of-capture-groups
Preserve casing of capture groups
2 parents 557ab75 + 3e26a97 commit e32511b

File tree

8 files changed

+69
-21
lines changed

8 files changed

+69
-21
lines changed

be/GitVersion.yml

Lines changed: 27 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,27 @@
1-
mode: ContinuousDelivery
2-
branches: {}
3-
ignore:
4-
sha: []
1+
assembly-versioning-scheme: MajorMinorPatch
2+
mode: mainline
3+
continuous-delivery-fallback-tag: ''
4+
tag-prefix: '[vV]'
5+
major-version-bump-message: '\+semver:\s?(dotnotuse)'
6+
minor-version-bump-message: '\+semver:\s?(breaking|major)'
7+
patch-version-bump-message: '\+semver:\s?(feature|minor)'
8+
no-bump-message: '\+semver:\s?(none|skip)'
9+
branches:
10+
main:
11+
tag: ''
12+
increment: Patch
13+
prevent-increment-of-merged-branch-version: true
14+
regex: ^main$
15+
is-release-branch: true
16+
is-mainline: true
17+
feature:
18+
tag: ft
19+
tag-number-pattern: '[/-](?<number>\d+)[-/]'
20+
increment: Inherit
21+
source-branches:
22+
- main
23+
is-mainline: false
24+
pull-request:
25+
tag: pull
26+
tag-number-pattern: '[/-](?<number>\d+)[-/]'
27+
merge-message-formats: {}

be/src/Unic.UrlMapper2/code/Models/RedirectSearchData.cs

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,21 +2,28 @@
22
{
33
public class RedirectSearchData
44
{
5-
public string SourceTerm { get; set; }
5+
public string SourceTerm { get; set; }
66

7-
public string Language { get; set; }
7+
/// <summary>
8+
/// Source Term with the original casing
9+
/// </summary>
10+
public string SourceTermOriginal { get; set; }
811

9-
public string SiteName { get; set; }
12+
public string Language { get; set; }
13+
14+
public string SiteName { get; set; }
1015

1116
public string SourceProtocol { get; set; }
1217

1318
public RedirectSearchData(
1419
string sourceTerm,
20+
string sourceTermOriginal,
1521
string language,
1622
string siteName,
1723
string sourceProtocol)
1824
{
1925
this.SourceTerm = sourceTerm;
26+
this.SourceTermOriginal = sourceTermOriginal;
2027
this.Language = language;
2128
this.SiteName = siteName;
2229
this.SourceProtocol = sourceProtocol;

be/src/Unic.UrlMapper2/code/Properties/AssemblyInfo.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,5 +30,5 @@
3030
//
3131
// You can specify all the values or you can default the Revision and Build Numbers
3232
// by using the '*' as shown below:
33-
[assembly: AssemblyVersion("1.1.3.0")]
34-
[assembly: AssemblyFileVersion("1.1.3.0")]
33+
[assembly: AssemblyVersion("1.2.0.0")]
34+
[assembly: AssemblyFileVersion("1.2.0.0")]

be/src/Unic.UrlMapper2/code/Services/ISanitizer.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ public interface ISanitizer
66
{
77
void SanitizeRedirectSearchData(RedirectSearchData redirectSearchData);
88

9-
string SanitizeTerm(string value);
9+
string SanitizeTerm(string value, bool convertToLower = true);
1010

1111
string SanitizeSiteName(string value);
1212

be/src/Unic.UrlMapper2/code/Services/RedirectSearchDataService.cs

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,17 @@ public RedirectSearchDataService(
2525
this.logger = logger;
2626
}
2727

28-
public virtual RedirectSearchData GetDefaultRedirectSearchData(HttpRequestArgs args) =>
29-
new RedirectSearchData(
30-
sourceTerm: this.GetSourceTermForDefaultRedirectSearchData(args),
28+
public virtual RedirectSearchData GetDefaultRedirectSearchData(HttpRequestArgs args)
29+
{
30+
var sourceTerm = this.GetSourceTermForDefaultRedirectSearchData(args);
31+
32+
return new RedirectSearchData(
33+
sourceTerm: sourceTerm,
34+
sourceTermOriginal: sourceTerm,
3135
language: this.context.Language?.Name,
3236
siteName: this.context.Site?.Name?.ToLower(),
3337
sourceProtocol: this.GetSourceProtocolForDefaultRedirectSearchData(args));
38+
}
3439

3540
protected virtual string GetSourceTermForDefaultRedirectSearchData(HttpRequestArgs args)
3641
{
@@ -44,12 +49,17 @@ protected virtual string GetSourceTermForDefaultRedirectSearchData(HttpRequestAr
4449
return startIndex < 0 ? default : args.RequestUrl.PathAndQuery.Substring(startIndex);
4550
}
4651

47-
public virtual RedirectSearchData GetJssRedirectSearchData(HttpContextBase httpContext) =>
48-
new RedirectSearchData(
49-
sourceTerm: this.GetSourceTermForJssRedirectSearchData(httpContext),
52+
public virtual RedirectSearchData GetJssRedirectSearchData(HttpContextBase httpContext)
53+
{
54+
var sourceTerm = this.GetSourceTermForJssRedirectSearchData(httpContext);
55+
56+
return new RedirectSearchData(
57+
sourceTerm: sourceTerm,
58+
sourceTermOriginal: sourceTerm,
5059
language: this.context.Language?.Name,
5160
siteName: this.context.Site?.Name,
5261
sourceProtocol: this.GetSourceProtocolForJssRedirectSearchData(httpContext));
62+
}
5363

5464
protected virtual string GetSourceProtocolForDefaultRedirectSearchData(HttpRequestArgs args)
5565
{

be/src/Unic.UrlMapper2/code/Services/RedirectionService.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ protected virtual string GetAdditionalTargetUrlData(RedirectSearchData redirectS
6060
{
6161
if (!redirect.RegexEnabled) return default;
6262

63-
var match = Regex.Match(redirectSearchData.SourceTerm, redirect.Term);
63+
var match = Regex.Match(redirectSearchData.SourceTermOriginal, redirect.Term, RegexOptions.IgnoreCase);
6464
if (match.Groups.Count <= 1) return default;
6565

6666
string additionalTargetData = null;

be/src/Unic.UrlMapper2/code/Services/Sanitizer.cs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,20 +8,21 @@ public class Sanitizer : ISanitizer
88
public virtual void SanitizeRedirectSearchData(RedirectSearchData redirectSearchData)
99
{
1010
redirectSearchData.SourceTerm = this.SanitizeTerm(redirectSearchData.SourceTerm);
11+
redirectSearchData.SourceTermOriginal = this.SanitizeTerm(redirectSearchData.SourceTermOriginal, false);
1112
redirectSearchData.SiteName = this.SanitizeSiteName(redirectSearchData.SiteName);
1213
redirectSearchData.SourceProtocol = this.SanitizeProtocol(redirectSearchData.SourceProtocol);
1314
}
1415

15-
public virtual string SanitizeTerm(string value)
16+
public virtual string SanitizeTerm(string value, bool convertToLower = true)
1617
{
1718
if (string.IsNullOrWhiteSpace(value)) return default;
1819

19-
value = value.Trim().ToLower();
20+
value = value.Trim();
2021

2122
value = StringUtil.RemovePrefix('/', value);
2223
value = StringUtil.RemovePostfix('/', value);
2324

24-
return value;
25+
return convertToLower ? value.ToLower() : value;
2526
}
2627

2728
public virtual string SanitizeSiteName(string value) => value?.Trim().ToLower();

build/azure-templates/jobs-build-be.yml

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,17 @@ jobs:
1313
artifactName: "solution-webroot.zip"
1414

1515
steps:
16-
- task: GitVersion@5
16+
- task: gitversion/setup@0
17+
displayName: 'Install GitVersion'
18+
inputs:
19+
versionSpec: '5.8'
20+
- task: gitversion/execute@0
21+
displayName: 'Execute GitVersion'
1722
inputs:
1823
runtime: "full"
1924
additionalArguments: "/updateassemblyinfo"
25+
useConfigFile: true
26+
configFilePath: 'be/GitVersion.yml'
2027

2128
# Install NuGet Tools
2229
- task: NuGetToolInstaller@1

0 commit comments

Comments
 (0)