/
storage.go
44 lines (39 loc) · 998 Bytes
/
storage.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
package storage
import (
"github.com/go-ggz/ggz/config"
"github.com/go-ggz/ggz/module/storage/disk"
"github.com/go-ggz/ggz/module/storage/minio"
)
// Storage for s3 and disk
type Storage interface {
// CreateBucket for create new folder
CreateBucket(string, string) error
// UploadFile for upload single file
UploadFile(string, string, []byte) error
// DeleteFile for delete single file
DeleteFile(string, string) error
// FilePath for store path + file name
FilePath(string, string) string
// GetFile for storage host + bucket + filename
GetFile(string, string) string
}
// S3 for storage interface
var S3 Storage
// NewEngine return storage interface
func NewEngine() (Storage, error) {
switch config.Storage.Driver {
case "s3":
return minio.NewEngine(
config.Minio.EndPoint,
config.Minio.AccessID,
config.Minio.SecretKey,
config.Minio.SSL,
)
case "disk":
return disk.NewEngine(
config.Server.Host,
config.Storage.Path,
), nil
}
return nil, nil
}