- 阿里云增加内网环境
continuous-integration/drone/push Build is passing Details
continuous-integration/drone/tag Build is passing Details

master v1.0.6
李光春 2 years ago
parent fa293a998a
commit 5c0da54d15

@ -3,9 +3,15 @@ type: docker
name: clone
steps:
- name: test-golang
- name: Test
image: golang:1.18
commands:
- go env -w GO111MODULE=on
- go env -w GOPROXY=https://goproxy.cn,direct
- go test -v ./...
- go test -v ./...
- name: Benchmark
image: golang:1.18
commands:
- go env -w GO111MODULE=on
- go env -w GOPROXY=https://goproxy.cn,direct
- go test -bench=. -benchmem

@ -1,37 +1,155 @@
package gostorage
import (
"errors"
"github.com/aliyun/aliyun-oss-go-sdk/oss"
"io"
"sync"
)
// AliYunConfig 阿里云配置
type AliYunConfig struct {
AccessKeyId string
AccessKeySecret string
Endpoint string
BucketName string
AccessKeyId string // 账号信息
AccessKeySecret string // 账号信息
Endpoint string // 地域节点 外网访问 test3
EndpointEcs string // 地域节点 ECS 的经典网络访问(内网) test1
EndpointAccelerate string // 地域节点 传输加速域名(全地域上传下载加速 test4
BucketName string // 存储空间名称
}
// AliYun 阿里云
type AliYun struct {
AliYunConfig
error error // 错误信息
client *oss.Client // 驱动
bucket *oss.Bucket // 存储空间
error error // 错误信息
client *oss.Client // 驱动
bucket *oss.Bucket // 存储空间
endpointError error // 错误信息
endpointEcsError error // 错误信息
endpointAccelerateError error // 错误信息
}
// NewAliYun 初始化
// https://help.aliyun.com/document_detail/32144.html
func NewAliYun(config *AliYunConfig) *AliYun {
func NewAliYun(config *AliYunConfig) (*AliYun, error) {
app := &AliYun{}
app.AccessKeyId = config.AccessKeyId
app.AccessKeySecret = config.AccessKeySecret
app.Endpoint = config.Endpoint
app.EndpointEcs = config.EndpointEcs
app.EndpointAccelerate = config.EndpointAccelerate
app.BucketName = config.BucketName
app.client, app.error = oss.New(app.Endpoint, app.AccessKeyId, app.AccessKeySecret)
app.bucket, app.error = app.client.Bucket(app.BucketName)
return app
wg := sync.WaitGroup{}
wg.Add(3)
go app.configEndpointEcs(&wg)
go app.configEndpoint(&wg)
go app.configEndpointAccelerate(&wg)
wg.Wait()
// 判断结果
if app.endpointEcsError == nil {
return app, nil
}
if app.endpointError == nil {
return app, nil
}
if app.endpointAccelerateError == nil {
return app, nil
}
return app, errors.New("链接失败")
}
func (c *AliYun) configEndpoint(wg *sync.WaitGroup) {
defer wg.Done()
if c.Endpoint == "" {
c.endpointError = errors.New("没有配置")
return
}
// 创建链接
c.client, c.endpointError = oss.New(c.Endpoint, c.AccessKeyId, c.AccessKeySecret)
if c.endpointError != nil {
return
}
// 填写存储空间名称
c.bucket, c.endpointError = c.client.Bucket(c.BucketName)
if c.endpointError != nil {
return
}
// 判断存储空间是否存在
_, c.endpointError = c.client.IsBucketExist(c.BucketName)
if c.endpointError != nil {
return
}
c.endpointError = nil
return
}
func (c *AliYun) configEndpointEcs(wg *sync.WaitGroup) {
defer wg.Done()
if c.EndpointEcs == "" {
c.endpointEcsError = errors.New("没有配置")
return
}
// 创建链接
c.client, c.endpointEcsError = oss.New(c.EndpointEcs, c.AccessKeyId, c.AccessKeySecret)
if c.endpointEcsError != nil {
return
}
// 填写存储空间名称
c.bucket, c.endpointEcsError = c.client.Bucket(c.BucketName)
if c.endpointEcsError != nil {
return
}
// 判断存储空间是否存在
_, c.endpointEcsError = c.client.IsBucketExist(c.BucketName)
if c.endpointEcsError != nil {
return
}
c.endpointEcsError = nil
return
}
func (c *AliYun) configEndpointAccelerate(wg *sync.WaitGroup) {
defer wg.Done()
if c.EndpointAccelerate == "" {
c.endpointAccelerateError = errors.New("没有配置")
return
}
// 创建链接
c.client, c.endpointAccelerateError = oss.New(c.EndpointAccelerate, c.AccessKeyId, c.AccessKeySecret)
if c.endpointAccelerateError != nil {
return
}
// 填写存储空间名称
c.bucket, c.endpointAccelerateError = c.client.Bucket(c.BucketName)
if c.endpointAccelerateError != nil {
return
}
// 判断存储空间是否存在
_, c.endpointAccelerateError = c.client.IsBucketExist(c.BucketName)
if c.endpointAccelerateError != nil {
return
}
c.endpointAccelerateError = nil
return
}
// Bucket 存储空间

@ -3,13 +3,13 @@ module go.dtapp.net/gostorage
go 1.18
require (
github.com/aliyun/aliyun-oss-go-sdk v2.2.3+incompatible
github.com/aws/aws-sdk-go v1.44.19
github.com/baidubce/bce-sdk-go v0.9.116
github.com/aliyun/aliyun-oss-go-sdk v2.2.4+incompatible
github.com/aws/aws-sdk-go v1.44.21
github.com/baidubce/bce-sdk-go v0.9.120
github.com/huaweicloud/huaweicloud-sdk-go-obs v3.21.12+incompatible
github.com/ks3sdklib/aws-sdk-go v1.1.4
github.com/qiniu/go-sdk/v7 v7.12.1
github.com/tencentyun/cos-go-sdk-v5 v0.7.34
github.com/tencentyun/cos-go-sdk-v5 v0.7.35
github.com/upyun/go-sdk/v3 v3.0.2
)

@ -1,13 +1,13 @@
github.com/KscSDK/ksc-sdk-go v0.1.42/go.mod h1:isHlJZi429ff5JLemSc10h7nznNgzJAY4MmNM8u7SBo=
github.com/QcloudApi/qcloud_sign_golang v0.0.0-20141224014652-e4130a326409/go.mod h1:1pk82RBxDY/JZnPQrtqHlUFfCctgdorsd9M06fMynOM=
github.com/aliyun/aliyun-oss-go-sdk v2.2.3+incompatible h1:KlwIELiuuvj7uMeEXrgXecPE3+xz/gGsDSnhL6Eztq0=
github.com/aliyun/aliyun-oss-go-sdk v2.2.3+incompatible/go.mod h1:T/Aws4fEfogEE9v+HPhhw+CntffsBHJ8nXQCwKr0/g8=
github.com/aliyun/aliyun-oss-go-sdk v2.2.4+incompatible h1:cD1bK/FmYTpL+r5i9lQ9EU6ScAjA173EVsii7gAc6SQ=
github.com/aliyun/aliyun-oss-go-sdk v2.2.4+incompatible/go.mod h1:T/Aws4fEfogEE9v+HPhhw+CntffsBHJ8nXQCwKr0/g8=
github.com/aws/aws-sdk-go v1.25.3/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo=
github.com/aws/aws-sdk-go v1.42.27/go.mod h1:OGr6lGMAKGlG9CVrYnWYDKIyb829c6EVBRjxqjmPepc=
github.com/aws/aws-sdk-go v1.44.19 h1:dhI6p4l6kisnA7gBAM8sP5YIk0bZ9HNAj7yrK7kcfdU=
github.com/aws/aws-sdk-go v1.44.19/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo=
github.com/baidubce/bce-sdk-go v0.9.116 h1:Z1iMDzM3nL8buwNDekRovol7RRHq+vbFrULu9Idj17E=
github.com/baidubce/bce-sdk-go v0.9.116/go.mod h1:zbYJMQwE4IZuyrJiFO8tO8NbtYiKTFTbwh4eIsqjVdg=
github.com/aws/aws-sdk-go v1.44.21 h1:xZBdJmgkTQuIrbq5jSi5gyUwyz4eRTvjmLoT+c+Ao/A=
github.com/aws/aws-sdk-go v1.44.21/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo=
github.com/baidubce/bce-sdk-go v0.9.120 h1:cm5kYeqPpAcVeIyLUscqNtebFAXHi8Ta6LCRwj1/bZE=
github.com/baidubce/bce-sdk-go v0.9.120/go.mod h1:zbYJMQwE4IZuyrJiFO8tO8NbtYiKTFTbwh4eIsqjVdg=
github.com/baiyubin/aliyun-sts-go-sdk v0.0.0-20180326062324-cfa1a18b161f h1:ZNv7On9kyUzm7fvRZumSyy/IUiSC7AzL0I1jKKtwooA=
github.com/baiyubin/aliyun-sts-go-sdk v0.0.0-20180326062324-cfa1a18b161f/go.mod h1:AuiFmCCPBSrqvVMvuqFuk0qogytodnVFVSN5CeJB8Gc=
github.com/clbanning/mxj v1.8.4 h1:HuhwZtbyvyOw+3Z1AowPkU87JkJUSv751ELWaiTpj8I=
@ -75,8 +75,8 @@ github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5Cc
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.194/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/kms v1.0.194/go.mod h1:yrBKWhChnDqNz1xuXdSbWXG56XawEq0G5j1lg4VwBD4=
github.com/tencentyun/cos-go-sdk-v5 v0.7.34 h1:xm+Pg+6m486y4eugRI7/E4WasbVmpY1hp9QBSRErgp8=
github.com/tencentyun/cos-go-sdk-v5 v0.7.34/go.mod h1:4dCEtLHGh8QPxHEkgq+nFaky7yZxQuYwgSJM87icDaw=
github.com/tencentyun/cos-go-sdk-v5 v0.7.35 h1:XVk5GQ4eH1q+DBUJfpaMMdU9TJZWMjwNNwv0PG5nbLQ=
github.com/tencentyun/cos-go-sdk-v5 v0.7.35/go.mod h1:4dCEtLHGh8QPxHEkgq+nFaky7yZxQuYwgSJM87icDaw=
github.com/upyun/go-sdk/v3 v3.0.2 h1:Ke+iOipK5CT0xzMwsgJsi7faJV7ID4lAs+wrH1RH0dA=
github.com/upyun/go-sdk/v3 v3.0.2/go.mod h1:P/SnuuwhrIgAVRd/ZpzDWqCsBAf/oHg7UggbAxyZa0E=
golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=

@ -1,3 +1,3 @@
package gostorage
const Version = "1.0.5"
const Version = "1.0.6"

Loading…
Cancel
Save