You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
84 lines
2.5 KiB
84 lines
2.5 KiB
package fileConfig
|
|
|
|
import (
|
|
fileAsw "epur-pay/pkg/fileserver/asw"
|
|
fileCos "epur-pay/pkg/fileserver/cos"
|
|
fileLocal "epur-pay/pkg/fileserver/local"
|
|
fileOss "epur-pay/pkg/fileserver/oss"
|
|
"epur-pay/pkg/logger"
|
|
"epur-pay/pkg/utils"
|
|
)
|
|
|
|
var Cf *config
|
|
|
|
type config struct {
|
|
Store *Store //当前使用的桶
|
|
Stores []*Store
|
|
}
|
|
|
|
/*
|
|
存储类型
|
|
|
|
oss 阿里云oss
|
|
cos 腾讯云
|
|
asw 亚马逊
|
|
local 本地local
|
|
*/
|
|
type Store struct {
|
|
StoreType string
|
|
Api api
|
|
}
|
|
|
|
type api interface {
|
|
Put(fileName string, contentType string, data interface{}) string
|
|
ReadUrl(filePath string) string
|
|
Token(key string, contentType string) (map[string]interface{}, error)
|
|
}
|
|
|
|
type FileStoreRequest struct {
|
|
AccessKeyId, AccessKeySecret, BucketName, EndPoint, Access, RegionId string
|
|
Private bool
|
|
StoreType string
|
|
}
|
|
|
|
func New(f *FileStoreRequest) {
|
|
|
|
Cf = &config{
|
|
Stores: []*Store{},
|
|
}
|
|
|
|
if f.StoreType == "oss" {
|
|
store, err := fileOss.New(f.AccessKeyId, f.AccessKeySecret, f.BucketName, f.EndPoint, f.Access, f.RegionId, f.Private)
|
|
utils.Error(err)
|
|
currStore := &Store{StoreType: f.StoreType, Api: store}
|
|
Cf.Stores = append(Cf.Stores, currStore)
|
|
Cf.Store = currStore
|
|
|
|
logger.AccessLogger.Infof("---> StoreType: %s Access: %s", f.StoreType, store.Access)
|
|
} else if f.StoreType == "cos" {
|
|
store, err := fileCos.New(f.AccessKeyId, f.AccessKeySecret, f.BucketName, f.EndPoint, f.Access, f.RegionId)
|
|
utils.Error(err)
|
|
currStore := &Store{StoreType: f.StoreType, Api: store}
|
|
Cf.Stores = append(Cf.Stores, currStore)
|
|
Cf.Store = currStore
|
|
|
|
logger.AccessLogger.Infof("---> StoreType: %s Access: %s", f.StoreType, store.Access)
|
|
} else if f.StoreType == "asw" {
|
|
store, err := fileAsw.New(f.AccessKeyId, f.AccessKeySecret, f.BucketName, f.EndPoint, f.Access, f.RegionId)
|
|
utils.Error(err)
|
|
currStore := &Store{StoreType: f.StoreType, Api: store}
|
|
Cf.Stores = append(Cf.Stores, currStore)
|
|
Cf.Store = currStore
|
|
|
|
logger.AccessLogger.Infof("---> StoreType: %s Access: %s", f.StoreType, store.Access)
|
|
} else if f.StoreType == "local" {
|
|
store, err := fileLocal.New(f.AccessKeyId, f.AccessKeySecret, f.BucketName, f.EndPoint, f.Access, f.RegionId)
|
|
utils.Error(err)
|
|
currStore := &Store{StoreType: f.StoreType, Api: store}
|
|
Cf.Stores = append(Cf.Stores, currStore)
|
|
Cf.Store = currStore
|
|
|
|
logger.AccessLogger.Infof("---> StoreType: %s Access: %s", f.StoreType, store.Access)
|
|
}
|
|
}
|