aboutsummaryrefslogblamecommitdiffstats
path: root/vendor/github.com/Azure/azure-storage-blob-go/2018-03-28/azblob/zz_generated_service.go
blob: 76f235e1595b5a5d59fc84fc28c0d5d3320bfb0f (plain) (tree)





























































































































































































































































































































































                                                                                                                                                                                                                                  
package azblob

// Code generated by Microsoft (R) AutoRest Code Generator.
// Changes may cause incorrect behavior and will be lost if the code is regenerated.

import (
    "bytes"
    "context"
    "encoding/xml"
    "github.com/Azure/azure-pipeline-go/pipeline"
    "io"
    "io/ioutil"
    "net/http"
    "net/url"
    "strconv"
)

// serviceClient is the client for the Service methods of the Azblob service.
type serviceClient struct {
    managementClient
}

// newServiceClient creates an instance of the serviceClient client.
func newServiceClient(url url.URL, p pipeline.Pipeline) serviceClient {
    return serviceClient{newManagementClient(url, p)}
}

// GetProperties gets the properties of a storage account's Blob service, including properties for Storage Analytics
// and CORS (Cross-Origin Resource Sharing) rules.
//
// timeout is the timeout parameter is expressed in seconds. For more information, see <a
// href="https://docs.microsoft.com/en-us/rest/api/storageservices/fileservices/setting-timeouts-for-blob-service-operations">Setting
// Timeouts for Blob Service Operations.</a> requestID is provides a client-generated, opaque value with a 1 KB
// character limit that is recorded in the analytics logs when storage analytics logging is enabled.
func (client serviceClient) GetProperties(ctx context.Context, timeout *int32, requestID *string) (*StorageServiceProperties, error) {
    if err := validate([]validation{
        {targetValue: timeout,
            constraints: []constraint{{target: "timeout", name: null, rule: false,
                chain: []constraint{{target: "timeout", name: inclusiveMinimum, rule: 0, chain: nil}}}}}}); err != nil {
        return nil, err
    }
    req, err := client.getPropertiesPreparer(timeout, requestID)
    if err != nil {
        return nil, err
    }
    resp, err := client.Pipeline().Do(ctx, responderPolicyFactory{responder: client.getPropertiesResponder}, req)
    if err != nil {
        return nil, err
    }
    return resp.(*StorageServiceProperties), err
}

// getPropertiesPreparer prepares the GetProperties request.
func (client serviceClient) getPropertiesPreparer(timeout *int32, requestID *string) (pipeline.Request, error) {
    req, err := pipeline.NewRequest("GET", client.url, nil)
    if err != nil {
        return req, pipeline.NewError(err, "failed to create request")
    }
    params := req.URL.Query()
    if timeout != nil {
        params.Set("timeout", strconv.FormatInt(int64(*timeout), 10))
    }
    params.Set("restype", "service")
    params.Set("comp", "properties")
    req.URL.RawQuery = params.Encode()
    req.Header.Set("x-ms-version", ServiceVersion)
    if requestID != nil {
        req.Header.Set("x-ms-client-request-id", *requestID)
    }
    return req, nil
}

// getPropertiesResponder handles the response to the GetProperties request.
func (client serviceClient) getPropertiesResponder(resp pipeline.Response) (pipeline.Response, error) {
    err := validateResponse(resp, http.StatusOK)
    if resp == nil {
        return nil, err
    }
    result := &StorageServiceProperties{rawResponse: resp.Response()}
    if err != nil {
        return result, err
    }
    defer resp.Response().Body.Close()
    b, err := ioutil.ReadAll(resp.Response().Body)
    if err != nil {
        return result, NewResponseError(err, resp.Response(), "failed to read response body")
    }
    if len(b) > 0 {
        b = removeBOM(b)
        err = xml.Unmarshal(b, result)
        if err != nil {
            return result, NewResponseError(err, resp.Response(), "failed to unmarshal response body")
        }
    }
    return result, nil
}

