32 lines
833 B
Go
32 lines
833 B
Go
|
|
package storage
|
||
|
|
|
||
|
|
import (
|
||
|
|
"time"
|
||
|
|
|
||
|
|
"git.apinb.com/ops/files/internal/config"
|
||
|
|
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
|
||
|
|
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
|
||
|
|
)
|
||
|
|
|
||
|
|
type Client struct {
|
||
|
|
client *oss.Client
|
||
|
|
bucket string
|
||
|
|
publicBaseURL string
|
||
|
|
presignTTL time.Duration
|
||
|
|
}
|
||
|
|
|
||
|
|
func New(cfg config.ObjectStorageConf) (*Client, error) {
|
||
|
|
ossConfig := oss.LoadDefaultConfig().
|
||
|
|
WithRegion(cfg.Region).
|
||
|
|
WithEndpoint(cfg.Endpoint).
|
||
|
|
WithCredentialsProvider(credentials.NewStaticCredentialsProvider(cfg.AccessKeyID, cfg.AccessKeySecret)).
|
||
|
|
WithSignatureVersion(oss.SignatureVersionV4)
|
||
|
|
|
||
|
|
return &Client{
|
||
|
|
client: oss.NewClient(ossConfig),
|
||
|
|
bucket: cfg.Bucket,
|
||
|
|
publicBaseURL: cfg.PublicBaseURL,
|
||
|
|
presignTTL: time.Duration(cfg.PresignTTLSeconds) * time.Second,
|
||
|
|
}, nil
|
||
|
|
}
|