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/object_acl.go

67 lines
2.2 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

package cos
import (
"context"
"net/http"
)
// ObjectGetACLResult is the result of GetObjectACL
type ObjectGetACLResult = ACLXml
// GetACL Get Object ACL接口实现使用API读取Object的ACL表只有所有者有权操作。
//
// https://www.qcloud.com/document/product/436/7744
func (s *ObjectService) GetACL(ctx context.Context, name string) (*ObjectGetACLResult, *Response, error) {
var res ObjectGetACLResult
sendOpt := sendOptions{
baseURL: s.client.BaseURL.BucketURL,
uri: "/" + encodeURIComponent(name) + "?acl",
method: http.MethodGet,
result: &res,
}
resp, err := s.client.doRetry(ctx, &sendOpt)
if err == nil {
decodeACL(resp, &res)
}
return &res, resp, err
}
// ObjectPutACLOptions the options of put object acl
type ObjectPutACLOptions struct {
Header *ACLHeaderOptions `url:"-" xml:"-"`
Body *ACLXml `url:"-" header:"-"`
}
// PutACL 使用API写入Object的ACL表您可以通过Header"x-cos-acl", "x-cos-grant-read" ,
// "x-cos-grant-write" ,"x-cos-grant-full-control"传入ACL信息
// 也可以通过body以XML格式传入ACL信息但是只能选择Header和Body其中一种否则返回冲突。
//
// Put Object ACL是一个覆盖操作传入新的ACL将覆盖原有ACL。只有所有者有权操作。
//
// "x-cos-acl"枚举值为public-readprivatepublic-read意味这个Object有公有读私有写的权限
// private意味这个Object有私有读写的权限。
//
// "x-cos-grant-read"意味被赋予权限的用户拥有该Object的读权限
//
// "x-cos-grant-write"意味被赋予权限的用户拥有该Object的写权限
//
// "x-cos-grant-full-control"意味被赋予权限的用户拥有该Object的读写权限
//
// https://www.qcloud.com/document/product/436/7748
func (s *ObjectService) PutACL(ctx context.Context, name string, opt *ObjectPutACLOptions) (*Response, error) {
header := opt.Header
body := opt.Body
if body != nil {
header = nil
}
sendOpt := sendOptions{
baseURL: s.client.BaseURL.BucketURL,
uri: "/" + encodeURIComponent(name) + "?acl",
method: http.MethodPut,
optHeader: header,
body: body,
}
resp, err := s.client.doRetry(ctx, &sendOpt)
return resp, err
}