using Amazon.Runtime; using LiteCharms.Features.S3; using LiteCharms.Features.S3.Configuration; namespace LiteCharms.Features.Extensions; public static class S3 { public static IServiceCollection AddGarageS3(this IServiceCollection services, IConfiguration configuration) { var optionsSection = configuration.GetSection(nameof(S3Settings)); services.Configure(optionsSection); var options = optionsSection.Get() ?? throw new InvalidOperationException("S3 configuration section is missing."); var credentials = new BasicAWSCredentials(options.AccessKey, options.SecretKey); var s3Config = new AmazonS3Config { ServiceURL = options.ServiceUrl, AuthenticationRegion = options.Region, ForcePathStyle = true, }; services.AddSingleton(new AmazonS3Client(credentials, s3Config)); services.AddScoped(); return services; } }