Esempio n. 1
0
        /// <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"));
    }
Esempio n. 3
0
        /// <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);
        }
Esempio n. 4
0
        public void ConvertsCorrectly(string input, string expected)
        {
            var snakeCase = new SnakeCaseNamingPolicy();

            Assert.Equal(expected, snakeCase.ConvertName(input));
        }
 public SnakeCaseNamingPolicyTests()
 {
     _policy = new SnakeCaseNamingPolicy();
 }
Esempio n. 6
0
        public void TestCase()
        {
            var policy = new SnakeCaseNamingPolicy();

            Assert.AreEqual("this_is_a_test", policy.ConvertName("ThisIsATest"));
        }
 public void _Setup()
 {
     _sut = new SnakeCaseNamingPolicy();
 }