C#C
C#4y ago
5 replies
Hulkstance

❔ Data Annotations Configuration Validation

Pretty self explanatory, how do I validate the configuration I'm getting from the AWS section based on Data Annotations?

public static IServiceCollection AddDynamoDb(this IServiceCollection services)
{
    ArgumentNullException.ThrowIfNull(services);

    services.AddSingleton<IAmazonDynamoDB>(provider =>
    {
        var configuration = provider.GetRequiredService<IConfiguration>();

        // TODO: Validate
        var dbConfiguration = configuration.GetSection("AWS:DynamoDB").Get<DynamoDbConfiguration>();

        if (dbConfiguration is null)
        {
            throw new ArgumentNullException(nameof(dbConfiguration), "Please configure DynamoDB");
        }

        return new AmazonDynamoDBClient(
            new BasicAWSCredentials(dbConfiguration.AccessKey, dbConfiguration.SecretKey),
            new AmazonDynamoDBConfig
            {
                ServiceURL = dbConfiguration.ServiceUrl,
                AuthenticationRegion = dbConfiguration.Region
            });
    });

    return services;
}

public class DynamoDbConfiguration
{
    [Required]
    public required string AccessKey { get; init; }

    [Required]
    public required string SecretKey { get; init; }

    [Required]
    [RegularExpression(@"[(http(s)?):\/\/(www\.)?a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)")]
    public required string ServiceUrl { get; init; }

    [Required]
    [RegularExpression(@"(us(-gov)?|ap|ca|cn|eu|sa)-(central|(north|south)?(east|west)?)-\d+")]
    public required string Region { get; init; }
}
Was this page helpful?