From 28882af18fd8db9537e05aa3fe32e85f041c6199 Mon Sep 17 00:00:00 2001 From: Sydonian <794346190@qq.com> Date: Fri, 14 Feb 2025 11:00:56 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=AF=E6=8C=81=E9=80=9A=E7=94=A8=E7=9A=84S3?= =?UTF-8?q?=E5=AD=98=E5=82=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sdks/storage/public_storage.go | 15 +++++++++++++++ sdks/storage/storage.go | 20 ++++++++++++++++++++ 2 files changed, 35 insertions(+) diff --git a/sdks/storage/public_storage.go b/sdks/storage/public_storage.go index 59d1341..761a6a8 100644 --- a/sdks/storage/public_storage.go +++ b/sdks/storage/public_storage.go @@ -15,6 +15,7 @@ type PublicStoreConfig interface { var _ = serder.UseTypeUnionInternallyTagged(types.Ref(types.NewTypeUnion[PublicStoreConfig]( (*LocalPublicStorage)(nil), + (*S3PublicStorage)(nil), )), "type") type LocalPublicStorage struct { @@ -31,3 +32,17 @@ func (s *LocalPublicStorage) GetPublicStoreType() string { func (s *LocalPublicStorage) String() string { return fmt.Sprintf("Local[LoadBase=%v]", s.LoadBase) } + +type S3PublicStorage struct { + serder.Metadata `union:"S3"` + Type string `json:"type"` + LoadBase string `json:"loadBase"` +} + +func (s *S3PublicStorage) GetPublicStoreType() string { + return "S3" +} + +func (s *S3PublicStorage) String() string { + return fmt.Sprintf("S3[LoadBase=%v]", s.LoadBase) +} diff --git a/sdks/storage/storage.go b/sdks/storage/storage.go index cfbca6d..9f1fffd 100644 --- a/sdks/storage/storage.go +++ b/sdks/storage/storage.go @@ -44,6 +44,7 @@ var _ = serder.UseTypeUnionInternallyTagged(types.Ref(types.NewTypeUnion[Storage (*OSSType)(nil), (*COSType)(nil), (*EFileType)(nil), + (*S3Type)(nil), )), "type") // 多种存储服务的混合存储服务。需谨慎选择存储服务的组合,避免出Bug @@ -149,3 +150,22 @@ func (a *EFileType) GetStorageType() string { func (a *EFileType) String() string { return "EFile" } + +// 通用的S3协议的存储服务 +type S3Type struct { + serder.Metadata `union:"S3"` + Type string `json:"type"` + Region string `json:"region"` + AK string `json:"accessKeyId"` + SK string `json:"secretAccessKey"` + Endpoint string `json:"endpoint"` + Bucket string `json:"bucket"` +} + +func (a *S3Type) GetStorageType() string { + return "S3" +} + +func (a *S3Type) String() string { + return "S3" +}