oss/api_op_bucket_worm.go (205 lines of code) (raw):

package oss import ( "context" "github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/signer" ) type InitiateWormConfiguration struct { // The number of days for which objects can be retained. RetentionPeriodInDays *int32 `xml:"RetentionPeriodInDays"` } type ExtendWormConfiguration struct { // The number of days for which objects can be retained. RetentionPeriodInDays *int32 `xml:"RetentionPeriodInDays"` } type WormConfiguration struct { // The ID of the retention policy.>Note If the specified retention policy ID that is used to query the retention policy configurations of the bucket does not exist, OSS returns the 404 error code. WormId *string `xml:"WormId"` // The status of the retention policy. Valid values:- InProgress: indicates that the retention policy is in the InProgress state. By default, a retention policy is in the InProgress state after it is created. The policy remains in this state for 24 hours.- Locked: indicates that the retention policy is in the Locked state. State BucketWormStateType `xml:"State"` // The number of days for which objects can be retained. RetentionPeriodInDays *int32 `xml:"RetentionPeriodInDays"` // The time at which the retention policy was created. CreationDate *string `xml:"CreationDate"` // The time at which the retention policy will be expired. //ExpirationDate *string `xml:"ExpirationDate"` } type InitiateBucketWormRequest struct { // The name of the bucket. Bucket *string `input:"host,bucket,required"` // The container of the request body. InitiateWormConfiguration *InitiateWormConfiguration `input:"body,InitiateWormConfiguration,xml,required"` RequestCommon } type InitiateBucketWormResult struct { // The ID of the retention policy. WormId *string `output:"header,x-oss-worm-id"` ResultCommon } // InitiateBucketWorm Creates a retention policy. func (c *Client) InitiateBucketWorm(ctx context.Context, request *InitiateBucketWormRequest, optFns ...func(*Options)) (*InitiateBucketWormResult, error) { var err error if request == nil { request = &InitiateBucketWormRequest{} } input := &OperationInput{ OpName: "InitiateBucketWorm", Method: "POST", Headers: map[string]string{ HTTPHeaderContentType: contentTypeXML, }, Parameters: map[string]string{ "worm": "", }, Bucket: request.Bucket, } input.OpMetadata.Set(signer.SubResource, []string{"worm"}) if err = c.marshalInput(request, input, updateContentMd5); err != nil { return nil, err } output, err := c.invokeOperation(ctx, input, optFns) if err != nil { return nil, err } result := &InitiateBucketWormResult{} if err = c.unmarshalOutput(result, output, unmarshalHeader, unmarshalBodyXmlMix); err != nil { return nil, c.toClientError(err, "UnmarshalOutputFail", output) } return result, err } type AbortBucketWormRequest struct { // The name of the bucket. Bucket *string `input:"host,bucket,required"` RequestCommon } type AbortBucketWormResult struct { ResultCommon } // AbortBucketWorm Deletes an unlocked retention policy for a bucket. func (c *Client) AbortBucketWorm(ctx context.Context, request *AbortBucketWormRequest, optFns ...func(*Options)) (*AbortBucketWormResult, error) { var err error if request == nil { request = &AbortBucketWormRequest{} } input := &OperationInput{ OpName: "AbortBucketWorm", Method: "DELETE", Headers: map[string]string{ HTTPHeaderContentType: contentTypeXML, }, Parameters: map[string]string{ "worm": "", }, Bucket: request.Bucket, } input.OpMetadata.Set(signer.SubResource, []string{"worm"}) if err = c.marshalInput(request, input, updateContentMd5); err != nil { return nil, err } output, err := c.invokeOperation(ctx, input, optFns) if err != nil { return nil, err } result := &AbortBucketWormResult{} if err = c.unmarshalOutput(result, output, unmarshalBodyXmlMix); err != nil { return nil, c.toClientError(err, "UnmarshalOutputFail", output) } return result, err } type CompleteBucketWormRequest struct { // The name of the bucket. Bucket *string `input:"host,bucket,required"` // The ID of the retention policy. WormId *string `input:"query,wormId,required"` RequestCommon } type CompleteBucketWormResult struct { ResultCommon } // CompleteBucketWorm Locks a retention policy. func (c *Client) CompleteBucketWorm(ctx context.Context, request *CompleteBucketWormRequest, optFns ...func(*Options)) (*CompleteBucketWormResult, error) { var err error if request == nil { request = &CompleteBucketWormRequest{} } input := &OperationInput{ OpName: "CompleteBucketWorm", Method: "POST", Headers: map[string]string{ HTTPHeaderContentType: contentTypeXML, }, Bucket: request.Bucket, } input.OpMetadata.Set(signer.SubResource, []string{"wormId"}) if err = c.marshalInput(request, input, updateContentMd5); err != nil { return nil, err } output, err := c.invokeOperation(ctx, input, optFns) if err != nil { return nil, err } result := &CompleteBucketWormResult{} if err = c.unmarshalOutput(result, output, unmarshalBodyXmlMix); err != nil { return nil, c.toClientError(err, "UnmarshalOutputFail", output) } return result, err } type ExtendBucketWormRequest struct { // The name of the bucket. Bucket *string `input:"host,bucket,required"` // The ID of the retention policy.> If the ID of the retention policy that specifies the number of days for which objects can be retained does not exist, the HTTP status code 404 is returned. WormId *string `input:"query,wormId,required"` // The container of the request body. ExtendWormConfiguration *ExtendWormConfiguration `input:"body,ExtendWormConfiguration,xml,required"` RequestCommon } type ExtendBucketWormResult struct { ResultCommon } // ExtendBucketWorm Extends the retention period of objects in a bucket for which a retention policy is locked. func (c *Client) ExtendBucketWorm(ctx context.Context, request *ExtendBucketWormRequest, optFns ...func(*Options)) (*ExtendBucketWormResult, error) { var err error if request == nil { request = &ExtendBucketWormRequest{} } input := &OperationInput{ OpName: "ExtendBucketWorm", Method: "POST", Headers: map[string]string{ HTTPHeaderContentType: contentTypeXML, }, Parameters: map[string]string{ "wormExtend": "", }, Bucket: request.Bucket, } input.OpMetadata.Set(signer.SubResource, []string{"wormExtend", "wormId"}) if err = c.marshalInput(request, input, updateContentMd5); err != nil { return nil, err } output, err := c.invokeOperation(ctx, input, optFns) if err != nil { return nil, err } result := &ExtendBucketWormResult{} if err = c.unmarshalOutput(result, output, unmarshalBodyXmlMix); err != nil { return nil, c.toClientError(err, "UnmarshalOutputFail", output) } return result, err } type GetBucketWormRequest struct { // The name of the bucket. Bucket *string `input:"host,bucket,required"` RequestCommon } type GetBucketWormResult struct { // The container that stores the information about retention policies of the bucket. WormConfiguration *WormConfiguration `output:"body,WormConfiguration,xml"` ResultCommon } // GetBucketWorm Queries the retention policy configured for a bucket. func (c *Client) GetBucketWorm(ctx context.Context, request *GetBucketWormRequest, optFns ...func(*Options)) (*GetBucketWormResult, error) { var err error if request == nil { request = &GetBucketWormRequest{} } input := &OperationInput{ OpName: "GetBucketWorm", Method: "GET", Headers: map[string]string{ HTTPHeaderContentType: contentTypeXML, }, Parameters: map[string]string{ "worm": "", }, Bucket: request.Bucket, } input.OpMetadata.Set(signer.SubResource, []string{"worm"}) if err = c.marshalInput(request, input, updateContentMd5); err != nil { return nil, err } output, err := c.invokeOperation(ctx, input, optFns) if err != nil { return nil, err } result := &GetBucketWormResult{} if err = c.unmarshalOutput(result, output, unmarshalBodyXmlMix); err != nil { return nil, c.toClientError(err, "UnmarshalOutputFail", output) } return result, err }