mirror of
https://github.com/yangjian102621/geekai.git
synced 2025-11-11 11:43:43 +08:00
feat: add oss service factory implements, add support for setting custom upload handler, localstorage and minio oss
This commit is contained in:
37
api/service/oss/uploader_manager.go
Normal file
37
api/service/oss/uploader_manager.go
Normal file
@@ -0,0 +1,37 @@
|
||||
package oss
|
||||
|
||||
import (
|
||||
"chatplus/core/types"
|
||||
"strings"
|
||||
)
|
||||
|
||||
type UploaderManager struct {
|
||||
active string
|
||||
uploadServices map[string]Uploader
|
||||
}
|
||||
|
||||
const uploaderLocal = "LOCAL"
|
||||
const uploaderMinio = "MINIO"
|
||||
|
||||
func NewUploaderManager(config *types.AppConfig) (*UploaderManager, error) {
|
||||
services := make(map[string]Uploader)
|
||||
if config.OSS.Minio.AccessKey != "" {
|
||||
minioService, err := NewMinioService(config)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
services[uploaderMinio] = minioService
|
||||
}
|
||||
if config.OSS.Local.BasePath != "" {
|
||||
services[uploaderLocal] = NewLocalStorageService(config)
|
||||
}
|
||||
active := uploaderLocal
|
||||
if config.OSS.Active != "" {
|
||||
active = strings.ToUpper(config.OSS.Active)
|
||||
}
|
||||
return &UploaderManager{uploadServices: services, active: active}, nil
|
||||
}
|
||||
|
||||
func (m *UploaderManager) GetActiveService() Uploader {
|
||||
return m.uploadServices[m.active]
|
||||
}
|
||||
Reference in New Issue
Block a user