From 8c036b0986a2a669285a258f6573bde1a5cd0abf Mon Sep 17 00:00:00 2001 From: Adrian Godong Date: Thu, 19 Oct 2017 20:40:21 -0700 Subject: [PATCH] Refactored key value encoding into a separate method. --- .../TerribleDevUriExtensions.cs | 44 +++++++++---------- 1 file changed, 20 insertions(+), 24 deletions(-) diff --git a/src/UriBuilder.Fluent/TerribleDevUriExtensions.cs b/src/UriBuilder.Fluent/TerribleDevUriExtensions.cs index ea882f8..cec579f 100644 --- a/src/UriBuilder.Fluent/TerribleDevUriExtensions.cs +++ b/src/UriBuilder.Fluent/TerribleDevUriExtensions.cs @@ -52,18 +52,7 @@ namespace System valuesEnum = new string[0]; } var intitialValue = string.IsNullOrWhiteSpace(bld.Query) ? "" : $"{bld.Query.TrimStart('?')}&"; - var sb = new StringBuilder($"{intitialValue}{key}"); - var validValueHit = false; - foreach(var value in valuesEnum) - { - var toSValue = value?.ToString(); - if(string.IsNullOrWhiteSpace(toSValue)) continue; - // we can't just have an = sign since its valid to have query string paramters with no value; - if(!validValueHit) toSValue = "=" + value; - validValueHit = true; - sb.Append($"{toSValue},"); - } - bld.Query = sb.ToString().TrimEnd(','); + bld.Query = intitialValue.AppendKeyValue(key, valuesEnum); return bld; } @@ -111,18 +100,7 @@ namespace System valuesEnum = new string[0]; } var intitialValue = string.IsNullOrWhiteSpace(bld.Fragment) ? "" : $"{bld.Fragment.TrimStart('?')}&"; - var sb = new StringBuilder($"{intitialValue}{key}"); - var validValueHit = false; - foreach(var value in valuesEnum) - { - var toSValue = value?.ToString(); - if(string.IsNullOrWhiteSpace(toSValue)) continue; - // we can't just have an = sign since its valid to have query string paramters with no value; - if(!validValueHit) toSValue = "=" + value; - validValueHit = true; - sb.Append($"{toSValue},"); - } - bld.Fragment = sb.ToString().TrimEnd(','); + bld.Fragment = intitialValue.AppendKeyValue(key, valuesEnum); return bld; } @@ -225,5 +203,23 @@ namespace System /// public static string ToEscapeDataString(this UriBuilder bld) => Uri.EscapeDataString(bld.Uri.ToString()); + /// + /// Appends x-www-form-urlencoded key and valuesEnum into initialValue. + /// + private static string AppendKeyValue(this string intitialValue, string key, IEnumerable valuesEnum) + { + var sb = new StringBuilder($"{intitialValue}{key}"); + var validValueHit = false; + foreach(var value in valuesEnum) + { + var toSValue = value?.ToString(); + if(string.IsNullOrWhiteSpace(toSValue)) continue; + // we can't just have an = sign since its valid to have query string paramters with no value; + if(!validValueHit) toSValue = "=" + value; + validValueHit = true; + sb.Append($"{toSValue},"); + } + return sb.ToString().TrimEnd(','); + } } } \ No newline at end of file