snapshot-20210315/client/client.go (598 lines of code) (raw):

// This file is auto-generated, don't edit it. Thanks. /** * */ package client import ( openapi "github.com/alibabacloud-go/darabonba-openapi/client" endpointutil "github.com/alibabacloud-go/endpoint-util/service" openapiutil "github.com/alibabacloud-go/openapi-util/service" util "github.com/alibabacloud-go/tea-utils/service" "github.com/alibabacloud-go/tea/tea" "io" ) type GetSnapshotInfoRequest struct { // 幂等参数 ClientToken *string `json:"ClientToken,omitempty" xml:"ClientToken,omitempty"` // 待读取数据的快照名称 SnapshotId *string `json:"SnapshotId,omitempty" xml:"SnapshotId,omitempty"` // 是否返回详细信息,详细信息需要更多查询时间,默认为 False ShowDetail *bool `json:"ShowDetail,omitempty" xml:"ShowDetail,omitempty"` } func (s GetSnapshotInfoRequest) String() string { return tea.Prettify(s) } func (s GetSnapshotInfoRequest) GoString() string { return s.String() } func (s *GetSnapshotInfoRequest) SetClientToken(v string) *GetSnapshotInfoRequest { s.ClientToken = &v return s } func (s *GetSnapshotInfoRequest) SetSnapshotId(v string) *GetSnapshotInfoRequest { s.SnapshotId = &v return s } func (s *GetSnapshotInfoRequest) SetShowDetail(v bool) *GetSnapshotInfoRequest { s.ShowDetail = &v return s } type GetSnapshotInfoResponseBody struct { // 快照大小,单位 GB,最小 1GB VolumeSize *int64 `json:"VolumeSize,omitempty" xml:"VolumeSize,omitempty"` // 快照数据快大小,单位 Bytes BlockSize *int64 `json:"BlockSize,omitempty" xml:"BlockSize,omitempty"` // 快照数据块总数量,包含空数据块 BlockCount *int64 `json:"BlockCount,omitempty" xml:"BlockCount,omitempty"` // 快照中非空数据块总数量,仅在 ShowDetail 为 True 时返回 ValidBlockCount *int64 `json:"ValidBlockCount,omitempty" xml:"ValidBlockCount,omitempty"` // 快照状态。 "SNAPSHOT_INVALID", "SNAPSHOT_PENDING", "SNAPSHOT_COMMITTED", "SNAPSHOT_DELETED" Status *string `json:"Status,omitempty" xml:"Status,omitempty"` // 快照创建时间戳 CreateTime *int64 `json:"CreateTime,omitempty" xml:"CreateTime,omitempty"` // 快照是否为加密快照 Encrypted *bool `json:"Encrypted,omitempty" xml:"Encrypted,omitempty"` // 快照格式。"FORMAT_VHD", "FORMAT_RAW", "FORMAT_INVALID" Format *string `json:"Format,omitempty" xml:"Format,omitempty"` } func (s GetSnapshotInfoResponseBody) String() string { return tea.Prettify(s) } func (s GetSnapshotInfoResponseBody) GoString() string { return s.String() } func (s *GetSnapshotInfoResponseBody) SetVolumeSize(v int64) *GetSnapshotInfoResponseBody { s.VolumeSize = &v return s } func (s *GetSnapshotInfoResponseBody) SetBlockSize(v int64) *GetSnapshotInfoResponseBody { s.BlockSize = &v return s } func (s *GetSnapshotInfoResponseBody) SetBlockCount(v int64) *GetSnapshotInfoResponseBody { s.BlockCount = &v return s } func (s *GetSnapshotInfoResponseBody) SetValidBlockCount(v int64) *GetSnapshotInfoResponseBody { s.ValidBlockCount = &v return s } func (s *GetSnapshotInfoResponseBody) SetStatus(v string) *GetSnapshotInfoResponseBody { s.Status = &v return s } func (s *GetSnapshotInfoResponseBody) SetCreateTime(v int64) *GetSnapshotInfoResponseBody { s.CreateTime = &v return s } func (s *GetSnapshotInfoResponseBody) SetEncrypted(v bool) *GetSnapshotInfoResponseBody { s.Encrypted = &v return s } func (s *GetSnapshotInfoResponseBody) SetFormat(v string) *GetSnapshotInfoResponseBody { s.Format = &v return s } type GetSnapshotInfoResponse struct { Headers map[string]*string `json:"headers,omitempty" xml:"headers,omitempty" require:"true"` Body *GetSnapshotInfoResponseBody `json:"body,omitempty" xml:"body,omitempty" require:"true"` } func (s GetSnapshotInfoResponse) String() string { return tea.Prettify(s) } func (s GetSnapshotInfoResponse) GoString() string { return s.String() } func (s *GetSnapshotInfoResponse) SetHeaders(v map[string]*string) *GetSnapshotInfoResponse { s.Headers = v return s } func (s *GetSnapshotInfoResponse) SetBody(v *GetSnapshotInfoResponseBody) *GetSnapshotInfoResponse { s.Body = v return s } type GetSnapshotBlockRequest struct { // 幂等参数 ClientToken *string `json:"ClientToken,omitempty" xml:"ClientToken,omitempty"` // 待读取的数据块索引,从零开始。从 ListChangedBlocks 或者 ListSnapshotBlocks 返回。最大为快照数据块数量减一 BlockIndex *int64 `json:"BlockIndex,omitempty" xml:"BlockIndex,omitempty"` // 待读取的数据块Token,从 ListChangedBlocks 或者 ListSnapshotBlocks 返回,最大长度 256 字节 BlockToken *string `json:"BlockToken,omitempty" xml:"BlockToken,omitempty"` // 待读取数据的快照名称,最大 256 字节 SnapshotId *string `json:"SnapshotId,omitempty" xml:"SnapshotId,omitempty"` } func (s GetSnapshotBlockRequest) String() string { return tea.Prettify(s) } func (s GetSnapshotBlockRequest) GoString() string { return s.String() } func (s *GetSnapshotBlockRequest) SetClientToken(v string) *GetSnapshotBlockRequest { s.ClientToken = &v return s } func (s *GetSnapshotBlockRequest) SetBlockIndex(v int64) *GetSnapshotBlockRequest { s.BlockIndex = &v return s } func (s *GetSnapshotBlockRequest) SetBlockToken(v string) *GetSnapshotBlockRequest { s.BlockToken = &v return s } func (s *GetSnapshotBlockRequest) SetSnapshotId(v string) *GetSnapshotBlockRequest { s.SnapshotId = &v return s } type GetSnapshotBlockResponse struct { Headers map[string]*string `json:"headers,omitempty" xml:"headers,omitempty" require:"true"` Body io.Reader `json:"body,omitempty" xml:"body,omitempty" require:"true"` } func (s GetSnapshotBlockResponse) String() string { return tea.Prettify(s) } func (s GetSnapshotBlockResponse) GoString() string { return s.String() } func (s *GetSnapshotBlockResponse) SetHeaders(v map[string]*string) *GetSnapshotBlockResponse { s.Headers = v return s } func (s *GetSnapshotBlockResponse) SetBody(v io.Reader) *GetSnapshotBlockResponse { s.Body = v return s } type ListSnapshotBlocksRequest struct { // 标记当前开始读取的位置,置空表示从 StartingBlockIndex 指定 Block 开始,最大长度 256 字节 NextToken *string `json:"NextToken,omitempty" xml:"NextToken,omitempty"` // 本次读取的最大数据记录数量,最小 100, 最大 10000, 默认为 100 MaxResults *int64 `json:"MaxResults,omitempty" xml:"MaxResults,omitempty"` // 幂等参数 ClientToken *string `json:"ClientToken,omitempty" xml:"ClientToken,omitempty"` // 待列出数据块的快照名称,最大 256 字节 SnapshotId *string `json:"SnapshotId,omitempty" xml:"SnapshotId,omitempty"` // 列出快照中数据块起始索引值,从零开始,最大值为快照数据块总数减一。NextToken 不为空时忽略此参数 StartingBlockIndex *int64 `json:"StartingBlockIndex,omitempty" xml:"StartingBlockIndex,omitempty"` } func (s ListSnapshotBlocksRequest) String() string { return tea.Prettify(s) } func (s ListSnapshotBlocksRequest) GoString() string { return s.String() } func (s *ListSnapshotBlocksRequest) SetNextToken(v string) *ListSnapshotBlocksRequest { s.NextToken = &v return s } func (s *ListSnapshotBlocksRequest) SetMaxResults(v int64) *ListSnapshotBlocksRequest { s.MaxResults = &v return s } func (s *ListSnapshotBlocksRequest) SetClientToken(v string) *ListSnapshotBlocksRequest { s.ClientToken = &v return s } func (s *ListSnapshotBlocksRequest) SetSnapshotId(v string) *ListSnapshotBlocksRequest { s.SnapshotId = &v return s } func (s *ListSnapshotBlocksRequest) SetStartingBlockIndex(v int64) *ListSnapshotBlocksRequest { s.StartingBlockIndex = &v return s } type ListSnapshotBlocksResponseBody struct { // 返回下一个有效数据块 token,为空时代表无其他有效数据块,最大 256 字节 NextToken *string `json:"NextToken,omitempty" xml:"NextToken,omitempty"` // 快照有效数据块信息列表,不包含空数据块 Blocks []*ListSnapshotBlocksResponseBodyBlocks `json:"Blocks,omitempty" xml:"Blocks,omitempty" type:"Repeated"` // BlockToken 过期 UTC 时间戳, 单位微秒 ExpiryTime *int64 `json:"ExpiryTime,omitempty" xml:"ExpiryTime,omitempty"` // 快照大小,单位 GB,最小 1GB VolumeSize *int64 `json:"VolumeSize,omitempty" xml:"VolumeSize,omitempty"` // 数据块大小,单位 Byte BlockSize *int64 `json:"BlockSize,omitempty" xml:"BlockSize,omitempty"` // 本次查询中快照有效数据块数量 BlockCount *int64 `json:"BlockCount,omitempty" xml:"BlockCount,omitempty"` // 快照有效数据块总数量 TotalBlockCount *int64 `json:"TotalBlockCount,omitempty" xml:"TotalBlockCount,omitempty"` } func (s ListSnapshotBlocksResponseBody) String() string { return tea.Prettify(s) } func (s ListSnapshotBlocksResponseBody) GoString() string { return s.String() } func (s *ListSnapshotBlocksResponseBody) SetNextToken(v string) *ListSnapshotBlocksResponseBody { s.NextToken = &v return s } func (s *ListSnapshotBlocksResponseBody) SetBlocks(v []*ListSnapshotBlocksResponseBodyBlocks) *ListSnapshotBlocksResponseBody { s.Blocks = v return s } func (s *ListSnapshotBlocksResponseBody) SetExpiryTime(v int64) *ListSnapshotBlocksResponseBody { s.ExpiryTime = &v return s } func (s *ListSnapshotBlocksResponseBody) SetVolumeSize(v int64) *ListSnapshotBlocksResponseBody { s.VolumeSize = &v return s } func (s *ListSnapshotBlocksResponseBody) SetBlockSize(v int64) *ListSnapshotBlocksResponseBody { s.BlockSize = &v return s } func (s *ListSnapshotBlocksResponseBody) SetBlockCount(v int64) *ListSnapshotBlocksResponseBody { s.BlockCount = &v return s } func (s *ListSnapshotBlocksResponseBody) SetTotalBlockCount(v int64) *ListSnapshotBlocksResponseBody { s.TotalBlockCount = &v return s } type ListSnapshotBlocksResponseBodyBlocks struct { // 数据块的索引值,从零开始 BlockIndex *int64 `json:"BlockIndex,omitempty" xml:"BlockIndex,omitempty"` // 数据块的 Token,用于后续的数据读取。最大长度 256 字节 BlockToken *string `json:"BlockToken,omitempty" xml:"BlockToken,omitempty"` } func (s ListSnapshotBlocksResponseBodyBlocks) String() string { return tea.Prettify(s) } func (s ListSnapshotBlocksResponseBodyBlocks) GoString() string { return s.String() } func (s *ListSnapshotBlocksResponseBodyBlocks) SetBlockIndex(v int64) *ListSnapshotBlocksResponseBodyBlocks { s.BlockIndex = &v return s } func (s *ListSnapshotBlocksResponseBodyBlocks) SetBlockToken(v string) *ListSnapshotBlocksResponseBodyBlocks { s.BlockToken = &v return s } type ListSnapshotBlocksResponse struct { Headers map[string]*string `json:"headers,omitempty" xml:"headers,omitempty" require:"true"` Body *ListSnapshotBlocksResponseBody `json:"body,omitempty" xml:"body,omitempty" require:"true"` } func (s ListSnapshotBlocksResponse) String() string { return tea.Prettify(s) } func (s ListSnapshotBlocksResponse) GoString() string { return s.String() } func (s *ListSnapshotBlocksResponse) SetHeaders(v map[string]*string) *ListSnapshotBlocksResponse { s.Headers = v return s } func (s *ListSnapshotBlocksResponse) SetBody(v *ListSnapshotBlocksResponseBody) *ListSnapshotBlocksResponse { s.Body = v return s } type ListChangedBlocksRequest struct { // 标记开始比较差异的位置,为空时代表从 StartingBlockIndex 指定数据块开始比较, 最大长度 256 字节 NextToken *string `json:"NextToken,omitempty" xml:"NextToken,omitempty"` // 本次读取的最大数据记录数量,最小 100,最大 10000 MaxResults *int64 `json:"MaxResults,omitempty" xml:"MaxResults,omitempty"` // 幂等参数 ClientToken *string `json:"ClientToken,omitempty" xml:"ClientToken,omitempty"` // 待比较的第一个快照名称,最大 256 字节 FirstSnapshotId *string `json:"FirstSnapshotId,omitempty" xml:"FirstSnapshotId,omitempty"` // 待比较的第二个快照名称,最大 256 字节 SecondSnapshotId *string `json:"SecondSnapshotId,omitempty" xml:"SecondSnapshotId,omitempty"` // 两个快照比较的起始数据块 index,从零开始,最大值为第二快照的数据块总数量减一。当 NextToken 不为空时忽略该参数 StartingBlockIndex *int64 `json:"StartingBlockIndex,omitempty" xml:"StartingBlockIndex,omitempty"` } func (s ListChangedBlocksRequest) String() string { return tea.Prettify(s) } func (s ListChangedBlocksRequest) GoString() string { return s.String() } func (s *ListChangedBlocksRequest) SetNextToken(v string) *ListChangedBlocksRequest { s.NextToken = &v return s } func (s *ListChangedBlocksRequest) SetMaxResults(v int64) *ListChangedBlocksRequest { s.MaxResults = &v return s } func (s *ListChangedBlocksRequest) SetClientToken(v string) *ListChangedBlocksRequest { s.ClientToken = &v return s } func (s *ListChangedBlocksRequest) SetFirstSnapshotId(v string) *ListChangedBlocksRequest { s.FirstSnapshotId = &v return s } func (s *ListChangedBlocksRequest) SetSecondSnapshotId(v string) *ListChangedBlocksRequest { s.SecondSnapshotId = &v return s } func (s *ListChangedBlocksRequest) SetStartingBlockIndex(v int64) *ListChangedBlocksRequest { s.StartingBlockIndex = &v return s } type ListChangedBlocksResponseBody struct { // 下一个待比较的数据块 BlockToken,为空时代表无其他待比较数据块,最大长度 256 字节 NextToken *string `json:"NextToken,omitempty" xml:"NextToken,omitempty"` // 两个快照差异的数据块列表 ChangedBlocks []*ListChangedBlocksResponseBodyChangedBlocks `json:"ChangedBlocks,omitempty" xml:"ChangedBlocks,omitempty" type:"Repeated"` // 差异数据块 token 过期 UTC 时间戳, 单位微秒 ExpiryTime *int64 `json:"ExpiryTime,omitempty" xml:"ExpiryTime,omitempty"` // 第二个快照大小,单位 GB,最小 1GB VolumeSize *int64 `json:"VolumeSize,omitempty" xml:"VolumeSize,omitempty"` // 数据块大小,单位 Byte BlockSize *int64 `json:"BlockSize,omitempty" xml:"BlockSize,omitempty"` // 本次查询中变化数据块数量 BlockCount *int64 `json:"BlockCount,omitempty" xml:"BlockCount,omitempty"` // 第二个快照相对于第一个快照差异数据快总数 TotalBlockCount *int64 `json:"TotalBlockCount,omitempty" xml:"TotalBlockCount,omitempty"` } func (s ListChangedBlocksResponseBody) String() string { return tea.Prettify(s) } func (s ListChangedBlocksResponseBody) GoString() string { return s.String() } func (s *ListChangedBlocksResponseBody) SetNextToken(v string) *ListChangedBlocksResponseBody { s.NextToken = &v return s } func (s *ListChangedBlocksResponseBody) SetChangedBlocks(v []*ListChangedBlocksResponseBodyChangedBlocks) *ListChangedBlocksResponseBody { s.ChangedBlocks = v return s } func (s *ListChangedBlocksResponseBody) SetExpiryTime(v int64) *ListChangedBlocksResponseBody { s.ExpiryTime = &v return s } func (s *ListChangedBlocksResponseBody) SetVolumeSize(v int64) *ListChangedBlocksResponseBody { s.VolumeSize = &v return s } func (s *ListChangedBlocksResponseBody) SetBlockSize(v int64) *ListChangedBlocksResponseBody { s.BlockSize = &v return s } func (s *ListChangedBlocksResponseBody) SetBlockCount(v int64) *ListChangedBlocksResponseBody { s.BlockCount = &v return s } func (s *ListChangedBlocksResponseBody) SetTotalBlockCount(v int64) *ListChangedBlocksResponseBody { s.TotalBlockCount = &v return s } type ListChangedBlocksResponseBodyChangedBlocks struct { // 数据块的索引值,从零开始 BlockIndex *int64 `json:"BlockIndex,omitempty" xml:"BlockIndex,omitempty"` // FirstSnapshotId 中数据块的 Token,用于后续的数据读取,第一个快照未变化时可省略。最大长度 256 字节 FirstBlockToken *string `json:"FirstBlockToken,omitempty" xml:"FirstBlockToken,omitempty"` // SecondBlockToken指定的快照中相对于 FirstBlockIndex 变化的数据块 Token,用于后续读取数据。最大长度 256 字节 SecondBlockToken *string `json:"SecondBlockToken,omitempty" xml:"SecondBlockToken,omitempty"` } func (s ListChangedBlocksResponseBodyChangedBlocks) String() string { return tea.Prettify(s) } func (s ListChangedBlocksResponseBodyChangedBlocks) GoString() string { return s.String() } func (s *ListChangedBlocksResponseBodyChangedBlocks) SetBlockIndex(v int64) *ListChangedBlocksResponseBodyChangedBlocks { s.BlockIndex = &v return s } func (s *ListChangedBlocksResponseBodyChangedBlocks) SetFirstBlockToken(v string) *ListChangedBlocksResponseBodyChangedBlocks { s.FirstBlockToken = &v return s } func (s *ListChangedBlocksResponseBodyChangedBlocks) SetSecondBlockToken(v string) *ListChangedBlocksResponseBodyChangedBlocks { s.SecondBlockToken = &v return s } type ListChangedBlocksResponse struct { Headers map[string]*string `json:"headers,omitempty" xml:"headers,omitempty" require:"true"` Body *ListChangedBlocksResponseBody `json:"body,omitempty" xml:"body,omitempty" require:"true"` } func (s ListChangedBlocksResponse) String() string { return tea.Prettify(s) } func (s ListChangedBlocksResponse) GoString() string { return s.String() } func (s *ListChangedBlocksResponse) SetHeaders(v map[string]*string) *ListChangedBlocksResponse { s.Headers = v return s } func (s *ListChangedBlocksResponse) SetBody(v *ListChangedBlocksResponseBody) *ListChangedBlocksResponse { s.Body = v return s } type Client struct { openapi.Client } func NewClient(config *openapi.Config) (*Client, error) { client := new(Client) err := client.Init(config) return client, err } func (client *Client) Init(config *openapi.Config) (_err error) { _err = client.Client.Init(config) if _err != nil { return _err } client.EndpointRule = tea.String("regional") _err = client.CheckConfig(config) if _err != nil { return _err } client.Endpoint, _err = client.GetEndpoint(tea.String("snapshot"), client.RegionId, client.EndpointRule, client.Network, client.Suffix, client.EndpointMap, client.Endpoint) if _err != nil { return _err } return nil } func (client *Client) GetEndpoint(productId *string, regionId *string, endpointRule *string, network *string, suffix *string, endpointMap map[string]*string, endpoint *string) (_result *string, _err error) { if !tea.BoolValue(util.Empty(endpoint)) { _result = endpoint return _result, _err } if !tea.BoolValue(util.IsUnset(endpointMap)) && !tea.BoolValue(util.Empty(endpointMap[tea.StringValue(regionId)])) { _result = endpointMap[tea.StringValue(regionId)] return _result, _err } _body, _err := endpointutil.GetEndpointRules(productId, regionId, endpointRule, network, suffix) if _err != nil { return _result, _err } _result = _body return _result, _err } func (client *Client) GetSnapshotInfo(request *GetSnapshotInfoRequest) (_result *GetSnapshotInfoResponse, _err error) { runtime := &util.RuntimeOptions{} headers := make(map[string]*string) _result = &GetSnapshotInfoResponse{} _body, _err := client.GetSnapshotInfoWithOptions(request, headers, runtime) if _err != nil { return _result, _err } _result = _body return _result, _err } func (client *Client) GetSnapshotInfoWithOptions(request *GetSnapshotInfoRequest, headers map[string]*string, runtime *util.RuntimeOptions) (_result *GetSnapshotInfoResponse, _err error) { _err = util.ValidateModel(request) if _err != nil { return _result, _err } query := map[string]interface{}{} if !tea.BoolValue(util.IsUnset(request.ClientToken)) { query["ClientToken"] = request.ClientToken } if !tea.BoolValue(util.IsUnset(request.SnapshotId)) { query["SnapshotId"] = request.SnapshotId } if !tea.BoolValue(util.IsUnset(request.ShowDetail)) { query["ShowDetail"] = request.ShowDetail } req := &openapi.OpenApiRequest{ Headers: headers, Query: openapiutil.Query(query), } _result = &GetSnapshotInfoResponse{} _body, _err := client.DoROARequest(tea.String("GetSnapshotInfo"), tea.String("2021-03-15"), tea.String("HTTPS"), tea.String("GET"), tea.String("AK"), tea.String("/snapshots/info"), tea.String("json"), req, runtime) if _err != nil { return _result, _err } _err = tea.Convert(_body, &_result) return _result, _err } func (client *Client) GetSnapshotBlock(request *GetSnapshotBlockRequest) (_result *GetSnapshotBlockResponse, _err error) { runtime := &util.RuntimeOptions{} headers := make(map[string]*string) _result = &GetSnapshotBlockResponse{} _body, _err := client.GetSnapshotBlockWithOptions(request, headers, runtime) if _err != nil { return _result, _err } _result = _body return _result, _err } func (client *Client) GetSnapshotBlockWithOptions(request *GetSnapshotBlockRequest, headers map[string]*string, runtime *util.RuntimeOptions) (_result *GetSnapshotBlockResponse, _err error) { _err = util.ValidateModel(request) if _err != nil { return _result, _err } query := map[string]interface{}{} if !tea.BoolValue(util.IsUnset(request.ClientToken)) { query["ClientToken"] = request.ClientToken } if !tea.BoolValue(util.IsUnset(request.BlockIndex)) { query["BlockIndex"] = request.BlockIndex } if !tea.BoolValue(util.IsUnset(request.BlockToken)) { query["BlockToken"] = request.BlockToken } if !tea.BoolValue(util.IsUnset(request.SnapshotId)) { query["SnapshotId"] = request.SnapshotId } req := &openapi.OpenApiRequest{ Headers: headers, Query: openapiutil.Query(query), } res := &GetSnapshotBlockResponse{} doROARequestTmp, err := client.DoROARequest(tea.String("GetSnapshotBlock"), tea.String("2021-03-15"), tea.String("HTTPS"), tea.String("GET"), tea.String("AK"), tea.String("/snapshots/block"), tea.String("binary"), req, runtime) if err != nil { _err = err return } tmp := util.AssertAsMap(doROARequestTmp) if !tea.BoolValue(util.IsUnset(tmp["body"])) { respBody := util.AssertAsReadable(tmp["body"]) res.Body = respBody } if !tea.BoolValue(util.IsUnset(tmp["headers"])) { respHeaders := util.AssertAsMap(tmp["headers"]) res.Headers = util.StringifyMapValue(respHeaders) } _result = res return _result, _err } func (client *Client) ListSnapshotBlocks(request *ListSnapshotBlocksRequest) (_result *ListSnapshotBlocksResponse, _err error) { runtime := &util.RuntimeOptions{} headers := make(map[string]*string) _result = &ListSnapshotBlocksResponse{} _body, _err := client.ListSnapshotBlocksWithOptions(request, headers, runtime) if _err != nil { return _result, _err } _result = _body return _result, _err } func (client *Client) ListSnapshotBlocksWithOptions(request *ListSnapshotBlocksRequest, headers map[string]*string, runtime *util.RuntimeOptions) (_result *ListSnapshotBlocksResponse, _err error) { _err = util.ValidateModel(request) if _err != nil { return _result, _err } query := map[string]interface{}{} if !tea.BoolValue(util.IsUnset(request.NextToken)) { query["NextToken"] = request.NextToken } if !tea.BoolValue(util.IsUnset(request.MaxResults)) { query["MaxResults"] = request.MaxResults } if !tea.BoolValue(util.IsUnset(request.ClientToken)) { query["ClientToken"] = request.ClientToken } if !tea.BoolValue(util.IsUnset(request.SnapshotId)) { query["SnapshotId"] = request.SnapshotId } if !tea.BoolValue(util.IsUnset(request.StartingBlockIndex)) { query["StartingBlockIndex"] = request.StartingBlockIndex } req := &openapi.OpenApiRequest{ Headers: headers, Query: openapiutil.Query(query), } _result = &ListSnapshotBlocksResponse{} _body, _err := client.DoROARequest(tea.String("ListSnapshotBlocks"), tea.String("2021-03-15"), tea.String("HTTPS"), tea.String("GET"), tea.String("AK"), tea.String("/snapshots/listblocks"), tea.String("json"), req, runtime) if _err != nil { return _result, _err } _err = tea.Convert(_body, &_result) return _result, _err } func (client *Client) ListChangedBlocks(request *ListChangedBlocksRequest) (_result *ListChangedBlocksResponse, _err error) { runtime := &util.RuntimeOptions{} headers := make(map[string]*string) _result = &ListChangedBlocksResponse{} _body, _err := client.ListChangedBlocksWithOptions(request, headers, runtime) if _err != nil { return _result, _err } _result = _body return _result, _err } func (client *Client) ListChangedBlocksWithOptions(request *ListChangedBlocksRequest, headers map[string]*string, runtime *util.RuntimeOptions) (_result *ListChangedBlocksResponse, _err error) { _err = util.ValidateModel(request) if _err != nil { return _result, _err } query := map[string]interface{}{} if !tea.BoolValue(util.IsUnset(request.NextToken)) { query["NextToken"] = request.NextToken } if !tea.BoolValue(util.IsUnset(request.MaxResults)) { query["MaxResults"] = request.MaxResults } if !tea.BoolValue(util.IsUnset(request.ClientToken)) { query["ClientToken"] = request.ClientToken } if !tea.BoolValue(util.IsUnset(request.FirstSnapshotId)) { query["FirstSnapshotId"] = request.FirstSnapshotId } if !tea.BoolValue(util.IsUnset(request.SecondSnapshotId)) { query["SecondSnapshotId"] = request.SecondSnapshotId } if !tea.BoolValue(util.IsUnset(request.StartingBlockIndex)) { query["StartingBlockIndex"] = request.StartingBlockIndex } req := &openapi.OpenApiRequest{ Headers: headers, Query: openapiutil.Query(query), } _result = &ListChangedBlocksResponse{} _body, _err := client.DoROARequest(tea.String("ListChangedBlocks"), tea.String("2021-03-15"), tea.String("HTTPS"), tea.String("GET"), tea.String("AK"), tea.String("/snapshots/changedblocks"), tea.String("json"), req, runtime) if _err != nil { return _result, _err } _err = tea.Convert(_body, &_result) return _result, _err }