geekai/api/service/oss/uploader_manager.go
2023-09-08 06:46:24 +08:00

43 lines
757 B
Go

package oss
import (
"chatplus/core/types"
"strings"
)
type UploaderManager struct {
handler Uploader
}
const Local = "LOCAL"
const Minio = "MINIO"
const QiNiu = "QINIU"
func NewUploaderManager(config *types.AppConfig) (*UploaderManager, error) {
active := Local
if config.OSS.Active != "" {
active = strings.ToUpper(config.OSS.Active)
}
var handler Uploader
switch active {
case Local:
handler = NewLocalStorageService(config)
break
case Minio:
service, err := NewMinioService(config)
if err != nil {
return nil, err
}
handler = service
break
case QiNiu:
handler = NewQiNiuService(config)
}
return &UploaderManager{handler: handler}, nil
}
func (m *UploaderManager) GetUploadHandler() Uploader {
return m.handler
}