fix: change s3

This commit is contained in:
2026-09-15 21:13:37 +07:00
parent 52685e86ea
commit 4078bf01f4
9 changed files with 119 additions and 242 deletions
+18 -9
View File
@@ -1,13 +1,16 @@
using Amazon.Runtime;
using Amazon.S3;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Options;
using mws.backend.dotnet.application.Auth;
using mws.backend.dotnet.application.Common;
using mws.backend.dotnet.application.Documents;
using mws.backend.dotnet.application.Permissions;
using mws.backend.dotnet.infrastructure.Authentication;
using mws.backend.dotnet.infrastructure.CloudFile;
using mws.backend.dotnet.infrastructure.Persistence;
using mws.backend.dotnet.infrastructure.Storage;
namespace mws.backend.dotnet.infrastructure;
@@ -39,16 +42,22 @@ public static class DependencyInjection
services.AddScoped<IPermissionService, PermissionService>();
services.Configure<CloudFileOptions>(configuration.GetSection("CloudFile"));
services.AddHttpClient<ICloudFileHttpClient, CloudFileHttpClient>((sp, http) =>
services.Configure<MinioOptions>(configuration.GetSection("Minio"));
services.AddSingleton<IAmazonS3>(sp =>
{
var options = sp.GetRequiredService<Microsoft.Extensions.Options.IOptions<CloudFileOptions>>().Value;
#pragma warning disable S1075 // hardcoded URL — this is a configurable base address from appsettings
http.BaseAddress = new Uri(options.BaseUrl.TrimEnd('/') + "/");
#pragma warning restore S1075
http.Timeout = TimeSpan.FromSeconds(options.HttpTimeoutSeconds);
var options = sp.GetRequiredService<IOptions<MinioOptions>>().Value;
return new AmazonS3Client(
new BasicAWSCredentials(options.AccessKey, options.SecretKey),
new AmazonS3Config
{
ServiceURL = options.Endpoint,
ForcePathStyle = true,
UseHttp = options.Endpoint.StartsWith("http://", StringComparison.OrdinalIgnoreCase),
RequestChecksumCalculation = RequestChecksumCalculation.WHEN_REQUIRED,
ResponseChecksumValidation = ResponseChecksumValidation.WHEN_REQUIRED,
});
});
services.AddScoped<IDocumentContentStore, CloudFileDocumentContentStore>();
services.AddScoped<IDocumentContentStore, S3DocumentContentStore>();
return services;
}