Skip to content

Commit 77988b7

Browse files
committed
move minio to a seperate file
1 parent 6d42170 commit 77988b7

File tree

4 files changed

+80
-62
lines changed

4 files changed

+80
-62
lines changed

go.mod

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ go 1.19
44

55
require (
66
github.com/Masterminds/semver v1.5.0
7+
github.com/aws/aws-sdk-go v1.51.31
8+
github.com/barelyhuman/go v0.2.2
79
github.com/google/go-github/v53 v53.2.0
810
github.com/joho/godotenv v1.5.1
911
github.com/minio/minio-go/v7 v7.0.66
@@ -18,6 +20,7 @@ require (
1820
github.com/golang/protobuf v1.5.3 // indirect
1921
github.com/google/go-querystring v1.1.0 // indirect
2022
github.com/google/uuid v1.6.0 // indirect
23+
github.com/jmespath/go-jmespath v0.4.0 // indirect
2124
github.com/json-iterator/go v1.1.12 // indirect
2225
github.com/klauspost/compress v1.17.5 // indirect
2326
github.com/klauspost/cpuid/v2 v2.2.6 // indirect

go.sum

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,10 @@ github.com/Masterminds/semver v1.5.0 h1:H65muMkzWKEuNDnfl9d70GUjFniHKHRbFPGBuZ3Q
22
github.com/Masterminds/semver v1.5.0/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y=
33
github.com/ProtonMail/go-crypto v1.0.0 h1:LRuvITjQWX+WIfr930YHG2HNfjR1uOfyf5vE0kC2U78=
44
github.com/ProtonMail/go-crypto v1.0.0/go.mod h1:EjAoLdwvbIOoOQr3ihjnSoLZRtE8azugULFRteWMNc0=
5+
github.com/aws/aws-sdk-go v1.51.31 h1:4TM+sNc+Dzs7wY1sJ0+J8i60c6rkgnKP1pvPx8ghsSY=
6+
github.com/aws/aws-sdk-go v1.51.31/go.mod h1:LF8svs817+Nz+DmiMQKTO3ubZ/6IaTpq3TjupRn3Eqk=
7+
github.com/barelyhuman/go v0.2.2 h1:Lpk1XrlP40F3II8BibVzViZUOJ1GgDdzXUBb8ENwb0U=
8+
github.com/barelyhuman/go v0.2.2/go.mod h1:hox2iDYZAarjpS7jKQeYIi2F+qMA8KLMtCws++L2sSY=
59
github.com/bwesterb/go-ristretto v1.2.3/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0=
610
github.com/cloudflare/circl v1.3.3/go.mod h1:5XYMA4rFBvNIrhs50XuiBJ15vF2pZn4nnUKZrLbUZFA=
711
github.com/cloudflare/circl v1.3.7 h1:qlCDlTPz2n9fu58M0Nh1J/JzcFpfgkFHHX3O35r5vcU=
@@ -25,6 +29,10 @@ github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17
2529
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
2630
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
2731
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
32+
github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg=
33+
github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo=
34+
github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8=
35+
github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U=
2836
github.com/joho/godotenv v1.5.1 h1:7eLL/+HRGLY0ldzfGMeQkb7vMd0as4CfYvUVzLqw0N0=
2937
github.com/joho/godotenv v1.5.1/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwAbqwq4=
3038
github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=
@@ -129,6 +137,8 @@ gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8
129137
gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA=
130138
gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
131139
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
140+
gopkg.in/yaml.v2 v2.2.8 h1:obN1ZagJSUGI0Ek/LBmuj4SNLPfIny3KsKFopxRdj10=
141+
gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
132142
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
133143
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
134144
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=

storage/minio.go

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
package storage
2+
3+
import (
4+
"context"
5+
"fmt"
6+
"net/url"
7+
"os"
8+
"time"
9+
10+
"github.com/minio/minio-go/v7"
11+
"github.com/minio/minio-go/v7/pkg/credentials"
12+
)
13+
14+
type MinioStorage struct {
15+
Client *minio.Client
16+
BucketName string
17+
}
18+
19+
func (s *MinioStorage) Connect() error {
20+
endpoint := os.Getenv("MINIO_URL")
21+
useSSL := false
22+
23+
client, err := minio.New(endpoint, &minio.Options{
24+
Creds: credentials.NewStaticV4(
25+
os.Getenv("MINIO_ROOT_USER"),
26+
os.Getenv("MINIO_ROOT_PASSWORD"),
27+
""),
28+
Secure: useSSL,
29+
})
30+
if err != nil {
31+
return err
32+
}
33+
34+
s.Client = client
35+
return nil
36+
}
37+
38+
func (s *MinioStorage) Upload(objectName string, filePath string) error {
39+
40+
ctx := context.Background()
41+
bucketName := s.BucketName
42+
43+
info, err := s.Client.FPutObject(ctx, bucketName, objectName, filePath, minio.PutObjectOptions{})
44+
if err != nil {
45+
return err
46+
}
47+
48+
fmt.Println(info)
49+
return nil
50+
}
51+
52+
func (s *MinioStorage) GetSignedURL(objectName string, alias string) (string, error) {
53+
reqParams := make(url.Values)
54+
reqParams.Set("response-content-disposition", "attachment; filename=\""+alias+"\"")
55+
presignedURL, err := s.Client.PresignedGetObject(context.Background(), s.BucketName, objectName, time.Minute*5, reqParams)
56+
if err != nil {
57+
return "", err
58+
}
59+
60+
url := os.Getenv("MINIO_URL_PREFIX") + presignedURL.RequestURI()
61+
62+
return url, nil
63+
}

storage/storage.go

Lines changed: 4 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -1,65 +1,7 @@
11
package storage
22

3-
import (
4-
"context"
5-
"fmt"
6-
"net/url"
7-
"os"
8-
"time"
9-
10-
"github.com/minio/minio-go/v7"
11-
"github.com/minio/minio-go/v7/pkg/credentials"
12-
)
13-
14-
type Storage struct {
15-
Client *minio.Client
16-
BucketName string
17-
}
18-
19-
func (s *Storage) Connect() error {
20-
endpoint := os.Getenv("MINIO_URL")
21-
useSSL := false
22-
23-
// Initialize minio client object.
24-
client, err := minio.New(endpoint, &minio.Options{
25-
Creds: credentials.NewStaticV4(
26-
os.Getenv("MINIO_ROOT_USER"),
27-
os.Getenv("MINIO_ROOT_PASSWORD"),
28-
""),
29-
Secure: useSSL,
30-
})
31-
if err != nil {
32-
return err
33-
}
34-
35-
s.Client = client
36-
return nil
37-
}
38-
39-
func (s *Storage) Upload(objectName string, filePath string) error {
40-
41-
ctx := context.Background()
42-
bucketName := s.BucketName
43-
44-
// Upload the zip file with FPutObject
45-
info, err := s.Client.FPutObject(ctx, bucketName, objectName, filePath, minio.PutObjectOptions{})
46-
if err != nil {
47-
return err
48-
}
49-
50-
fmt.Println(info)
51-
return nil
52-
}
53-
54-
func (s *Storage) GetSignedURL(objectName string, alias string) (string, error) {
55-
reqParams := make(url.Values)
56-
reqParams.Set("response-content-disposition", "attachment; filename=\""+alias+"\"")
57-
presignedURL, err := s.Client.PresignedGetObject(context.Background(), s.BucketName, objectName, time.Minute*5, reqParams)
58-
if err != nil {
59-
return "", err
60-
}
61-
62-
url := os.Getenv("MINIO_URL_PREFIX") + presignedURL.RequestURI()
63-
64-
return url, nil
3+
type Storage interface {
4+
Connect() error
5+
Upload(objectName, filePath string) error
6+
GetSignedURL(objectName, path string) error
657
}

0 commit comments

Comments
 (0)