// GetStatistics retrieves statistics related to replication for the Blob service. It is only available on the
// secondary location endpoint when read-access geo-redundant replication is enabled for the storage account.
//
// timeout is the timeout parameter is expressed in seconds. For more information, see <a
// href="https://docs.microsoft.com/en-us/rest/api/storageservices/fileservices/setting-timeouts-for-blob-service-operations">Setting
// Timeouts for Blob Service Operations.</a> requestID is provides a client-generated, opaque value with a 1 KB
// character limit that is recorded in the analytics logs when storage analytics logging is enabled.
func (client serviceClient) GetStatistics(ctx context.Context, timeout *int32, requestID *string) (*StorageServiceStats, error) {
    if err := validate([]validation{
        {targetValue: timeout,
            constraints: []constraint{{target: "timeout", name: null, rule: false,
                chain: []constraint{{target: "timeout", name: inclusiveMinimum, rule: 0, chain: nil}}}}}}); err != nil {
        return nil, err
    }
    req, err := client.getStatisticsPreparer(timeout, requestID)
    if err != nil {
        return nil, err
    }
    resp, err := client.Pipeline().Do(ctx, responderPolicyFactory{responder: client.getStatisticsResponder}, req)
    if err != nil {
        return nil, err
    }
    return resp.(*StorageServiceStats), err
}

// getStatisticsPreparer prepares the GetStatistics request.
func (client serviceClient) getStatisticsPreparer(timeout *int32, requestID *string) (pipeline.Request, error) {
    req, err := pipeline.NewRequest("GET", client.url, nil)
    if err != nil {
        return req, pipeline.NewError(err, "failed to create request")
    }
    params := req.URL.Query()
    if timeout != nil {
        params.Set("timeout", strconv.FormatInt(int64(*timeout), 10))
    }
    params.Set("restype", "service")
    params.Set("comp", "stats")
    req.URL.RawQuery = params.Encode()
    req.Header.Set("x-ms-version", ServiceVersion)
    if requestID != nil {
        req.Header.Set("x-ms-client-request-id", *requestID)
    }
    return req, nil
}

// getStatisticsResponder handles the response to the GetStatistics request.
func (client serviceClient) getStatisticsResponder(resp pipeline.Response) (pipeline.Response, error) {
    err := validateResponse(resp, http.StatusOK)
    if resp == nil {
        return nil, err
    }
    result := &StorageServiceStats{rawResponse: resp.Response()}
    if err != nil {
        return result, err
    }
    defer resp.Response().Body.Close()
    b, err := ioutil.ReadAll(resp.Response().Body)
    if err != nil {
        return result, NewResponseError(err, resp.Response(), "failed to read response body")
    }
    if len(b) > 0 {
        b = removeBOM(b)
        err = xml.Unmarshal(b, result)
        if err != nil {
            return result, NewResponseError(err, resp.Response(), "failed to unmarshal response body")
        }
    }
    return result, nil
}

// ListContainersSegment the List Containers Segment operation returns a list of the containers under the specified
// account
//
// prefix is filters the results to return only containers whose name begins with the specified prefix. marker is a
// string value that identifies the portion of the list of containers to be returned with the next listing operation.
// The operation returns the NextMarker value within the response body if the listing operation did not return all
// containers remaining to be listed with the current page. The NextMarker value can be used as the value for the
// marker parameter in a subsequent call to request the next page of list items. The marker value is opaque to the
// client. maxresults is specifies the maximum number of containers to return. If the request does not specify
// maxresults, or specifies a value greater than 5000, the server will return up to 5000 items. Note that if the
// listing operation crosses a partition boundary, then the service will return a continuation token for retrieving the
// remainder of the results. For this reason, it is possible that the service will return fewer results than specified
// by maxresults, or than the default of 5000. include is include this parameter to specify that the container's
// metadata be returned as part of the response body. timeout is the timeout parameter is expressed in seconds. For
// more information, see <a
// href="https://docs.microsoft.com/en-us/rest/api/storageservices/fileservices/setting-timeouts-for-blob-service-operations">Setting
// Timeouts for Blob Service Operations.</a> requestID is provides a client-generated, opaque value with a 1 KB
// character limit that is recorded in the analytics logs when storage analytics logging is enabled.
func (client serviceClient) ListContainersSegment(ctx context.Context, prefix *string, marker *string, maxresults *int32, include ListContainersIncludeType, timeout *int32, requestID *string) (*ListContainersResponse, error) {
    if err := validate([]validation{
        {targetValue: maxresults,
            constraints: []constraint{{target: "maxresults", name: null, rule: false,
                chain: []constraint{{target: "maxresults", name: inclusiveMinimum, rule: 1, chain: nil}}}}},
        {targetValue: timeout,
            constraints: []constraint{{target: "timeout", name: null, rule: false,
                chain: []constraint{{target: "timeout", name: inclusiveMinimum, rule: 0, chain: nil}}}}}}); err != nil {
        return nil, err
    }
    req, err := client.listContainersSegmentPreparer(prefix, marker, maxresults, include, timeout, requestID)
    if err != nil {
        return nil, err
    }
    resp, err := client.Pipeline().Do(ctx, responderPolicyFactory{responder: client.listContainersSegmentResponder}, req)
    if err != nil {
        return nil, err
    }
    return resp.(*ListContainersResponse), err
}

