|
|
@@ -2,6 +2,7 @@ using Newtonsoft.Json; |
|
|
|
using Newtonsoft.Json.Linq; |
|
|
|
using System; |
|
|
|
using System.Collections.Generic; |
|
|
|
using System.Text; |
|
|
|
|
|
|
|
namespace Discord.Net.Converters |
|
|
|
{ |
|
|
@@ -36,9 +37,52 @@ namespace Discord.Net.Converters |
|
|
|
|
|
|
|
return new GuildFeatures(features, experimental.ToArray()); |
|
|
|
} |
|
|
|
|
|
|
|
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) |
|
|
|
{ |
|
|
|
throw new NotImplementedException(); |
|
|
|
var guildFeatures = (GuildFeatures)value; |
|
|
|
|
|
|
|
var enumValues = Enum.GetValues(typeof(GuildFeature)); |
|
|
|
|
|
|
|
writer.WriteStartArray(); |
|
|
|
|
|
|
|
foreach (var enumValue in enumValues) |
|
|
|
{ |
|
|
|
var val = (GuildFeature)enumValue; |
|
|
|
if (val is GuildFeature.None) |
|
|
|
continue; |
|
|
|
|
|
|
|
if (guildFeatures.Value.HasFlag(val)) |
|
|
|
{ |
|
|
|
writer.WriteValue(FeatureToApiString(val)); |
|
|
|
} |
|
|
|
} |
|
|
|
writer.WriteEndArray(); |
|
|
|
} |
|
|
|
|
|
|
|
private string FeatureToApiString(GuildFeature feature) |
|
|
|
{ |
|
|
|
var builder = new StringBuilder(); |
|
|
|
var firstChar = true; |
|
|
|
|
|
|
|
foreach (var c in feature.ToString().ToCharArray()) |
|
|
|
{ |
|
|
|
if (char.IsUpper(c)) |
|
|
|
{ |
|
|
|
if (firstChar) |
|
|
|
firstChar = false; |
|
|
|
else |
|
|
|
builder.Append("_"); |
|
|
|
|
|
|
|
builder.Append(c); |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
builder.Append(char.ToUpper(c)); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
return builder.ToString(); |
|
|
|
} |
|
|
|
} |
|
|
|
} |