feat(dev): containerize local dependencies
Some checks failed
ci / release-gate (push) Has been cancelled
Some checks failed
ci / release-gate (push) Has been cancelled
This commit is contained in:
@@ -18,9 +18,15 @@ internal static class ExternalServiceOptionsExtensions
|
||||
configuration.GetSection(ObjectStorageOptions.SectionName));
|
||||
services.Configure<AliyunOssOptions>(
|
||||
configuration.GetSection(AliyunOssOptions.SectionName));
|
||||
services.Configure<S3CompatibleOptions>(
|
||||
configuration.GetSection(S3CompatibleOptions.SectionName));
|
||||
services.PostConfigure<ObjectStorageOptions>(options =>
|
||||
{
|
||||
options.DefaultProvider = configuration["STORAGE_DEFAULT_PROVIDER"] ?? options.DefaultProvider;
|
||||
if (!environment.IsProduction() &&
|
||||
options.DefaultProvider == ObjectStorageProviders.AliyunOss &&
|
||||
!HasConfiguredAliyunOss(configuration))
|
||||
options.DefaultProvider = ObjectStorageProviders.LocalDev;
|
||||
options.DefaultBucket = configuration["STORAGE_DEFAULT_BUCKET"] ?? options.DefaultBucket;
|
||||
options.PublicBaseUrl = configuration["STORAGE_PUBLIC_BASE_URL"] ?? options.PublicBaseUrl;
|
||||
options.AllowedMimePrefixes = SplitLegacyList(
|
||||
@@ -53,6 +59,16 @@ internal static class ExternalServiceOptionsExtensions
|
||||
? useInternalEndpoint
|
||||
: options.UseInternalEndpoint;
|
||||
});
|
||||
services.PostConfigure<S3CompatibleOptions>(options =>
|
||||
{
|
||||
options.Endpoint = configuration["S3_ENDPOINT"] ?? options.Endpoint;
|
||||
options.AccessKey = configuration["S3_ACCESS_KEY"] ?? options.AccessKey;
|
||||
options.SecretKey = configuration["S3_SECRET_KEY"] ?? options.SecretKey;
|
||||
options.Region = configuration["S3_REGION"] ?? options.Region;
|
||||
options.Secure = bool.TryParse(configuration["S3_SECURE"], out var secure)
|
||||
? secure
|
||||
: options.Secure;
|
||||
});
|
||||
services.AddOptions<ObjectStorageOptions>()
|
||||
.Validate(
|
||||
options => !environment.IsProduction() ||
|
||||
@@ -67,6 +83,12 @@ internal static class ExternalServiceOptionsExtensions
|
||||
aliyun.IsConfigured,
|
||||
"Aliyun OSS credentials and region or endpoint are required when it is the default provider.")
|
||||
.ValidateOnStart();
|
||||
services.AddOptions<S3CompatibleOptions>()
|
||||
.Validate<IOptions<ObjectStorageOptions>>(
|
||||
(s3, storage) =>
|
||||
storage.Value.DefaultProvider != ObjectStorageProviders.LocalDev || s3.IsConfigured,
|
||||
"S3-compatible endpoint and credentials are required when local_dev is the default provider.")
|
||||
.ValidateOnStart();
|
||||
services.AddOptions<ClamAvOptions>()
|
||||
.Bind(configuration.GetSection(ClamAvOptions.SectionName))
|
||||
.Validate(ClamAvOptions.BeValid, "ClamAV settings are invalid.")
|
||||
@@ -112,4 +134,16 @@ internal static class ExternalServiceOptionsExtensions
|
||||
? fallback
|
||||
: value.Split(',', StringSplitOptions.TrimEntries | StringSplitOptions.RemoveEmptyEntries);
|
||||
}
|
||||
}
|
||||
|
||||
private static bool HasConfiguredAliyunOss(IConfiguration configuration)
|
||||
{
|
||||
return !string.IsNullOrWhiteSpace(configuration["ALIYUN_OSS_ACCESS_KEY_ID"] ??
|
||||
configuration["Storage:AliyunOss:AccessKeyId"]) &&
|
||||
!string.IsNullOrWhiteSpace(configuration["ALIYUN_OSS_ACCESS_KEY_SECRET"] ??
|
||||
configuration["Storage:AliyunOss:AccessKeySecret"]) &&
|
||||
(!string.IsNullOrWhiteSpace(configuration["ALIYUN_OSS_REGION"] ??
|
||||
configuration["Storage:AliyunOss:Region"]) ||
|
||||
!string.IsNullOrWhiteSpace(configuration["ALIYUN_OSS_ENDPOINT"] ??
|
||||
configuration["Storage:AliyunOss:Endpoint"]));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user