Files
chain33-dtalk/pkg/oss/oss.go
2022-03-17 15:59:24 +08:00

84 lines
2.4 KiB
Go

package oss
import (
"io"
)
type Oss interface {
Config() *Config
AssumeRole() (*AssumeRoleResp, error)
Upload(string, io.Reader, int64) (url, uri string, err error)
InitiateMultipartUpload(key string) (uploadId string, err error)
UploadPart(key, uploadId string, body io.Reader, partNumber int32, offset, partSize int64) (ETag string, err error)
CompleteMultipartUpload(key, uploadId string, parts []Part) (url, uri string, err error)
AbortMultipartUpload(key, uploadId string) error
GetHost() string
}
type Config struct {
RegionId string
AccessKeyId string
AccessKeySecret string
Role string
Policy string
DurationSeconds int
Bucket string
EndPoint string
PublicUrl string
}
type Part struct {
// 段数据的MD5值
ETag string `json:"ETag" form:"ETag" binding:"required"`
// 分段序号, 范围是1~10000
PartNumber int32 `json:"partNumber" form:"partNumber" binding:"required"`
}
// 结构体数组
type Parts []Part
// 下面的三个函数必须实现(获取长度函数,交换函数,比较函数)
func (p Parts) Len() int {
return len(p)
}
func (p Parts) Swap(i, j int) {
p[i], p[j] = p[j], p[i]
}
func (p Parts) Less(i, j int) bool {
return p[i].PartNumber < p[j].PartNumber
}
//{
//"Credentials": {
//"AccessKeyId": "STS.L4aBSCSJVMuKg5U1****",
//"AccessKeySecret": "wyLTSmsyPGP1ohvvw8xYgB29dlGI8KMiH2pK****",
//"Expiration": "2015-04-09T11:52:19Z",
//"SecurityToken": "********"
//},
//"AssumedRoleUser": {
//"Arn": "acs:ram::123456789012****:role/adminrole/alice",
//"AssumedRoleId":"34458433936495****:alice"
//},
//"RequestId": "6894B13B-6D71-4EF5-88FA-F32781734A7F"
//}
type AssumeRoleResp struct {
RequestId string `json:"RequestId" xml:"RequestId"`
Credentials Credentials `json:"Credentials" xml:"Credentials"`
AssumedRoleUser AssumedRoleUser `json:"AssumedRoleUser" xml:"AssumedRoleUser"`
}
// Credentials is a nested struct in sts response
type Credentials struct {
AccessKeySecret string `json:"AccessKeySecret" xml:"AccessKeySecret"`
Expiration string `json:"Expiration" xml:"Expiration"`
AccessKeyId string `json:"AccessKeyId" xml:"AccessKeyId"`
SecurityToken string `json:"SecurityToken" xml:"SecurityToken"`
}
// AssumedRoleUser is a nested struct in sts response
type AssumedRoleUser struct {
AssumedRoleId string `json:"AssumedRoleId" xml:"AssumedRoleId"`
Arn string `json:"Arn" xml:"Arn"`
}