diff --git a/src/Sinch/Core/Utils.cs b/src/Sinch/Core/Utils.cs
index 74cefffa..6b13c961 100644
--- a/src/Sinch/Core/Utils.cs
+++ b/src/Sinch/Core/Utils.cs
@@ -18,26 +18,14 @@ internal static class Utils
/// Value of EnumMember attribute
public static string GetEnumString(this T value) where T : Enum
{
- var enumType = typeof(T);
- var name = Enum.GetName(enumType, value)!;
- var enumMemberAttribute =
- ((EnumMemberAttribute[])enumType.GetField(name)!.GetCustomAttributes(typeof(EnumMemberAttribute), true))
- .SingleOrDefault();
-
- if (enumMemberAttribute == null)
- {
- return value.ToString();
- }
-
- return enumMemberAttribute.Value!;
+ return GetEnumString(typeof(T), value);
}
///
/// Gets a enum string from EnumMember attribute
///
- /// Enum Type
/// Value of EnumMember attribute
- public static string GetEnumString(Type type, object value)
+ private static string GetEnumString(Type type, object value)
{
type = Nullable.GetUnderlyingType(type) ?? type;
var name = Enum.GetName(type, value)!;
@@ -103,34 +91,18 @@ public static string ToSnakeCaseQueryString(T obj) where T : class
continue;
var propVal = prop.GetValue(obj);
- if (propVal is not null)
+ if (propVal is null) continue;
+
+ var propName = StringUtils.ToSnakeCase(prop.Name);
+ var propType = prop.PropertyType;
+ if (typeof(IEnumerable).IsAssignableFrom(propType) &&
+ propType != typeof(string))
+ {
+ list.AddRange(ParamsFromObject(propName, propVal as IEnumerable));
+ }
+ else
{
- // TODO: naming dynamically
- var propName = StringUtils.ToSnakeCase(prop.Name);
- var propType = prop.PropertyType;
- if (typeof(IEnumerable).IsAssignableFrom(propType) &&
- propType != typeof(string))
- {
- list.AddRange(ParamsFromObject(propName, propVal as IEnumerable));
- }
- else if (typeof(DateTime).IsAssignableFrom(propType) ||
- typeof(DateTime?).IsAssignableFrom(propType))
- {
- list.Add(new(propName, StringUtils.ToIso8601((DateTime)propVal)));
- }
- else if (propType.IsEnum || Nullable.GetUnderlyingType(propType)?.IsEnum == true)
- {
- list.Add(new(propName, GetEnumString(propType, propVal)));
- }
- else if (typeof(bool).IsAssignableFrom(propType) ||
- typeof(bool?).IsAssignableFrom(propType))
- {
- list.Add(new(propName, prop.GetValue(obj).ToString().ToLowerInvariant()));
- }
- else
- {
- list.Add(new(propName, prop.GetValue(obj).ToString()));
- }
+ list.Add(new(propName, ToQueryParamString(propVal)));
}
}
@@ -140,10 +112,10 @@ public static string ToSnakeCaseQueryString(T obj) where T : class
private static IEnumerable> ParamsFromObject(string paramName, IEnumerable obj)
{
return obj.Cast