1package resourcehealth 2 3// Copyright (c) Microsoft Corporation. All rights reserved. 4// Licensed under the MIT License. See License.txt in the project root for license information. 5// 6// Code generated by Microsoft (R) AutoRest Code Generator. 7// Changes may cause incorrect behavior and will be lost if the code is regenerated. 8 9import ( 10 "context" 11 "github.com/Azure/go-autorest/autorest" 12 "github.com/Azure/go-autorest/autorest/azure" 13 "github.com/Azure/go-autorest/tracing" 14 "net/http" 15) 16 17// ChildAvailabilityStatusesClient is the the Resource Health Client. 18type ChildAvailabilityStatusesClient struct { 19 BaseClient 20} 21 22// NewChildAvailabilityStatusesClient creates an instance of the ChildAvailabilityStatusesClient client. 23func NewChildAvailabilityStatusesClient(subscriptionID string) ChildAvailabilityStatusesClient { 24 return NewChildAvailabilityStatusesClientWithBaseURI(DefaultBaseURI, subscriptionID) 25} 26 27// NewChildAvailabilityStatusesClientWithBaseURI creates an instance of the ChildAvailabilityStatusesClient client 28// using a custom endpoint. Use this when interacting with an Azure cloud that uses a non-standard base URI (sovereign 29// clouds, Azure stack). 30func NewChildAvailabilityStatusesClientWithBaseURI(baseURI string, subscriptionID string) ChildAvailabilityStatusesClient { 31 return ChildAvailabilityStatusesClient{NewWithBaseURI(baseURI, subscriptionID)} 32} 33 34// GetByResource gets current availability status for a single resource 35// Parameters: 36// resourceURI - the fully qualified ID of the resource, including the resource name and resource type. 37// Currently the API only support one nesting level resource types : 38// /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resource-provider-name}/{parentResourceType}/{parentResourceName}/{resourceType}/{resourceName} 39// filter - the filter to apply on the operation. For more information please see 40// https://docs.microsoft.com/en-us/rest/api/apimanagement/apis?redirectedfrom=MSDN 41// expand - setting $expand=recommendedactions in url query expands the recommendedactions in the response. 42func (client ChildAvailabilityStatusesClient) GetByResource(ctx context.Context, resourceURI string, filter string, expand string) (result AvailabilityStatus, err error) { 43 if tracing.IsEnabled() { 44 ctx = tracing.StartSpan(ctx, fqdn+"/ChildAvailabilityStatusesClient.GetByResource") 45 defer func() { 46 sc := -1 47 if result.Response.Response != nil { 48 sc = result.Response.Response.StatusCode 49 } 50 tracing.EndSpan(ctx, sc, err) 51 }() 52 } 53 req, err := client.GetByResourcePreparer(ctx, resourceURI, filter, expand) 54 if err != nil { 55 err = autorest.NewErrorWithError(err, "resourcehealth.ChildAvailabilityStatusesClient", "GetByResource", nil, "Failure preparing request") 56 return 57 } 58 59 resp, err := client.GetByResourceSender(req) 60 if err != nil { 61 result.Response = autorest.Response{Response: resp} 62 err = autorest.NewErrorWithError(err, "resourcehealth.ChildAvailabilityStatusesClient", "GetByResource", resp, "Failure sending request") 63 return 64 } 65 66 result, err = client.GetByResourceResponder(resp) 67 if err != nil { 68 err = autorest.NewErrorWithError(err, "resourcehealth.ChildAvailabilityStatusesClient", "GetByResource", resp, "Failure responding to request") 69 return 70 } 71 72 return 73} 74 75// GetByResourcePreparer prepares the GetByResource request. 76func (client ChildAvailabilityStatusesClient) GetByResourcePreparer(ctx context.Context, resourceURI string, filter string, expand string) (*http.Request, error) { 77 pathParameters := map[string]interface{}{ 78 "resourceUri": resourceURI, 79 } 80 81 const APIVersion = "2015-01-01" 82 queryParameters := map[string]interface{}{ 83 "api-version": APIVersion, 84 } 85 if len(filter) > 0 { 86 queryParameters["$filter"] = autorest.Encode("query", filter) 87 } 88 if len(expand) > 0 { 89 queryParameters["$expand"] = autorest.Encode("query", expand) 90 } 91 92 preparer := autorest.CreatePreparer( 93 autorest.AsGet(), 94 autorest.WithBaseURL(client.BaseURI), 95 autorest.WithPathParameters("/{resourceUri}/providers/Microsoft.ResourceHealth/childAvailabilityStatuses/current", pathParameters), 96 autorest.WithQueryParameters(queryParameters)) 97 return preparer.Prepare((&http.Request{}).WithContext(ctx)) 98} 99 100// GetByResourceSender sends the GetByResource request. The method will close the 101// http.Response Body if it receives an error. 102func (client ChildAvailabilityStatusesClient) GetByResourceSender(req *http.Request) (*http.Response, error) { 103 return client.Send(req, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) 104} 105 106// GetByResourceResponder handles the response to the GetByResource request. The method always 107// closes the http.Response Body. 108func (client ChildAvailabilityStatusesClient) GetByResourceResponder(resp *http.Response) (result AvailabilityStatus, err error) { 109 err = autorest.Respond( 110 resp, 111 azure.WithErrorUnlessStatusCode(http.StatusOK), 112 autorest.ByUnmarshallingJSON(&result), 113 autorest.ByClosing()) 114 result.Response = autorest.Response{Response: resp} 115 return 116} 117 118// List lists the historical availability statuses for a single child resource. Use the nextLink property in the 119// response to get the next page of availability status 120// Parameters: 121// resourceURI - the fully qualified ID of the resource, including the resource name and resource type. 122// Currently the API only support one nesting level resource types : 123// /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resource-provider-name}/{parentResourceType}/{parentResourceName}/{resourceType}/{resourceName} 124// filter - the filter to apply on the operation. For more information please see 125// https://docs.microsoft.com/en-us/rest/api/apimanagement/apis?redirectedfrom=MSDN 126// expand - setting $expand=recommendedactions in url query expands the recommendedactions in the response. 127func (client ChildAvailabilityStatusesClient) List(ctx context.Context, resourceURI string, filter string, expand string) (result AvailabilityStatusListResultPage, err error) { 128 if tracing.IsEnabled() { 129 ctx = tracing.StartSpan(ctx, fqdn+"/ChildAvailabilityStatusesClient.List") 130 defer func() { 131 sc := -1 132 if result.aslr.Response.Response != nil { 133 sc = result.aslr.Response.Response.StatusCode 134 } 135 tracing.EndSpan(ctx, sc, err) 136 }() 137 } 138 result.fn = client.listNextResults 139 req, err := client.ListPreparer(ctx, resourceURI, filter, expand) 140 if err != nil { 141 err = autorest.NewErrorWithError(err, "resourcehealth.ChildAvailabilityStatusesClient", "List", nil, "Failure preparing request") 142 return 143 } 144 145 resp, err := client.ListSender(req) 146 if err != nil { 147 result.aslr.Response = autorest.Response{Response: resp} 148 err = autorest.NewErrorWithError(err, "resourcehealth.ChildAvailabilityStatusesClient", "List", resp, "Failure sending request") 149 return 150 } 151 152 result.aslr, err = client.ListResponder(resp) 153 if err != nil { 154 err = autorest.NewErrorWithError(err, "resourcehealth.ChildAvailabilityStatusesClient", "List", resp, "Failure responding to request") 155 return 156 } 157 if result.aslr.hasNextLink() && result.aslr.IsEmpty() { 158 err = result.NextWithContext(ctx) 159 return 160 } 161 162 return 163} 164 165// ListPreparer prepares the List request. 166func (client ChildAvailabilityStatusesClient) ListPreparer(ctx context.Context, resourceURI string, filter string, expand string) (*http.Request, error) { 167 pathParameters := map[string]interface{}{ 168 "resourceUri": resourceURI, 169 } 170 171 const APIVersion = "2015-01-01" 172 queryParameters := map[string]interface{}{ 173 "api-version": APIVersion, 174 } 175 if len(filter) > 0 { 176 queryParameters["$filter"] = autorest.Encode("query", filter) 177 } 178 if len(expand) > 0 { 179 queryParameters["$expand"] = autorest.Encode("query", expand) 180 } 181 182 preparer := autorest.CreatePreparer( 183 autorest.AsGet(), 184 autorest.WithBaseURL(client.BaseURI), 185 autorest.WithPathParameters("/{resourceUri}/providers/Microsoft.ResourceHealth/childAvailabilityStatuses", pathParameters), 186 autorest.WithQueryParameters(queryParameters)) 187 return preparer.Prepare((&http.Request{}).WithContext(ctx)) 188} 189 190// ListSender sends the List request. The method will close the 191// http.Response Body if it receives an error. 192func (client ChildAvailabilityStatusesClient) ListSender(req *http.Request) (*http.Response, error) { 193 return client.Send(req, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) 194} 195 196// ListResponder handles the response to the List request. The method always 197// closes the http.Response Body. 198func (client ChildAvailabilityStatusesClient) ListResponder(resp *http.Response) (result AvailabilityStatusListResult, err error) { 199 err = autorest.Respond( 200 resp, 201 azure.WithErrorUnlessStatusCode(http.StatusOK), 202 autorest.ByUnmarshallingJSON(&result), 203 autorest.ByClosing()) 204 result.Response = autorest.Response{Response: resp} 205 return 206} 207 208// listNextResults retrieves the next set of results, if any. 209func (client ChildAvailabilityStatusesClient) listNextResults(ctx context.Context, lastResults AvailabilityStatusListResult) (result AvailabilityStatusListResult, err error) { 210 req, err := lastResults.availabilityStatusListResultPreparer(ctx) 211 if err != nil { 212 return result, autorest.NewErrorWithError(err, "resourcehealth.ChildAvailabilityStatusesClient", "listNextResults", nil, "Failure preparing next results request") 213 } 214 if req == nil { 215 return 216 } 217 resp, err := client.ListSender(req) 218 if err != nil { 219 result.Response = autorest.Response{Response: resp} 220 return result, autorest.NewErrorWithError(err, "resourcehealth.ChildAvailabilityStatusesClient", "listNextResults", resp, "Failure sending next results request") 221 } 222 result, err = client.ListResponder(resp) 223 if err != nil { 224 err = autorest.NewErrorWithError(err, "resourcehealth.ChildAvailabilityStatusesClient", "listNextResults", resp, "Failure responding to next results request") 225 } 226 return 227} 228 229// ListComplete enumerates all values, automatically crossing page boundaries as required. 230func (client ChildAvailabilityStatusesClient) ListComplete(ctx context.Context, resourceURI string, filter string, expand string) (result AvailabilityStatusListResultIterator, err error) { 231 if tracing.IsEnabled() { 232 ctx = tracing.StartSpan(ctx, fqdn+"/ChildAvailabilityStatusesClient.List") 233 defer func() { 234 sc := -1 235 if result.Response().Response.Response != nil { 236 sc = result.page.Response().Response.Response.StatusCode 237 } 238 tracing.EndSpan(ctx, sc, err) 239 }() 240 } 241 result.page, err = client.List(ctx, resourceURI, filter, expand) 242 return 243} 244