oss/api_op_accesspoint.go (317 lines of code) (raw):
package oss
import (
"context"
"io"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/signer"
)
type AccessPointVpcConfiguration struct {
// The ID of the VPC that is required only when the NetworkOrigin parameter is set to vpc.
VpcId *string `xml:"VpcId"`
}
type CreateAccessPointConfiguration struct {
// The name of the access point. The name of the access point must meet the following naming rules:* The name must be unique in a region of your Alibaba Cloud account.* The name cannot end with -ossalias.* The name can contain only lowercase letters, digits, and hyphens (-). It cannot start or end with a hyphen (-).* The name must be 3 to 19 characters in length.
AccessPointName *string `xml:"AccessPointName"`
// The network origin of the access point.
NetworkOrigin *string `xml:"NetworkOrigin"`
// The container that stores the information about the VPC.
VpcConfiguration *AccessPointVpcConfiguration `xml:"VpcConfiguration"`
}
type ListAccessPointsRequest struct {
// The maximum number of access points that can be returned. Valid values:* For user-level access points: (0,1000].* For bucket-level access points: (0,100].
MaxKeys int64 `input:"query,max-keys"`
// The token from which the listing operation starts. You must specify the value of NextContinuationToken that is obtained from the previous query as the value of continuation-token.
ContinuationToken *string `input:"query,continuation-token"`
// The name of the bucket.
Bucket *string `input:"host,bucket"`
RequestCommon
}
type AccessPoint struct {
// The network origin of the access point.
NetworkOrigin *string `xml:"NetworkOrigin"`
// The container that stores the information about the VPC.
VpcConfiguration *AccessPointVpcConfiguration `xml:"VpcConfiguration"`
// The status of the access point.
Status *string `xml:"Status"`
// The name of the bucket for which the access point is configured.
Bucket *string `xml:"Bucket"`
// The name of the access point.
AccessPointName *string `xml:"AccessPointName"`
// The alias of the access point.
Alias *string `xml:"Alias"`
}
type ListAccessPointsResult struct {
// The maximum number of results set for this enumeration operation.
MaxKeys *int32 `xml:"MaxKeys"`
// Indicates whether the returned list is truncated. Valid values: * true: indicates that not all results are returned. * false: indicates that all results are returned.
IsTruncated *bool `xml:"IsTruncated"`
// Indicates that this ListAccessPoints request does not return all results that can be listed. You can use NextContinuationToken to continue obtaining list results.
NextContinuationToken *string `xml:"NextContinuationToken"`
// The ID of the Alibaba Cloud account to which the access point belongs.
AccountId *string `xml:"AccountId"`
// The container that stores the information about all access point.
AccessPoints []AccessPoint `xml:"AccessPoints>AccessPoint"`
ResultCommon
}
// ListAccessPoints Queries the information about user-level or bucket-level access points.
func (c *Client) ListAccessPoints(ctx context.Context, request *ListAccessPointsRequest, optFns ...func(*Options)) (*ListAccessPointsResult, error) {
var err error
if request == nil {
request = &ListAccessPointsRequest{}
}
input := &OperationInput{
OpName: "ListAccessPoints",
Method: "GET",
Headers: map[string]string{
HTTPHeaderContentType: contentTypeXML,
},
Parameters: map[string]string{
"accessPoint": "",
},
Bucket: request.Bucket,
}
input.OpMetadata.Set(signer.SubResource, []string{"accessPoint"})
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 := &ListAccessPointsResult{}
if err = c.unmarshalOutput(result, output, unmarshalBodyXmlMix); err != nil {
return nil, c.toClientError(err, "UnmarshalOutputFail", output)
}
return result, err
}
type GetAccessPointRequest struct {
// The name of the bucket.
Bucket *string `input:"host,bucket,required"`
// The name of the access point.
AccessPointName *string `input:"header,x-oss-access-point-name,required"`
RequestCommon
}
type GetAccessPointResult struct {
// The ARN of the access point.
AccessPointArn *string `xml:"AccessPointArn"`
// The alias of the access point.
Alias *string `xml:"Alias"`
// The public endpoint of the access point.
PublicEndpoint *string `xml:"Endpoints>PublicEndpoint"`
// The internal endpoint of the access point.
InternalEndpoint *string `xml:"Endpoints>InternalEndpoint"`
// The time when the access point was created.
CreationDate *string `xml:"CreationDate"`
// The name of the access point.
AccessPointName *string `xml:"AccessPointName"`
// The name of the bucket for which the access point is configured.
Bucket *string `xml:"Bucket"`
// The ID of the Alibaba Cloud account for which the access point is configured.
AccountId *string `xml:"AccountId"`
// The network origin of the access point. Valid values: vpc and internet. vpc: You can only use the specified VPC ID to access the access point. internet: You can use public endpoints and internal endpoints to access the access point.
NetworkOrigin *string `xml:"NetworkOrigin"`
// The container that stores the information about the VPC.
VpcConfiguration *AccessPointVpcConfiguration `xml:"VpcConfiguration"`
// The status of the access point.
AccessPointStatus *string `xml:"Status"`
// The container that stores the Block Public Access configurations.
PublicAccessBlockConfiguration *PublicAccessBlockConfiguration `xml:"PublicAccessBlockConfiguration"`
ResultCommon
}
// GetAccessPoint Queries the information about an access point.
func (c *Client) GetAccessPoint(ctx context.Context, request *GetAccessPointRequest, optFns ...func(*Options)) (*GetAccessPointResult, error) {
var err error
if request == nil {
request = &GetAccessPointRequest{}
}
input := &OperationInput{
OpName: "GetAccessPoint",
Method: "GET",
Headers: map[string]string{
HTTPHeaderContentType: contentTypeXML,
},
Parameters: map[string]string{
"accessPoint": "",
},
Bucket: request.Bucket,
}
input.OpMetadata.Set(signer.SubResource, []string{"accessPoint"})
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 := &GetAccessPointResult{}
if err = c.unmarshalOutput(result, output, unmarshalBodyXmlMix); err != nil {
return nil, c.toClientError(err, "UnmarshalOutputFail", output)
}
return result, err
}
type GetAccessPointPolicyRequest struct {
// The name of the bucket.
Bucket *string `input:"host,bucket,required"`
// The name of the access point.
AccessPointName *string `input:"header,x-oss-access-point-name,required"`
RequestCommon
}
type GetAccessPointPolicyResult struct {
// The configurations of the access point policy.
Body string
ResultCommon
}
// GetAccessPointPolicy Queries the configurations of an access point policy.
func (c *Client) GetAccessPointPolicy(ctx context.Context, request *GetAccessPointPolicyRequest, optFns ...func(*Options)) (*GetAccessPointPolicyResult, error) {
var err error
if request == nil {
request = &GetAccessPointPolicyRequest{}
}
input := &OperationInput{
OpName: "GetAccessPointPolicy",
Method: "GET",
Headers: map[string]string{
HTTPHeaderContentType: contentTypeXML,
},
Parameters: map[string]string{
"accessPointPolicy": "",
},
Bucket: request.Bucket,
}
input.OpMetadata.Set(signer.SubResource, []string{"accessPointPolicy"})
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
}
body, err := io.ReadAll(output.Body)
defer output.Body.Close()
if err != nil {
return nil, err
}
result := &GetAccessPointPolicyResult{
Body: string(body),
}
if err = c.unmarshalOutput(result, output); err != nil {
return nil, c.toClientError(err, "UnmarshalOutputFail", output)
}
return result, err
}
type DeleteAccessPointPolicyRequest struct {
// The name of the bucket.
Bucket *string `input:"host,bucket,required"`
// The name of the access point.
AccessPointName *string `input:"header,x-oss-access-point-name,required"`
RequestCommon
}
type DeleteAccessPointPolicyResult struct {
ResultCommon
}
// DeleteAccessPointPolicy Deletes an access point policy.
func (c *Client) DeleteAccessPointPolicy(ctx context.Context, request *DeleteAccessPointPolicyRequest, optFns ...func(*Options)) (*DeleteAccessPointPolicyResult, error) {
var err error
if request == nil {
request = &DeleteAccessPointPolicyRequest{}
}
input := &OperationInput{
OpName: "DeleteAccessPointPolicy",
Method: "DELETE",
Headers: map[string]string{
HTTPHeaderContentType: contentTypeXML,
},
Parameters: map[string]string{
"accessPointPolicy": "",
},
Bucket: request.Bucket,
}
input.OpMetadata.Set(signer.SubResource, []string{"accessPointPolicy"})
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 := &DeleteAccessPointPolicyResult{}
if err = c.unmarshalOutput(result, output, unmarshalBodyXmlMix); err != nil {
return nil, c.toClientError(err, "UnmarshalOutputFail", output)
}
return result, err
}
type PutAccessPointPolicyRequest struct {
// The name of the bucket.
Bucket *string `input:"host,bucket,required"`
// The name of the access point.
AccessPointName *string `input:"header,x-oss-access-point-name,required"`
// The configurations of the access point policy.
Body io.Reader `input:"body,nop,required"`
RequestCommon
}
type PutAccessPointPolicyResult struct {
ResultCommon
}
// PutAccessPointPolicy Configures an access point policy.
func (c *Client) PutAccessPointPolicy(ctx context.Context, request *PutAccessPointPolicyRequest, optFns ...func(*Options)) (*PutAccessPointPolicyResult, error) {
var err error
if request == nil {
request = &PutAccessPointPolicyRequest{}
}
input := &OperationInput{
OpName: "PutAccessPointPolicy",
Method: "PUT",
Headers: map[string]string{
HTTPHeaderContentType: contentTypeXML,
},
Parameters: map[string]string{
"accessPointPolicy": "",
},
Bucket: request.Bucket,
}
input.OpMetadata.Set(signer.SubResource, []string{"accessPointPolicy"})
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 := &PutAccessPointPolicyResult{}
if err = c.unmarshalOutput(result, output, unmarshalBodyXmlMix); err != nil {
return nil, c.toClientError(err, "UnmarshalOutputFail", output)
}
return result, err
}
type DeleteAccessPointRequest struct {
// The name of the bucket.
Bucket *string `input:"host,bucket,required"`
// The name of the access point.
AccessPointName *string `input:"header,x-oss-access-point-name,required"`
RequestCommon
}
type DeleteAccessPointResult struct {
ResultCommon
}
// DeleteAccessPoint Deletes an access point.
func (c *Client) DeleteAccessPoint(ctx context.Context, request *DeleteAccessPointRequest, optFns ...func(*Options)) (*DeleteAccessPointResult, error) {
var err error
if request == nil {
request = &DeleteAccessPointRequest{}
}
input := &OperationInput{
OpName: "DeleteAccessPoint",
Method: "DELETE",
Headers: map[string]string{
HTTPHeaderContentType: contentTypeXML,
},
Parameters: map[string]string{
"accessPoint": "",
},
Bucket: request.Bucket,
}
input.OpMetadata.Set(signer.SubResource, []string{"accessPoint"})
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 := &DeleteAccessPointResult{}
if err = c.unmarshalOutput(result, output, unmarshalBodyXmlMix); err != nil {
return nil, c.toClientError(err, "UnmarshalOutputFail", output)
}
return result, err
}
type CreateAccessPointRequest struct {
// The name of the bucket.
Bucket *string `input:"host,bucket,required"`
// The container of the request body.
CreateAccessPointConfiguration *CreateAccessPointConfiguration `input:"body,CreateAccessPointConfiguration,xml,required"`
RequestCommon
}
type CreateAccessPointResult struct {
// The Alibaba Cloud Resource Name (ARN) of the access point.
AccessPointArn *string `xml:"AccessPointArn"`
// The alias of the access point.
Alias *string `xml:"Alias"`
ResultCommon
}
// CreateAccessPoint Creates an access point.
func (c *Client) CreateAccessPoint(ctx context.Context, request *CreateAccessPointRequest, optFns ...func(*Options)) (*CreateAccessPointResult, error) {
var err error
if request == nil {
request = &CreateAccessPointRequest{}
}
input := &OperationInput{
OpName: "CreateAccessPoint",
Method: "PUT",
Headers: map[string]string{
HTTPHeaderContentType: contentTypeXML,
},
Parameters: map[string]string{
"accessPoint": "",
},
Bucket: request.Bucket,
}
input.OpMetadata.Set(signer.SubResource, []string{"accessPoint"})
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 := &CreateAccessPointResult{}
if err = c.unmarshalOutput(result, output, unmarshalBodyXmlMix); err != nil {
return nil, c.toClientError(err, "UnmarshalOutputFail", output)
}
return result, err
}