Skip to content

Commit f762710

Browse files
committed
fix to RegexReplaceOrValue for encoding regex value only (#80)
1 parent 6d724b8 commit f762710

11 files changed

Lines changed: 51 additions & 18 deletions

File tree

Synapse.Common/Properties/AssemblyInfo.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,4 +38,4 @@
3838
// by using the '*' as shown below:
3939
// [assembly: AssemblyVersion("1.0.*")]
4040
[assembly: AssemblyVersion( "0.1.0.0" )]
41-
[assembly: AssemblyFileVersion( "0.1.18023.0" )]
41+
[assembly: AssemblyFileVersion( "0.1.18026.0" )]

Synapse.Core/Classes/DynamicValue.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ public override string ToString()
2020
Source = "URI parameter name",
2121
Target = "Element:IndexedElement[0]:Element",
2222
Parse = true,
23-
Encode = "None | Base64",
23+
Encode = EncodingType.Base64,
2424
Replace = "Regex Expression"
2525
};
2626
dv.Options.Add( Option.CreateSample() );
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
using System;
2+
3+
namespace Synapse.Core
4+
{
5+
public enum EncodingType
6+
{
7+
None,
8+
Base64
9+
}
10+
}

Synapse.Core/Classes/ForEach.cs

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,15 @@ public class ForEachItem : IReplacementValueOptions
3838
public bool HasParameterSource { get { return ParameterSource != null; } }
3939

4040
public string Target { get; set; }
41+
4142
public string Replace { get; set; }
42-
public string Encode { get; set; }
43+
[YamlIgnore]
44+
public bool HasReplace { get { return !string.IsNullOrWhiteSpace( Replace ); } }
45+
46+
public EncodingType Encode { get; set; }
47+
[YamlIgnore]
48+
public bool IsBase64Encode { get { return Encode == EncodingType.Base64; } }
49+
4350
public List<object> Values { get; set; } = new List<object>();
4451

4552
[YamlIgnore]
@@ -61,7 +68,7 @@ public static ForEachItem CreateSample()
6168
{
6269
ParameterSource = ParameterSourceInfo.CreateSample(),
6370
Target = "Element:IndexedElement[0]:Element",
64-
Encode = "None | Base64",
71+
Encode = EncodingType.Base64,
6572
Replace = "Regex Expression"
6673
};
6774
fe.Values.AddRange( new string[] { "value0", "value1" } );

Synapse.Core/Classes/Interfaces/IReplacementValue.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ namespace Synapse.Core
55
public interface IReplacementValueOptions
66
{
77
string Replace { get; set; }
8-
string Encode { get; set; }
8+
bool HasReplace { get; }
9+
EncodingType Encode { get; set; }
10+
bool IsBase64Encode { get; }
911
}
1012
}

Synapse.Core/Classes/SourceTarget.cs

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,15 @@ public class SourceTarget : IReplacementValueOptions
88
public string Source { get; set; }
99
public string Target { get; set; }
1010
public bool Parse { get; set; }
11+
1112
public string Replace { get; set; }
12-
public string Encode { get; set; }
13+
[YamlIgnore]
14+
public bool HasReplace { get { return !string.IsNullOrWhiteSpace( Replace ); } }
15+
16+
public EncodingType Encode { get; set; }
17+
[YamlIgnore]
18+
public bool IsBase64Encode { get { return Encode == EncodingType.Base64; } }
19+
1320

1421
public override string ToString()
1522
{
@@ -23,7 +30,7 @@ public static SourceTarget CreateSample()
2330
Source = "Element:IndexedElement[0]:Element",
2431
Target = "Element:IndexedElement[0]:Element",
2532
Parse = true,
26-
Encode = "None | Base64",
33+
Encode = EncodingType.Base64,
2734
Replace = "Regex Expression"
2835
};
2936
}

Synapse.Core/Properties/AssemblyInfo.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,4 +37,4 @@
3737
// by using the '*' as shown below:
3838
// [assembly: AssemblyVersion("1.0.*")]
3939
[assembly: AssemblyVersion( "0.1.0.0" )]
40-
[assembly: AssemblyFileVersion( "0.1.18023.0" )]
40+
[assembly: AssemblyFileVersion( "0.1.18026.0" )]

Synapse.Core/Synapse.Core.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@
6161
</Reference>
6262
</ItemGroup>
6363
<ItemGroup>
64+
<Compile Include="Classes\Enums\EncodingType.cs" />
6465
<Compile Include="Classes\Interfaces\IReplacementValue.cs" />
6566
<Compile Include="Classes\SaveExitDataInfo.cs" />
6667
<Compile Include="Classes\SourceTarget.cs" />

Synapse.Core/Utilities/XmlHelpers.cs

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -359,10 +359,13 @@ internal static string RegexReplaceOrValue(string input, string replacement, IRe
359359

360360
if( rv != null )
361361
{
362-
if( !string.IsNullOrWhiteSpace( rv.Replace ) )
362+
if( rv.HasReplace )
363+
{
364+
if( rv.IsBase64Encode )
365+
replacement = CryptoHelpers.Encode( replacement );
363366
value = Regex.Replace( input, rv.Replace, replacement, RegexOptions.IgnoreCase );
364-
365-
if( !string.IsNullOrWhiteSpace( rv.Encode ) && rv.Encode.ToLower() == "base64" )
367+
}
368+
else if( rv.IsBase64Encode )
366369
value = CryptoHelpers.Encode( value );
367370
}
368371

Synapse.Core/Utilities/YamlHelpers.cs

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -364,16 +364,19 @@ internal static void ApplyPatchValues(List<object> source, List<object> patch, I
364364
}
365365
}
366366

367-
internal static object RegexReplaceOrValue(object input, object replacement, IReplacementValueOptions dv)
367+
internal static object RegexReplaceOrValue(object input, object replacement, IReplacementValueOptions rv)
368368
{
369369
object value = replacement;
370370

371-
if( dv != null )
371+
if( rv != null )
372372
{
373-
if( !string.IsNullOrWhiteSpace( dv.Replace ) )
374-
value = Regex.Replace( input.ToString(), dv.Replace, replacement.ToString(), RegexOptions.IgnoreCase );
375-
376-
if( !string.IsNullOrWhiteSpace( dv.Encode ) && dv.Encode.ToLower() == "base64" )
373+
if( rv.HasReplace )
374+
{
375+
if( rv.IsBase64Encode )
376+
replacement = CryptoHelpers.Encode( replacement.ToString() );
377+
value = Regex.Replace( input.ToString(), rv.Replace, replacement.ToString(), RegexOptions.IgnoreCase );
378+
}
379+
else if( rv.IsBase64Encode )
377380
value = CryptoHelpers.Encode( value.ToString() );
378381
}
379382

0 commit comments

Comments
 (0)