Skip to content

Commit 32caa36

Browse files
committed
Add ToString methods for better enum string conversion
Added private ToString methods for various comparison enums in ConditionFactory.cs to improve readability and maintainability. Updated NewCondition methods to use these new ToString methods for consistent string representation. Also, optimized boolean conversion to string using a ternary operator.
1 parent 28e16a5 commit 32caa36

File tree

1 file changed

+103
-10
lines changed

1 file changed

+103
-10
lines changed

sdk/src/Core/Amazon.Auth/AccessControlPolicy/ConditionFactory.cs

Lines changed: 103 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ public static partial class ConditionFactory
102102
/// <summary>
103103
/// Enumeration of the supported ways an ARN comparison can be evaluated.
104104
/// </summary>
105-
public enum ArnComparisonType
105+
public enum ArnComparisonType
106106
{
107107
/// <summary>Exact matching</summary>
108108
ArnEquals,
@@ -177,7 +177,7 @@ public enum NumericComparisonType
177177
/// <summary>
178178
/// Enumeration of the supported ways a string comparison can be evaluated.
179179
/// </summary>
180-
public enum StringComparisonType
180+
public enum StringComparisonType
181181
{
182182
/// <summary>
183183
/// Case-sensitive exact string matching
@@ -220,9 +220,9 @@ public enum StringComparisonType
220220
/// <param name="type">The type of comparison to perform.</param>
221221
/// <param name="value">The second ARN to compare against. When using ArnLike or ArnNotLike this may contain the
222222
/// multi-character wildcard (*) or the single-character wildcard</param>
223-
public static Condition NewCondition(ArnComparisonType type, string key, string value)
223+
public static Condition NewCondition(ArnComparisonType type, string key, string value)
224224
{
225-
return new Condition(type.ToString(), key, value);
225+
return new Condition(ToString(type), key, value);
226226
}
227227

228228
/// <summary>
@@ -234,7 +234,7 @@ public static Condition NewCondition(ArnComparisonType type, string key, string
234234
/// <param name="value">The boolean to compare against.</param>
235235
public static Condition NewCondition(string key, bool value)
236236
{
237-
return new Condition("Bool", key, value.ToString().ToLowerInvariant());
237+
return new Condition("Bool", key, value ? "true" : "false");
238238
}
239239

240240
/// <summary>
@@ -251,7 +251,7 @@ public static Condition NewCondition(string key, bool value)
251251
[Obsolete("Invoking this method results in non-UTC DateTimes not being marshalled correctly. Use NewConditionUtc instead.", false)]
252252
public static Condition NewCondition(DateComparisonType type, DateTime date)
253253
{
254-
return new Condition(type.ToString(), CURRENT_TIME_CONDITION_KEY, date.ToString(AWSSDKUtils.ISO8601DateFormat, CultureInfo.InvariantCulture));
254+
return new Condition(ToString(type), CURRENT_TIME_CONDITION_KEY, date.ToString(AWSSDKUtils.ISO8601DateFormat, CultureInfo.InvariantCulture));
255255
}
256256

257257
/// <summary>
@@ -265,7 +265,7 @@ public static Condition NewCondition(DateComparisonType type, DateTime date)
265265
/// <param name="date">The date to compare against.</param>
266266
public static Condition NewConditionUtc(DateComparisonType type, DateTime date)
267267
{
268-
return new Condition(type.ToString(), CURRENT_TIME_CONDITION_KEY, date.ToUniversalTime().ToString(AWSSDKUtils.ISO8601DateFormat, CultureInfo.InvariantCulture));
268+
return new Condition(ToString(type), CURRENT_TIME_CONDITION_KEY, date.ToUniversalTime().ToString(AWSSDKUtils.ISO8601DateFormat, CultureInfo.InvariantCulture));
269269
}
270270

271271
/// <summary>
@@ -298,7 +298,7 @@ public static Condition NewIpAddressCondition(string ipAddressRange)
298298
/// <param name="ipAddressRange">The CIDR IP range involved in the policy condition.</param>
299299
public static Condition NewCondition(IpAddressComparisonType type, string ipAddressRange)
300300
{
301-
return new Condition(type.ToString(), SOURCE_IP_CONDITION_KEY, ipAddressRange);
301+
return new Condition(ToString(type), SOURCE_IP_CONDITION_KEY, ipAddressRange);
302302
}
303303

304304
/// <summary>
@@ -310,7 +310,7 @@ public static Condition NewCondition(IpAddressComparisonType type, string ipAddr
310310
/// <param name="value">The second number to compare against.</param>
311311
public static Condition NewCondition(NumericComparisonType type, string key, string value)
312312
{
313-
return new Condition(type.ToString(), key, value);
313+
return new Condition(ToString(type), key, value);
314314
}
315315

316316
/// <summary>
@@ -329,7 +329,7 @@ public static Condition NewCondition(NumericComparisonType type, string key, str
329329
/// </param>
330330
public static Condition NewCondition(StringComparisonType type, string key, string value)
331331
{
332-
return new Condition(type.ToString(), key, value);
332+
return new Condition(ToString(type), key, value);
333333
}
334334

335335
/// <summary>
@@ -376,5 +376,98 @@ public static Condition NewSecureTransportCondition()
376376
{
377377
return NewCondition(SECURE_TRANSPORT_CONDITION_KEY, true);
378378
}
379+
380+
private static string ToString(ArnComparisonType type)
381+
{
382+
switch (type)
383+
{
384+
case ArnComparisonType.ArnEquals:
385+
return nameof(ArnComparisonType.ArnEquals);
386+
case ArnComparisonType.ArnLike:
387+
return nameof(ArnComparisonType.ArnLike);
388+
case ArnComparisonType.ArnNotEquals:
389+
return nameof(ArnComparisonType.ArnNotEquals);
390+
case ArnComparisonType.ArnNotLike:
391+
return nameof(ArnComparisonType.ArnNotLike);
392+
default:
393+
return type.ToString();
394+
}
395+
}
396+
397+
private static string ToString(DateComparisonType type)
398+
{
399+
switch (type)
400+
{
401+
case DateComparisonType.DateEquals:
402+
return nameof(DateComparisonType.DateEquals);
403+
case DateComparisonType.DateGreaterThan:
404+
return nameof(DateComparisonType.DateGreaterThan);
405+
case DateComparisonType.DateGreaterThanEquals:
406+
return nameof(DateComparisonType.DateGreaterThanEquals);
407+
case DateComparisonType.DateLessThan:
408+
return nameof(DateComparisonType.DateLessThan);
409+
case DateComparisonType.DateLessThanEquals:
410+
return nameof(DateComparisonType.DateLessThanEquals);
411+
case DateComparisonType.DateNotEquals:
412+
return nameof(DateComparisonType.DateNotEquals);
413+
default:
414+
return type.ToString();
415+
}
416+
}
417+
418+
private static string ToString(IpAddressComparisonType type)
419+
{
420+
switch (type)
421+
{
422+
case IpAddressComparisonType.IpAddress:
423+
return nameof(IpAddressComparisonType.IpAddress);
424+
case IpAddressComparisonType.NotIpAddress:
425+
return nameof(IpAddressComparisonType.NotIpAddress);
426+
default:
427+
return type.ToString();
428+
}
429+
}
430+
431+
private static string ToString(NumericComparisonType type)
432+
{
433+
switch (type)
434+
{
435+
case NumericComparisonType.NumericEquals:
436+
return nameof(NumericComparisonType.NumericEquals);
437+
case NumericComparisonType.NumericGreaterThan:
438+
return nameof(NumericComparisonType.NumericGreaterThan);
439+
case NumericComparisonType.NumericGreaterThanEquals:
440+
return nameof(NumericComparisonType.NumericGreaterThanEquals);
441+
case NumericComparisonType.NumericLessThan:
442+
return nameof(NumericComparisonType.NumericLessThan);
443+
case NumericComparisonType.NumericLessThanEquals:
444+
return nameof(NumericComparisonType.NumericLessThanEquals);
445+
case NumericComparisonType.NumericNotEquals:
446+
return nameof(NumericComparisonType.NumericNotEquals);
447+
default:
448+
return type.ToString();
449+
}
450+
}
451+
452+
private static string ToString(StringComparisonType type)
453+
{
454+
switch (type)
455+
{
456+
case StringComparisonType.StringEquals:
457+
return nameof(StringComparisonType.StringEquals);
458+
case StringComparisonType.StringEqualsIgnoreCase:
459+
return nameof(StringComparisonType.StringEqualsIgnoreCase);
460+
case StringComparisonType.StringLike:
461+
return nameof(StringComparisonType.StringLike);
462+
case StringComparisonType.StringNotEquals:
463+
return nameof(StringComparisonType.StringNotEquals);
464+
case StringComparisonType.StringNotEqualsIgnoreCase:
465+
return nameof(StringComparisonType.StringNotEqualsIgnoreCase);
466+
case StringComparisonType.StringNotLike:
467+
return nameof(StringComparisonType.StringNotLike);
468+
default:
469+
return type.ToString();
470+
}
471+
}
379472
}
380473
}

0 commit comments

Comments
 (0)