You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
go-library/vendor/github.com/tencentyun/cos-go-sdk-v5/batch.go

292 lines
12 KiB

package cos
import (
"context"
"encoding/xml"
"fmt"
"net/http"
)
type BatchService service
type BatchRequestHeaders struct {
XCosAppid int `header:"x-cos-appid" xml:"-" url:"-"`
ContentLength string `header:"Content-Length,omitempty" xml:"-" url:"-"`
ContentType string `header:"Content-Type,omitempty" xml:"-" url:"-"`
Headers *http.Header `header:"-" xml:"-" url:"-"`
}
// BatchProgressSummary
type BatchProgressSummary struct {
NumberOfTasksFailed int `xml:"NumberOfTasksFailed" header:"-" url:"-"`
NumberOfTasksSucceeded int `xml:"NumberOfTasksSucceeded" header:"-" url:"-"`
TotalNumberOfTasks int `xml:"TotalNumberOfTasks" header:"-" url:"-"`
}
// BatchJobReport
type BatchJobReport struct {
Bucket string `xml:"Bucket" header:"-" url:"-"`
Enabled string `xml:"Enabled" header:"-" url:"-"`
Format string `xml:"Format" header:"-" url:"-"`
Prefix string `xml:"Prefix,omitempty" header:"-" url:"-"`
ReportScope string `xml:"ReportScope" header:"-" url:"-"`
}
// BatchJobOperationCopy
type BatchCOSTag struct {
Key string `xml:"Key,omitempty" header:"-" url:"-"`
Value string `xml:"Value,omitempty" header:"-" url:"-"`
}
type BatchNewObjectTagging struct {
COSTag []BatchCOSTag `xml:"COSTag,omitempty" header:"-" url:"-"`
}
type BatchMetadata struct {
Key string `xml:"Key" header:"-" url:"-"`
Value string `xml:"Value" header:"-" url:"-"`
}
type BatchNewObjectMetadata struct {
CacheControl string `xml:"CacheControl,omitempty" header:"-" url:"-"`
ContentDisposition string `xml:"ContentDisposition,omitempty" header:"-" url:"-"`
ContentEncoding string `xml:"ContentEncoding,omitempty" header:"-" url:"-"`
ContentType string `xml:"ContentType,omitempty" header:"-" url:"-"`
HttpExpiresDate string `xml:"HttpExpiresDate,omitempty" header:"-" url:"-"`
SSEAlgorithm string `xml:"SSEAlgorithm,omitempty" header:"-" url:"-"`
UserMetadata []BatchMetadata `xml:"UserMetadata>member,omitempty" header:"-" url:"-"`
}
type BatchGrantee struct {
DisplayName string `xml:"DisplayName,omitempty" header:"-" url:"-"`
Identifier string `xml:"Identifier" header:"-" url:"-"`
TypeIdentifier string `xml:"TypeIdentifier" header:"-" url:"-"`
}
type BatchCOSGrant struct {
Grantee *BatchGrantee `xml:"Grantee" header:"-" url:"-"`
Permission string `xml:"Permission" header:"-" url:"-"`
}
type BatchAccessControlGrants struct {
COSGrants *BatchCOSGrant `xml:"COSGrant,omitempty" header:"-" url:"-"`
}
type BatchJobOperationCopy struct {
AccessControlDirective string `xml:"AccessControlDirective,omitempty" header:"-" url:"-"`
AccessControlGrants *BatchAccessControlGrants `xml:"AccessControlGrants,omitempty" header:"-" url:"-"`
CannedAccessControlList string `xml:"CannedAccessControlList,omitempty" header:"-" url:"-"`
PrefixReplace bool `xml:"PrefixReplace,omitempty" header:"-" url:"-"`
ResourcesPrefix string `xml:"ResourcesPrefix,omitempty" header:"-" url:"-"`
TargetKeyPrefix string `xml:"TargetKeyPrefix,omitempty" header:"-" url:"-"`
MetadataDirective string `xml:"MetadataDirective,omitempty" header:"-" url:"-"`
ModifiedSinceConstraint int64 `xml:"ModifiedSinceConstraint,omitempty" header:"-" url:"-"`
UnModifiedSinceConstraint int64 `xml:"UnModifiedSinceConstraint,omitempty" header:"-" url:"-"`
NewObjectMetadata *BatchNewObjectMetadata `xml:"NewObjectMetadata,omitempty" header:"-" url:"-"`
TaggingDirective string `xml:"TaggingDirective,omitempty" header:"-" url:"-"`
NewObjectTagging *BatchNewObjectTagging `xml:"NewObjectTagging,omitempty" header:"-" url:"-"`
StorageClass string `xml:"StorageClass,omitempty" header:"-" url:"-"`
TargetResource string `xml:"TargetResource" header:"-" url:"-"`
}
// BatchInitiateRestoreObject
type BatchInitiateRestoreObject struct {
ExpirationInDays int `xml:"ExpirationInDays"`
JobTier string `xml:"JobTier"`
}
// BatchJobOperation
type BatchJobOperation struct {
PutObjectCopy *BatchJobOperationCopy `xml:"COSPutObjectCopy,omitempty" header:"-" url:"-"`
RestoreObject *BatchInitiateRestoreObject `xml:"COSInitiateRestoreObject,omitempty" header:"-" url:"-"`
}
// BatchJobManifest
type BatchJobManifestLocation struct {
ETag string `xml:"ETag" header:"-" url:"-"`
ObjectArn string `xml:"ObjectArn" header:"-" url:"-"`
ObjectVersionId string `xml:"ObjectVersionId,omitempty" header:"-" url:"-"`
}
type BatchJobManifestSpec struct {
Fields []string `xml:"Fields>member,omitempty" header:"-" url:"-"`
Format string `xml:"Format" header:"-" url:"-"`
}
type BatchJobManifest struct {
Location *BatchJobManifestLocation `xml:"Location" header:"-" url:"-"`
Spec *BatchJobManifestSpec `xml:"Spec" header:"-" url:"-"`
}
type BatchCreateJobOptions struct {
XMLName xml.Name `xml:"CreateJobRequest" header:"-" url:"-"`
ClientRequestToken string `xml:"ClientRequestToken" header:"-" url:"-"`
ConfirmationRequired string `xml:"ConfirmationRequired,omitempty" header:"-" url:"-"`
Description string `xml:"Description,omitempty" header:"-" url:"-"`
Manifest *BatchJobManifest `xml:"Manifest" header:"-" url:"-"`
Operation *BatchJobOperation `xml:"Operation" header:"-" url:"-"`
Priority int `xml:"Priority" header:"-" url:"-"`
Report *BatchJobReport `xml:"Report" header:"-" url:"-"`
RoleArn string `xml:"RoleArn" header:"-" url:"-"`
}
type BatchCreateJobResult struct {
XMLName xml.Name `xml:"CreateJobResult"`
JobId string `xml:"JobId,omitempty"`
}
func (s *BatchService) CreateJob(ctx context.Context, opt *BatchCreateJobOptions, headers *BatchRequestHeaders) (*BatchCreateJobResult, *Response, error) {
var res BatchCreateJobResult
sendOpt := sendOptions{
baseURL: s.client.BaseURL.BatchURL,
uri: "/jobs",
method: http.MethodPost,
optHeader: headers,
body: opt,
result: &res,
}
resp, err := s.client.send(ctx, &sendOpt)
return &res, resp, err
}
type BatchJobFailureReasons struct {
FailureCode string `xml:"FailureCode" header:"-" url:"-"`
FailureReason string `xml:"FailureReason" header:"-" url:"-"`
}
type BatchDescribeJob struct {
ConfirmationRequired string `xml:"ConfirmationRequired,omitempty" header:"-" url:"-"`
CreationTime string `xml:"CreationTime,omitempty" header:"-" url:"-"`
Description string `xml:"Description,omitempty" header:"-" url:"-"`
FailureReasons *BatchJobFailureReasons `xml:"FailureReasons>JobFailure,omitempty" header:"-" url:"-"`
JobId string `xml:"JobId" header:"-" url:"-"`
Manifest *BatchJobManifest `xml:"Manifest" header:"-" url:"-"`
Operation *BatchJobOperation `xml:"Operation" header:"-" url:"-"`
Priority int `xml:"Priority" header:"-" url:"-"`
ProgressSummary *BatchProgressSummary `xml:"ProgressSummary" header:"-" url:"-"`
Report *BatchJobReport `xml:"Report,omitempty" header:"-" url:"-"`
RoleArn string `xml:"RoleArn,omitempty" header:"-" url:"-"`
Status string `xml:"Status,omitempty" header:"-" url:"-"`
StatusUpdateReason string `xml:"StatusUpdateReason,omitempty" header:"-" url:"-"`
SuspendedCause string `xml:"SuspendedCause,omitempty" header:"-" url:"-"`
SuspendedDate string `xml:"SuspendedDate,omitempty" header:"-" url:"-"`
TerminationDate string `xml:"TerminationDate,omitempty" header:"-" url:"-"`
}
type BatchDescribeJobResult struct {
XMLName xml.Name `xml:"DescribeJobResult"`
Job *BatchDescribeJob `xml:"Job,omitempty"`
}
func (s *BatchService) DescribeJob(ctx context.Context, id string, headers *BatchRequestHeaders) (*BatchDescribeJobResult, *Response, error) {
var res BatchDescribeJobResult
u := fmt.Sprintf("/jobs/%s", id)
sendOpt := sendOptions{
baseURL: s.client.BaseURL.BatchURL,
uri: u,
method: http.MethodGet,
optHeader: headers,
result: &res,
}
resp, err := s.client.send(ctx, &sendOpt)
return &res, resp, err
}
type BatchListJobsOptions struct {
JobStatuses string `url:"jobStatuses,omitempty" header:"-" xml:"-"`
MaxResults int `url:"maxResults,omitempty" header:"-" xml:"-"`
NextToken string `url:"nextToken,omitempty" header:"-" xml:"-"`
}
type BatchListJobsMember struct {
CreationTime string `xml:"CreationTime,omitempty" header:"-" url:"-"`
Description string `xml:"Description,omitempty" header:"-" url:"-"`
JobId string `xml:"JobId,omitempty" header:"-" url:"-"`
Operation string `xml:"Operation,omitempty" header:"-" url:"-"`
Priority int `xml:"Priority,omitempty" header:"-" url:"-"`
ProgressSummary *BatchProgressSummary `xml:"ProgressSummary,omitempty" header:"-" url:"-"`
Status string `xml:"Status,omitempty" header:"-" url:"-"`
TerminationDate string `xml:"TerminationDate,omitempty" header:"-" url:"-"`
}
type BatchListJobs struct {
Members []BatchListJobsMember `xml:"member,omitempty" header:"-" url:"-"`
}
type BatchListJobsResult struct {
XMLName xml.Name `xml:"ListJobsResult"`
Jobs *BatchListJobs `xml:"Jobs,omitempty"`
NextToken string `xml:"NextToken,omitempty"`
}
func (s *BatchService) ListJobs(ctx context.Context, opt *BatchListJobsOptions, headers *BatchRequestHeaders) (*BatchListJobsResult, *Response, error) {
var res BatchListJobsResult
sendOpt := sendOptions{
baseURL: s.client.BaseURL.BatchURL,
uri: "/jobs",
method: http.MethodGet,
optQuery: opt,
optHeader: headers,
result: &res,
}
resp, err := s.client.send(ctx, &sendOpt)
return &res, resp, err
}
type BatchUpdatePriorityOptions struct {
JobId string `url:"-" header:"-" xml:"-"`
Priority int `url:"priority" header:"-" xml:"-"`
}
type BatchUpdatePriorityResult struct {
XMLName xml.Name `xml:"UpdateJobPriorityResult"`
JobId string `xml:"JobId,omitempty"`
Priority int `xml:"Priority,omitempty"`
}
func (s *BatchService) UpdateJobPriority(ctx context.Context, opt *BatchUpdatePriorityOptions, headers *BatchRequestHeaders) (*BatchUpdatePriorityResult, *Response, error) {
u := fmt.Sprintf("/jobs/%s/priority", opt.JobId)
var res BatchUpdatePriorityResult
sendOpt := sendOptions{
baseURL: s.client.BaseURL.BatchURL,
uri: u,
method: http.MethodPost,
optQuery: opt,
optHeader: headers,
result: &res,
}
resp, err := s.client.send(ctx, &sendOpt)
return &res, resp, err
}
type BatchUpdateStatusOptions struct {
JobId string `header:"-" url:"-" xml:"-"`
RequestedJobStatus string `url:"requestedJobStatus" header:"-" xml:"-"`
StatusUpdateReason string `url:"statusUpdateReason,omitempty" header:"-" xml:"-"`
}
type BatchUpdateStatusResult struct {
XMLName xml.Name `xml:"UpdateJobStatusResult"`
JobId string `xml:"JobId,omitempty"`
Status string `xml:"Status,omitempty"`
StatusUpdateReason string `xml:"StatusUpdateReason,omitempty"`
}
func (s *BatchService) UpdateJobStatus(ctx context.Context, opt *BatchUpdateStatusOptions, headers *BatchRequestHeaders) (*BatchUpdateStatusResult, *Response, error) {
u := fmt.Sprintf("/jobs/%s/status", opt.JobId)
var res BatchUpdateStatusResult
sendOpt := sendOptions{
baseURL: s.client.BaseURL.BatchURL,
uri: u,
method: http.MethodPost,
optQuery: opt,
optHeader: headers,
result: &res,
}
resp, err := s.client.send(ctx, &sendOpt)
return &res, resp, err
}
func (s *BatchService) DeleteJob(ctx context.Context, id string, headers *BatchRequestHeaders) (*Response, error) {
if len(id) == 0 {
return nil, fmt.Errorf("Id is invalid")
}
u := fmt.Sprintf("/jobs/%s", id)
sendOpt := sendOptions{
baseURL: s.client.BaseURL.BatchURL,
uri: u,
method: http.MethodDelete,
optHeader: headers,
}
resp, err := s.client.send(ctx, &sendOpt)
return resp, err
}