1package apimanagement 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/autorest/validation" 14 "github.com/Azure/go-autorest/tracing" 15 "net/http" 16) 17 18// NotificationClient is the apiManagement Client 19type NotificationClient struct { 20 BaseClient 21} 22 23// NewNotificationClient creates an instance of the NotificationClient client. 24func NewNotificationClient(subscriptionID string) NotificationClient { 25 return NewNotificationClientWithBaseURI(DefaultBaseURI, subscriptionID) 26} 27 28// NewNotificationClientWithBaseURI creates an instance of the NotificationClient client using a custom endpoint. Use 29// this when interacting with an Azure cloud that uses a non-standard base URI (sovereign clouds, Azure stack). 30func NewNotificationClientWithBaseURI(baseURI string, subscriptionID string) NotificationClient { 31 return NotificationClient{NewWithBaseURI(baseURI, subscriptionID)} 32} 33 34// CreateOrUpdate create or Update API Management publisher notification. 35// Parameters: 36// resourceGroupName - the name of the resource group. 37// serviceName - the name of the API Management service. 38// notificationName - notification Name Identifier. 39// ifMatch - eTag of the Entity. Not required when creating an entity, but required when updating an entity. 40func (client NotificationClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, serviceName string, notificationName NotificationName, ifMatch string) (result NotificationContract, err error) { 41 if tracing.IsEnabled() { 42 ctx = tracing.StartSpan(ctx, fqdn+"/NotificationClient.CreateOrUpdate") 43 defer func() { 44 sc := -1 45 if result.Response.Response != nil { 46 sc = result.Response.Response.StatusCode 47 } 48 tracing.EndSpan(ctx, sc, err) 49 }() 50 } 51 if err := validation.Validate([]validation.Validation{ 52 {TargetValue: serviceName, 53 Constraints: []validation.Constraint{{Target: "serviceName", Name: validation.MaxLength, Rule: 50, Chain: nil}, 54 {Target: "serviceName", Name: validation.MinLength, Rule: 1, Chain: nil}, 55 {Target: "serviceName", Name: validation.Pattern, Rule: `^[a-zA-Z](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?$`, Chain: nil}}}}); err != nil { 56 return result, validation.NewError("apimanagement.NotificationClient", "CreateOrUpdate", err.Error()) 57 } 58 59 req, err := client.CreateOrUpdatePreparer(ctx, resourceGroupName, serviceName, notificationName, ifMatch) 60 if err != nil { 61 err = autorest.NewErrorWithError(err, "apimanagement.NotificationClient", "CreateOrUpdate", nil, "Failure preparing request") 62 return 63 } 64 65 resp, err := client.CreateOrUpdateSender(req) 66 if err != nil { 67 result.Response = autorest.Response{Response: resp} 68 err = autorest.NewErrorWithError(err, "apimanagement.NotificationClient", "CreateOrUpdate", resp, "Failure sending request") 69 return 70 } 71 72 result, err = client.CreateOrUpdateResponder(resp) 73 if err != nil { 74 err = autorest.NewErrorWithError(err, "apimanagement.NotificationClient", "CreateOrUpdate", resp, "Failure responding to request") 75 return 76 } 77 78 return 79} 80 81// CreateOrUpdatePreparer prepares the CreateOrUpdate request. 82func (client NotificationClient) CreateOrUpdatePreparer(ctx context.Context, resourceGroupName string, serviceName string, notificationName NotificationName, ifMatch string) (*http.Request, error) { 83 pathParameters := map[string]interface{}{ 84 "notificationName": autorest.Encode("path", notificationName), 85 "resourceGroupName": autorest.Encode("path", resourceGroupName), 86 "serviceName": autorest.Encode("path", serviceName), 87 "subscriptionId": autorest.Encode("path", client.SubscriptionID), 88 } 89 90 const APIVersion = "2018-06-01-preview" 91 queryParameters := map[string]interface{}{ 92 "api-version": APIVersion, 93 } 94 95 preparer := autorest.CreatePreparer( 96 autorest.AsPut(), 97 autorest.WithBaseURL(client.BaseURI), 98 autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/notifications/{notificationName}", pathParameters), 99 autorest.WithQueryParameters(queryParameters)) 100 if len(ifMatch) > 0 { 101 preparer = autorest.DecoratePreparer(preparer, 102 autorest.WithHeader("If-Match", autorest.String(ifMatch))) 103 } 104 return preparer.Prepare((&http.Request{}).WithContext(ctx)) 105} 106 107// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the 108// http.Response Body if it receives an error. 109func (client NotificationClient) CreateOrUpdateSender(req *http.Request) (*http.Response, error) { 110 return client.Send(req, azure.DoRetryWithRegistration(client.Client)) 111} 112 113// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always 114// closes the http.Response Body. 115func (client NotificationClient) CreateOrUpdateResponder(resp *http.Response) (result NotificationContract, err error) { 116 err = autorest.Respond( 117 resp, 118 azure.WithErrorUnlessStatusCode(http.StatusOK), 119 autorest.ByUnmarshallingJSON(&result), 120 autorest.ByClosing()) 121 result.Response = autorest.Response{Response: resp} 122 return 123} 124 125// Get gets the details of the Notification specified by its identifier. 126// Parameters: 127// resourceGroupName - the name of the resource group. 128// serviceName - the name of the API Management service. 129// notificationName - notification Name Identifier. 130func (client NotificationClient) Get(ctx context.Context, resourceGroupName string, serviceName string, notificationName NotificationName) (result NotificationContract, err error) { 131 if tracing.IsEnabled() { 132 ctx = tracing.StartSpan(ctx, fqdn+"/NotificationClient.Get") 133 defer func() { 134 sc := -1 135 if result.Response.Response != nil { 136 sc = result.Response.Response.StatusCode 137 } 138 tracing.EndSpan(ctx, sc, err) 139 }() 140 } 141 if err := validation.Validate([]validation.Validation{ 142 {TargetValue: serviceName, 143 Constraints: []validation.Constraint{{Target: "serviceName", Name: validation.MaxLength, Rule: 50, Chain: nil}, 144 {Target: "serviceName", Name: validation.MinLength, Rule: 1, Chain: nil}, 145 {Target: "serviceName", Name: validation.Pattern, Rule: `^[a-zA-Z](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?$`, Chain: nil}}}}); err != nil { 146 return result, validation.NewError("apimanagement.NotificationClient", "Get", err.Error()) 147 } 148 149 req, err := client.GetPreparer(ctx, resourceGroupName, serviceName, notificationName) 150 if err != nil { 151 err = autorest.NewErrorWithError(err, "apimanagement.NotificationClient", "Get", nil, "Failure preparing request") 152 return 153 } 154 155 resp, err := client.GetSender(req) 156 if err != nil { 157 result.Response = autorest.Response{Response: resp} 158 err = autorest.NewErrorWithError(err, "apimanagement.NotificationClient", "Get", resp, "Failure sending request") 159 return 160 } 161 162 result, err = client.GetResponder(resp) 163 if err != nil { 164 err = autorest.NewErrorWithError(err, "apimanagement.NotificationClient", "Get", resp, "Failure responding to request") 165 return 166 } 167 168 return 169} 170 171// GetPreparer prepares the Get request. 172func (client NotificationClient) GetPreparer(ctx context.Context, resourceGroupName string, serviceName string, notificationName NotificationName) (*http.Request, error) { 173 pathParameters := map[string]interface{}{ 174 "notificationName": autorest.Encode("path", notificationName), 175 "resourceGroupName": autorest.Encode("path", resourceGroupName), 176 "serviceName": autorest.Encode("path", serviceName), 177 "subscriptionId": autorest.Encode("path", client.SubscriptionID), 178 } 179 180 const APIVersion = "2018-06-01-preview" 181 queryParameters := map[string]interface{}{ 182 "api-version": APIVersion, 183 } 184 185 preparer := autorest.CreatePreparer( 186 autorest.AsGet(), 187 autorest.WithBaseURL(client.BaseURI), 188 autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/notifications/{notificationName}", pathParameters), 189 autorest.WithQueryParameters(queryParameters)) 190 return preparer.Prepare((&http.Request{}).WithContext(ctx)) 191} 192 193// GetSender sends the Get request. The method will close the 194// http.Response Body if it receives an error. 195func (client NotificationClient) GetSender(req *http.Request) (*http.Response, error) { 196 return client.Send(req, azure.DoRetryWithRegistration(client.Client)) 197} 198 199// GetResponder handles the response to the Get request. The method always 200// closes the http.Response Body. 201func (client NotificationClient) GetResponder(resp *http.Response) (result NotificationContract, err error) { 202 err = autorest.Respond( 203 resp, 204 azure.WithErrorUnlessStatusCode(http.StatusOK), 205 autorest.ByUnmarshallingJSON(&result), 206 autorest.ByClosing()) 207 result.Response = autorest.Response{Response: resp} 208 return 209} 210 211// ListByService lists a collection of properties defined within a service instance. 212// Parameters: 213// resourceGroupName - the name of the resource group. 214// serviceName - the name of the API Management service. 215// top - number of records to return. 216// skip - number of records to skip. 217func (client NotificationClient) ListByService(ctx context.Context, resourceGroupName string, serviceName string, top *int32, skip *int32) (result NotificationCollectionPage, err error) { 218 if tracing.IsEnabled() { 219 ctx = tracing.StartSpan(ctx, fqdn+"/NotificationClient.ListByService") 220 defer func() { 221 sc := -1 222 if result.nc.Response.Response != nil { 223 sc = result.nc.Response.Response.StatusCode 224 } 225 tracing.EndSpan(ctx, sc, err) 226 }() 227 } 228 if err := validation.Validate([]validation.Validation{ 229 {TargetValue: serviceName, 230 Constraints: []validation.Constraint{{Target: "serviceName", Name: validation.MaxLength, Rule: 50, Chain: nil}, 231 {Target: "serviceName", Name: validation.MinLength, Rule: 1, Chain: nil}, 232 {Target: "serviceName", Name: validation.Pattern, Rule: `^[a-zA-Z](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?$`, Chain: nil}}}, 233 {TargetValue: top, 234 Constraints: []validation.Constraint{{Target: "top", Name: validation.Null, Rule: false, 235 Chain: []validation.Constraint{{Target: "top", Name: validation.InclusiveMinimum, Rule: int64(1), Chain: nil}}}}}, 236 {TargetValue: skip, 237 Constraints: []validation.Constraint{{Target: "skip", Name: validation.Null, Rule: false, 238 Chain: []validation.Constraint{{Target: "skip", Name: validation.InclusiveMinimum, Rule: int64(0), Chain: nil}}}}}}); err != nil { 239 return result, validation.NewError("apimanagement.NotificationClient", "ListByService", err.Error()) 240 } 241 242 result.fn = client.listByServiceNextResults 243 req, err := client.ListByServicePreparer(ctx, resourceGroupName, serviceName, top, skip) 244 if err != nil { 245 err = autorest.NewErrorWithError(err, "apimanagement.NotificationClient", "ListByService", nil, "Failure preparing request") 246 return 247 } 248 249 resp, err := client.ListByServiceSender(req) 250 if err != nil { 251 result.nc.Response = autorest.Response{Response: resp} 252 err = autorest.NewErrorWithError(err, "apimanagement.NotificationClient", "ListByService", resp, "Failure sending request") 253 return 254 } 255 256 result.nc, err = client.ListByServiceResponder(resp) 257 if err != nil { 258 err = autorest.NewErrorWithError(err, "apimanagement.NotificationClient", "ListByService", resp, "Failure responding to request") 259 return 260 } 261 if result.nc.hasNextLink() && result.nc.IsEmpty() { 262 err = result.NextWithContext(ctx) 263 return 264 } 265 266 return 267} 268 269// ListByServicePreparer prepares the ListByService request. 270func (client NotificationClient) ListByServicePreparer(ctx context.Context, resourceGroupName string, serviceName string, top *int32, skip *int32) (*http.Request, error) { 271 pathParameters := map[string]interface{}{ 272 "resourceGroupName": autorest.Encode("path", resourceGroupName), 273 "serviceName": autorest.Encode("path", serviceName), 274 "subscriptionId": autorest.Encode("path", client.SubscriptionID), 275 } 276 277 const APIVersion = "2018-06-01-preview" 278 queryParameters := map[string]interface{}{ 279 "api-version": APIVersion, 280 } 281 if top != nil { 282 queryParameters["$top"] = autorest.Encode("query", *top) 283 } 284 if skip != nil { 285 queryParameters["$skip"] = autorest.Encode("query", *skip) 286 } 287 288 preparer := autorest.CreatePreparer( 289 autorest.AsGet(), 290 autorest.WithBaseURL(client.BaseURI), 291 autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/notifications", pathParameters), 292 autorest.WithQueryParameters(queryParameters)) 293 return preparer.Prepare((&http.Request{}).WithContext(ctx)) 294} 295 296// ListByServiceSender sends the ListByService request. The method will close the 297// http.Response Body if it receives an error. 298func (client NotificationClient) ListByServiceSender(req *http.Request) (*http.Response, error) { 299 return client.Send(req, azure.DoRetryWithRegistration(client.Client)) 300} 301 302// ListByServiceResponder handles the response to the ListByService request. The method always 303// closes the http.Response Body. 304func (client NotificationClient) ListByServiceResponder(resp *http.Response) (result NotificationCollection, err error) { 305 err = autorest.Respond( 306 resp, 307 azure.WithErrorUnlessStatusCode(http.StatusOK), 308 autorest.ByUnmarshallingJSON(&result), 309 autorest.ByClosing()) 310 result.Response = autorest.Response{Response: resp} 311 return 312} 313 314// listByServiceNextResults retrieves the next set of results, if any. 315func (client NotificationClient) listByServiceNextResults(ctx context.Context, lastResults NotificationCollection) (result NotificationCollection, err error) { 316 req, err := lastResults.notificationCollectionPreparer(ctx) 317 if err != nil { 318 return result, autorest.NewErrorWithError(err, "apimanagement.NotificationClient", "listByServiceNextResults", nil, "Failure preparing next results request") 319 } 320 if req == nil { 321 return 322 } 323 resp, err := client.ListByServiceSender(req) 324 if err != nil { 325 result.Response = autorest.Response{Response: resp} 326 return result, autorest.NewErrorWithError(err, "apimanagement.NotificationClient", "listByServiceNextResults", resp, "Failure sending next results request") 327 } 328 result, err = client.ListByServiceResponder(resp) 329 if err != nil { 330 err = autorest.NewErrorWithError(err, "apimanagement.NotificationClient", "listByServiceNextResults", resp, "Failure responding to next results request") 331 } 332 return 333} 334 335// ListByServiceComplete enumerates all values, automatically crossing page boundaries as required. 336func (client NotificationClient) ListByServiceComplete(ctx context.Context, resourceGroupName string, serviceName string, top *int32, skip *int32) (result NotificationCollectionIterator, err error) { 337 if tracing.IsEnabled() { 338 ctx = tracing.StartSpan(ctx, fqdn+"/NotificationClient.ListByService") 339 defer func() { 340 sc := -1 341 if result.Response().Response.Response != nil { 342 sc = result.page.Response().Response.Response.StatusCode 343 } 344 tracing.EndSpan(ctx, sc, err) 345 }() 346 } 347 result.page, err = client.ListByService(ctx, resourceGroupName, serviceName, top, skip) 348 return 349} 350