/// <summary> /// Adds supporting services for the Discord API. /// </summary> /// <param name="serviceCollection">The service collection.</param> /// <param name="allowUnknownEvents">Whether the API will deserialize unknown events.</param> /// <returns>The service collection, with the services.</returns> public static IServiceCollection AddDiscordApi ( this IServiceCollection serviceCollection, bool allowUnknownEvents = true ) { serviceCollection .Configure <JsonSerializerOptions> ( options => { var snakeCasePolicy = new SnakeCaseNamingPolicy(); options.Converters.Add(new PayloadConverter(allowUnknownEvents)); options .AddGatewayBidirectionalConverters() .AddGatewayCommandConverters() .AddGatewayEventConverters() .AddActivityObjectConverters() .AddAuditLogObjectConverters() .AddChannelObjectConverters() .AddEmojiObjectConverters() .AddGatewayObjectConverters() .AddGuildObjectConverters() .AddImageObjectConverters() .AddIntegrationObjectConverters() .AddInviteObjectConverters() .AddMessageObjectConverters() .AddPermissionObjectConverters() .AddPresenceObjectConverters() .AddReactionObjectConverters() .AddUserObjectConverters() .AddVoiceObjectConverters() .AddWebhookObjectConverters() .AddErrorObjectConverters() .AddTemplateObjectConverters() .AddInteractionObjectConverters() .AddOAuth2ObjectConverters() .AddTeamObjectConverters() .AddStageInstanceObjectConverters(); options.AddDataObjectConverter <IUnknownEvent, UnknownEvent>(); options .AddConverter <OptionalConverterFactory>() .AddConverter <NullableConverterFactory>() .AddConverter <SnowflakeConverter>() .AddConverter <ColorConverter>() .AddConverter <PropertyErrorDetailsConverter>() .AddConverter <OneOfConverterFactory>() .AddConverter <ISO8601DateTimeOffsetConverter>(); options.PropertyNamingPolicy = snakeCasePolicy; options.DictionaryKeyPolicy = snakeCasePolicy; } ); return(serviceCollection); }
public void ConvertNameTest() { var policy = new SnakeCaseNamingPolicy(); Assert.Equal("foo", policy.ConvertName("Foo")); Assert.Equal("foo_bar", policy.ConvertName("FooBar")); }
/// <summary> /// Adds the JSON converters that handle presence objects. /// </summary> /// <param name="options">The serializer options.</param> /// <returns>The options, with the converters added.</returns> private static JsonSerializerOptions AddPresenceObjectConverters(this JsonSerializerOptions options) { var snakeCase = new SnakeCaseNamingPolicy(); options.AddDataObjectConverter <IClientStatuses, ClientStatuses>() .WithPropertyConverter(p => p.Desktop, new StringEnumConverter <ClientStatus>(snakeCase)) .WithPropertyConverter(p => p.Mobile, new StringEnumConverter <ClientStatus>(snakeCase)) .WithPropertyConverter(p => p.Web, new StringEnumConverter <ClientStatus>(snakeCase)); options.AddDataObjectConverter <IPresence, Presence>() .WithPropertyConverter(p => p.Status, new StringEnumConverter <ClientStatus>(snakeCase)); options.AddDataObjectConverter <IPartialPresence, PartialPresence>() .WithPropertyConverter(p => p.Status, new StringEnumConverter <ClientStatus>(snakeCase)); return(options); }
public void ConvertsCorrectly(string input, string expected) { var snakeCase = new SnakeCaseNamingPolicy(); Assert.Equal(expected, snakeCase.ConvertName(input)); }
public SnakeCaseNamingPolicyTests() { _policy = new SnakeCaseNamingPolicy(); }
public void TestCase() { var policy = new SnakeCaseNamingPolicy(); Assert.AreEqual("this_is_a_test", policy.ConvertName("ThisIsATest")); }
public void _Setup() { _sut = new SnakeCaseNamingPolicy(); }