// listContainersSegmentPreparer prepares the ListContainersSegment request.
func (client serviceClient) listContainersSegmentPreparer(prefix *string, marker *string, maxresults *int32, include ListContainersIncludeType, timeout *int32, requestID *string) (pipeline.Request, error) {
    req, err := pipeline.NewRequest("GET", client.url, nil)
    if err != nil {
        return req, pipeline.NewError(err, "failed to create request")
    }
    params := req.URL.Query()
    if prefix != nil && len(*prefix) > 0 {
        params.Set("prefix", *prefix)
    }
    if marker != nil && len(*marker) > 0 {
        params.Set("marker", *marker)
    }
    if maxresults != nil {
        params.Set("maxresults", strconv.FormatInt(int64(*maxresults), 10))
    }
    if include != ListContainersIncludeNone {
        params.Set("include", string(include))
    }
    if timeout != nil {
        params.Set("timeout", strconv.FormatInt(int64(*timeout), 10))
    }
    params.Set("comp", "list")
    req.URL.RawQuery = params.Encode()
    req.Header.Set("x-ms-version", ServiceVersion)
    if requestID != nil {
        req.Header.Set("x-ms-client-request-id", *requestID)
    }
    return req, nil
}

// listContainersSegmentResponder handles the response to the ListContainersSegment request.
func (client serviceClient) listContainersSegmentResponder(resp pipeline.Response) (pipeline.Response, error) {
    err := validateResponse(resp, http.StatusOK)
    if resp == nil {
        return nil, err
    }
    result := &ListContainersResponse{rawResponse: resp.Response()}
    if err != nil {
        return result, err
    }
    defer resp.Response().Body.Close()
    b, err := ioutil.ReadAll(resp.Response().Body)
    if err != nil {
        return result, NewResponseError(err, resp.Response(), "failed to read response body")
    }
    if len(b) > 0 {
        b = removeBOM(b)
        err = xml.Unmarshal(b, result)
        if err != nil {
            return result, NewResponseError(err, resp.Response(), "failed to unmarshal response body")
        }
    }
    return result, nil
}

