mirror of
https://github.com/DullJZ/s3-balance.git
synced 2026-06-27 14:01:23 +08:00
144 lines
4.4 KiB
Go
144 lines
4.4 KiB
Go
package api
|
|
|
|
import (
|
|
"encoding/xml"
|
|
"time"
|
|
)
|
|
|
|
// S3 XML响应结构体定义
|
|
|
|
// ListBucketsResult 列出所有存储桶的响应
|
|
type ListBucketsResult struct {
|
|
XMLName xml.Name `xml:"ListAllMyBucketsResult"`
|
|
Xmlns string `xml:"xmlns,attr"`
|
|
Owner Owner `xml:"Owner"`
|
|
Buckets Buckets `xml:"Buckets"`
|
|
}
|
|
|
|
// Owner 所有者信息
|
|
type Owner struct {
|
|
ID string `xml:"ID"`
|
|
DisplayName string `xml:"DisplayName"`
|
|
}
|
|
|
|
// Buckets 存储桶列表
|
|
type Buckets struct {
|
|
Bucket []BucketInfo `xml:"Bucket"`
|
|
}
|
|
|
|
// BucketInfo 存储桶信息
|
|
type BucketInfo struct {
|
|
Name string `xml:"Name"`
|
|
CreationDate time.Time `xml:"CreationDate"`
|
|
}
|
|
|
|
// ListBucketResult 列出存储桶内容的响应
|
|
type ListBucketResult struct {
|
|
XMLName xml.Name `xml:"ListBucketResult"`
|
|
Xmlns string `xml:"xmlns,attr"`
|
|
Name string `xml:"Name"`
|
|
Prefix string `xml:"Prefix"`
|
|
Marker string `xml:"Marker"`
|
|
MaxKeys int `xml:"MaxKeys"`
|
|
Delimiter string `xml:"Delimiter,omitempty"`
|
|
IsTruncated bool `xml:"IsTruncated"`
|
|
Contents []ObjectInfo `xml:"Contents"`
|
|
CommonPrefixes []CommonPrefix `xml:"CommonPrefixes,omitempty"`
|
|
}
|
|
|
|
// ObjectInfo 对象信息
|
|
type ObjectInfo struct {
|
|
Key string `xml:"Key"`
|
|
LastModified time.Time `xml:"LastModified"`
|
|
ETag string `xml:"ETag"`
|
|
Size int64 `xml:"Size"`
|
|
StorageClass string `xml:"StorageClass"`
|
|
Owner Owner `xml:"Owner"`
|
|
}
|
|
|
|
// CommonPrefix 公共前缀
|
|
type CommonPrefix struct {
|
|
Prefix string `xml:"Prefix"`
|
|
}
|
|
|
|
// InitiateMultipartUploadResult 初始化分片上传的响应
|
|
type InitiateMultipartUploadResult struct {
|
|
XMLName xml.Name `xml:"InitiateMultipartUploadResult"`
|
|
Xmlns string `xml:"xmlns,attr"`
|
|
Bucket string `xml:"Bucket"`
|
|
Key string `xml:"Key"`
|
|
UploadID string `xml:"UploadId"`
|
|
}
|
|
|
|
// ListMultipartUploadsResult 列出分片上传的响应
|
|
type ListMultipartUploadsResult struct {
|
|
XMLName xml.Name `xml:"ListMultipartUploadsResult"`
|
|
Xmlns string `xml:"xmlns,attr"`
|
|
Bucket string `xml:"Bucket"`
|
|
KeyMarker string `xml:"KeyMarker"`
|
|
UploadIdMarker string `xml:"UploadIdMarker"`
|
|
NextKeyMarker string `xml:"NextKeyMarker"`
|
|
NextUploadIdMarker string `xml:"NextUploadIdMarker"`
|
|
MaxUploads int `xml:"MaxUploads"`
|
|
IsTruncated bool `xml:"IsTruncated"`
|
|
Uploads []Upload `xml:"Upload"`
|
|
CommonPrefixes []CommonPrefix `xml:"CommonPrefixes,omitempty"`
|
|
}
|
|
|
|
// Upload 上传信息
|
|
type Upload struct {
|
|
Key string `xml:"Key"`
|
|
UploadID string `xml:"UploadId"`
|
|
Initiator Owner `xml:"Initiator"`
|
|
Owner Owner `xml:"Owner"`
|
|
StorageClass string `xml:"StorageClass"`
|
|
Initiated time.Time `xml:"Initiated"`
|
|
}
|
|
|
|
// ListPartsResult 列出分片的响应
|
|
type ListPartsResult struct {
|
|
XMLName xml.Name `xml:"ListPartsResult"`
|
|
Xmlns string `xml:"xmlns,attr"`
|
|
Bucket string `xml:"Bucket"`
|
|
Key string `xml:"Key"`
|
|
UploadID string `xml:"UploadId"`
|
|
PartNumberMarker int `xml:"PartNumberMarker"`
|
|
NextPartNumberMarker int `xml:"NextPartNumberMarker"`
|
|
MaxParts int `xml:"MaxParts"`
|
|
IsTruncated bool `xml:"IsTruncated"`
|
|
Parts []Part `xml:"Part"`
|
|
}
|
|
|
|
// Part 分片信息
|
|
type Part struct {
|
|
PartNumber int `xml:"PartNumber"`
|
|
LastModified time.Time `xml:"LastModified"`
|
|
ETag string `xml:"ETag"`
|
|
Size int64 `xml:"Size"`
|
|
}
|
|
|
|
// CompleteMultipartUpload 完成分片上传的请求
|
|
type CompleteMultipartUpload struct {
|
|
XMLName xml.Name `xml:"CompleteMultipartUpload"`
|
|
Parts []Part `xml:"Part"`
|
|
}
|
|
|
|
// CompleteMultipartUploadResult 完成分片上传的响应
|
|
type CompleteMultipartUploadResult struct {
|
|
XMLName xml.Name `xml:"CompleteMultipartUploadResult"`
|
|
Xmlns string `xml:"xmlns,attr"`
|
|
Location string `xml:"Location"`
|
|
Bucket string `xml:"Bucket"`
|
|
Key string `xml:"Key"`
|
|
ETag string `xml:"ETag"`
|
|
}
|
|
|
|
// ErrorResponse S3错误响应
|
|
type ErrorResponse struct {
|
|
XMLName xml.Name `xml:"Error"`
|
|
Code string `xml:"Code"`
|
|
Message string `xml:"Message"`
|
|
Resource string `xml:"Resource"`
|
|
RequestID string `xml:"RequestId"`
|
|
}
|