|
@@ -0,0 +1,70 @@
|
|
|
|
|
+package paas
|
|
|
|
|
+
|
|
|
|
|
+import (
|
|
|
|
|
+ "github.com/kataras/iris/v12"
|
|
|
|
|
+ "github.com/minio/minio-go/v7"
|
|
|
|
|
+ "github.com/minio/minio-go/v7/pkg/credentials"
|
|
|
|
|
+ "log"
|
|
|
|
|
+)
|
|
|
|
|
+
|
|
|
|
|
+type MinioClient struct {
|
|
|
|
|
+ ctx iris.Context
|
|
|
|
|
+ client *minio.Client
|
|
|
|
|
+ fileBucket string
|
|
|
|
|
+ iconBucket string
|
|
|
|
|
+ location string
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+func NewClient(ctx iris.Context) *MinioClient {
|
|
|
|
|
+ var minioHost = ""
|
|
|
|
|
+ var minioPort = ""
|
|
|
|
|
+ var accessKey = ""
|
|
|
|
|
+ var secretKey = ""
|
|
|
|
|
+ minioClient, err := minio.New(
|
|
|
|
|
+ minioHost + ":"+ minioPort,
|
|
|
|
|
+ &minio.Options{
|
|
|
|
|
+ Creds: credentials.NewStaticV4(accessKey, secretKey, ""),
|
|
|
|
|
+ Secure: false,
|
|
|
|
|
+ })
|
|
|
|
|
+ if err != nil {
|
|
|
|
|
+ log.Fatalf("connect minio server fail %s url %s", err.Error(), err.Error(), minioHost+":"+minioPort)
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ return &MinioClient{
|
|
|
|
|
+ ctx: ctx,
|
|
|
|
|
+ client: minioClient,
|
|
|
|
|
+ location: "us-east-1",
|
|
|
|
|
+ fileBucket: "file",
|
|
|
|
|
+ iconBucket: "icon",
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+func (c *MinioClient) checkBuckets() bool {
|
|
|
|
|
+ b1 := c.checkBucket(c.fileBucket)
|
|
|
|
|
+ b2 := c.checkBucket(c.iconBucket)
|
|
|
|
|
+ return b1&&b2
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+func (c *MinioClient) checkBucket(bucketName string) bool {
|
|
|
|
|
+ isExist, err1 := c.client.BucketExists(c.ctx, bucketName)
|
|
|
|
|
+ if err1 != nil {
|
|
|
|
|
+ log.Fatalf("checkBucket error " + err1.Error())
|
|
|
|
|
+ return false
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if !isExist {
|
|
|
|
|
+ err2 := c.client.MakeBucket(c.ctx, bucketName, minio.MakeBucketOptions{Region: c.location})
|
|
|
|
|
+ if err2 != nil {
|
|
|
|
|
+ log.Fatalf("checkBucket error " + err2.Error())
|
|
|
|
|
+ return false
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ return true
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+func (c *MinioClient) uploadObject(objectName, localFileName string) {
|
|
|
|
|
+ _, err := c.client.FPutObject(c.ctx, c.fileBucket, objectName, localFileName, minio.PutObjectOptions{})
|
|
|
|
|
+ if err != nil {
|
|
|
|
|
+ log.Fatalf("upload object error" + err.Error())
|
|
|
|
|
+ }
|
|
|
|
|
+}
|