// SetProperties sets properties for a storage account's Blob service endpoint, including properties for Storage
// Analytics and CORS (Cross-Origin Resource Sharing) rules
//
// storageServiceProperties is the StorageService properties. timeout is the timeout parameter is expressed in seconds.
// For more information, see <a
// href="https://docs.microsoft.com/en-us/rest/api/storageservices/fileservices/setting-timeouts-for-blob-service-operations">Setting
// Timeouts for Blob Service Operations.</a> requestID is provides a client-generated, opaque value with a 1 KB
// character limit that is recorded in the analytics logs when storage analytics logging is enabled.
func (client serviceClient) SetProperties(ctx context.Context, storageServiceProperties StorageServiceProperties, timeout *int32, requestID *string) (*ServiceSetPropertiesResponse, error) {
    if err := validate([]validation{
        {targetValue: storageServiceProperties,
            constraints: []constraint{{target: "storageServiceProperties.Logging", name: null, rule: false,
                chain: []constraint{{target: "storageServiceProperties.Logging.RetentionPolicy", name: null, rule: true,
                    chain: []constraint{{target: "storageServiceProperties.Logging.RetentionPolicy.Days", name: null, rule: false,
                        chain: []constraint{{target: "storageServiceProperties.Logging.RetentionPolicy.Days", name: inclusiveMinimum, rule: 1, chain: nil}}},
                    }},
                }},
                {target: "storageServiceProperties.HourMetrics", name: null, rule: false,
                    chain: []constraint{{target: "storageServiceProperties.HourMetrics.RetentionPolicy", name: null, rule: false,
                        chain: []constraint{{target: "storageServiceProperties.HourMetrics.RetentionPolicy.Days", name: null, rule: false,
                            chain: []constraint{{target: "storageServiceProperties.HourMetrics.RetentionPolicy.Days", name: inclusiveMinimum, rule: 1, chain: nil}}},
                        }},
                    }},
                {target: "storageServiceProperties.MinuteMetrics", name: null, rule: false,
                    chain: []constraint{{target: "storageServiceProperties.MinuteMetrics.RetentionPolicy", name: null, rule: false,
                        chain: []constraint{{target: "storageServiceProperties.MinuteMetrics.RetentionPolicy.Days", name: null, rule: false,
                            chain: []constraint{{target: "storageServiceProperties.MinuteMetrics.RetentionPolicy.Days", name: inclusiveMinimum, rule: 1, chain: nil}}},
                        }},
                    }},
                {target: "storageServiceProperties.DeleteRetentionPolicy", name: null, rule: false,
                    chain: []constraint{{target: "storageServiceProperties.DeleteRetentionPolicy.Days", name: null, rule: false,
                        chain: []constraint{{target: "storageServiceProperties.DeleteRetentionPolicy.Days", name: inclusiveMinimum, rule: 1, chain: nil}}},
                    }}}},
        {targetValue: timeout,
            constraints: []constraint{{target: "timeout", name: null, rule: false,
                chain: []constraint{{target: "timeout", name: inclusiveMinimum, rule: 0, chain: nil}}}}}}); err != nil {
        return nil, err
    }
    req, err := client.setPropertiesPreparer(storageServiceProperties, timeout, requestID)
    if err != nil {
        return nil, err
    }
    resp, err := client.Pipeline().Do(ctx, responderPolicyFactory{responder: client.setPropertiesResponder}, req)
    if err != nil {
        return nil, err
    }
    return resp.(*ServiceSetPropertiesResponse), err
}

// setPropertiesPreparer prepares the SetProperties request.
func (client serviceClient) setPropertiesPreparer(storageServiceProperties StorageServiceProperties, timeout *int32, requestID *string) (pipeline.Request, error) {
    req, err := pipeline.NewRequest("PUT", client.url, nil)
    if err != nil {
        return req, pipeline.NewError(err, "failed to create request")
    }
    params := req.URL.Query()
    if timeout != nil {
        params.Set("timeout", strconv.FormatInt(int64(*timeout), 10))
    }
    params.Set("restype", "service")
    params.Set("comp", "properties")
    req.URL.RawQuery = params.Encode()
    req.Header.Set("x-ms-version", ServiceVersion)
    if requestID != nil {
        req.Header.Set("x-ms-client-request-id", *requestID)
    }
    b, err := xml.Marshal(storageServiceProperties)
    if err != nil {
        return req, pipeline.NewError(err, "failed to marshal request body")
    }
    req.Header.Set("Content-Type", "application/xml")
    err = req.SetBody(bytes.NewReader(b))
    if err != nil {
        return req, pipeline.NewError(err, "failed to set request body")
    }
    return req, nil
}

// setPropertiesResponder handles the response to the SetProperties request.
func (client serviceClient) setPropertiesResponder(resp pipeline.Response) (pipeline.Response, error) {
    err := validateResponse(resp, http.StatusOK, http.StatusAccepted)
    if resp == nil {
        return nil, err
    }
    io.Copy(ioutil.Discard, resp.Response().Body)
    resp.Response().Body.Close()
    return &ServiceSetPropertiesResponse{rawResponse: resp.Response()}, err
}