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// UserClient is the client for the User methods of the Apimanagement service. 19type UserClient struct { 20 BaseClient 21} 22 23// NewUserClient creates an instance of the UserClient client. 24func NewUserClient() UserClient { 25 return UserClient{New()} 26} 27 28// CreateOrUpdate creates or Updates a user. 29// Parameters: 30// apimBaseURL - the management endpoint of the API Management service, for example 31// https://myapimservice.management.azure-api.net. 32// UID - user identifier. Must be unique in the current API Management service instance. 33// parameters - create or update parameters. 34func (client UserClient) CreateOrUpdate(ctx context.Context, apimBaseURL string, UID string, parameters UserCreateParameters) (result UserContract, err error) { 35 if tracing.IsEnabled() { 36 ctx = tracing.StartSpan(ctx, fqdn+"/UserClient.CreateOrUpdate") 37 defer func() { 38 sc := -1 39 if result.Response.Response != nil { 40 sc = result.Response.Response.StatusCode 41 } 42 tracing.EndSpan(ctx, sc, err) 43 }() 44 } 45 if err := validation.Validate([]validation.Validation{ 46 {TargetValue: UID, 47 Constraints: []validation.Constraint{{Target: "UID", Name: validation.MaxLength, Rule: 256, Chain: nil}, 48 {Target: "UID", Name: validation.MinLength, Rule: 1, Chain: nil}, 49 {Target: "UID", Name: validation.Pattern, Rule: `^[^*#&+:<>?]+$`, Chain: nil}}}, 50 {TargetValue: parameters, 51 Constraints: []validation.Constraint{{Target: "parameters.Email", Name: validation.Null, Rule: true, 52 Chain: []validation.Constraint{{Target: "parameters.Email", Name: validation.MaxLength, Rule: 254, Chain: nil}, 53 {Target: "parameters.Email", Name: validation.MinLength, Rule: 1, Chain: nil}, 54 }}, 55 {Target: "parameters.FirstName", Name: validation.Null, Rule: true, 56 Chain: []validation.Constraint{{Target: "parameters.FirstName", Name: validation.MaxLength, Rule: 100, Chain: nil}, 57 {Target: "parameters.FirstName", Name: validation.MinLength, Rule: 1, Chain: nil}, 58 }}, 59 {Target: "parameters.LastName", Name: validation.Null, Rule: true, 60 Chain: []validation.Constraint{{Target: "parameters.LastName", Name: validation.MaxLength, Rule: 100, Chain: nil}, 61 {Target: "parameters.LastName", Name: validation.MinLength, Rule: 1, Chain: nil}, 62 }}}}}); err != nil { 63 return result, validation.NewError("apimanagement.UserClient", "CreateOrUpdate", err.Error()) 64 } 65 66 req, err := client.CreateOrUpdatePreparer(ctx, apimBaseURL, UID, parameters) 67 if err != nil { 68 err = autorest.NewErrorWithError(err, "apimanagement.UserClient", "CreateOrUpdate", nil, "Failure preparing request") 69 return 70 } 71 72 resp, err := client.CreateOrUpdateSender(req) 73 if err != nil { 74 result.Response = autorest.Response{Response: resp} 75 err = autorest.NewErrorWithError(err, "apimanagement.UserClient", "CreateOrUpdate", resp, "Failure sending request") 76 return 77 } 78 79 result, err = client.CreateOrUpdateResponder(resp) 80 if err != nil { 81 err = autorest.NewErrorWithError(err, "apimanagement.UserClient", "CreateOrUpdate", resp, "Failure responding to request") 82 return 83 } 84 85 return 86} 87 88// CreateOrUpdatePreparer prepares the CreateOrUpdate request. 89func (client UserClient) CreateOrUpdatePreparer(ctx context.Context, apimBaseURL string, UID string, parameters UserCreateParameters) (*http.Request, error) { 90 urlParameters := map[string]interface{}{ 91 "apimBaseUrl": apimBaseURL, 92 } 93 94 pathParameters := map[string]interface{}{ 95 "uid": autorest.Encode("path", UID), 96 } 97 98 const APIVersion = "2017-03-01" 99 queryParameters := map[string]interface{}{ 100 "api-version": APIVersion, 101 } 102 103 preparer := autorest.CreatePreparer( 104 autorest.AsContentType("application/json; charset=utf-8"), 105 autorest.AsPut(), 106 autorest.WithCustomBaseURL("{apimBaseUrl}", urlParameters), 107 autorest.WithPathParameters("/users/{uid}", pathParameters), 108 autorest.WithJSON(parameters), 109 autorest.WithQueryParameters(queryParameters)) 110 return preparer.Prepare((&http.Request{}).WithContext(ctx)) 111} 112 113// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the 114// http.Response Body if it receives an error. 115func (client UserClient) CreateOrUpdateSender(req *http.Request) (*http.Response, error) { 116 return client.Send(req, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) 117} 118 119// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always 120// closes the http.Response Body. 121func (client UserClient) CreateOrUpdateResponder(resp *http.Response) (result UserContract, err error) { 122 err = autorest.Respond( 123 resp, 124 azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated), 125 autorest.ByUnmarshallingJSON(&result), 126 autorest.ByClosing()) 127 result.Response = autorest.Response{Response: resp} 128 return 129} 130 131// Delete deletes specific user. 132// Parameters: 133// apimBaseURL - the management endpoint of the API Management service, for example 134// https://myapimservice.management.azure-api.net. 135// UID - user identifier. Must be unique in the current API Management service instance. 136// ifMatch - the entity state (Etag) version of the user to delete. A value of "*" can be used for If-Match to 137// unconditionally apply the operation. 138// deleteSubscriptions - whether to delete user's subscription or not. 139// notify - send an Account Closed Email notification to the User. 140func (client UserClient) Delete(ctx context.Context, apimBaseURL string, UID string, ifMatch string, deleteSubscriptions string, notify string) (result autorest.Response, err error) { 141 if tracing.IsEnabled() { 142 ctx = tracing.StartSpan(ctx, fqdn+"/UserClient.Delete") 143 defer func() { 144 sc := -1 145 if result.Response != nil { 146 sc = result.Response.StatusCode 147 } 148 tracing.EndSpan(ctx, sc, err) 149 }() 150 } 151 if err := validation.Validate([]validation.Validation{ 152 {TargetValue: UID, 153 Constraints: []validation.Constraint{{Target: "UID", Name: validation.MaxLength, Rule: 256, Chain: nil}, 154 {Target: "UID", Name: validation.MinLength, Rule: 1, Chain: nil}, 155 {Target: "UID", Name: validation.Pattern, Rule: `^[^*#&+:<>?]+$`, Chain: nil}}}}); err != nil { 156 return result, validation.NewError("apimanagement.UserClient", "Delete", err.Error()) 157 } 158 159 req, err := client.DeletePreparer(ctx, apimBaseURL, UID, ifMatch, deleteSubscriptions, notify) 160 if err != nil { 161 err = autorest.NewErrorWithError(err, "apimanagement.UserClient", "Delete", nil, "Failure preparing request") 162 return 163 } 164 165 resp, err := client.DeleteSender(req) 166 if err != nil { 167 result.Response = resp 168 err = autorest.NewErrorWithError(err, "apimanagement.UserClient", "Delete", resp, "Failure sending request") 169 return 170 } 171 172 result, err = client.DeleteResponder(resp) 173 if err != nil { 174 err = autorest.NewErrorWithError(err, "apimanagement.UserClient", "Delete", resp, "Failure responding to request") 175 return 176 } 177 178 return 179} 180 181// DeletePreparer prepares the Delete request. 182func (client UserClient) DeletePreparer(ctx context.Context, apimBaseURL string, UID string, ifMatch string, deleteSubscriptions string, notify string) (*http.Request, error) { 183 urlParameters := map[string]interface{}{ 184 "apimBaseUrl": apimBaseURL, 185 } 186 187 pathParameters := map[string]interface{}{ 188 "uid": autorest.Encode("path", UID), 189 } 190 191 const APIVersion = "2017-03-01" 192 queryParameters := map[string]interface{}{ 193 "api-version": APIVersion, 194 } 195 if len(string(deleteSubscriptions)) > 0 { 196 queryParameters["deleteSubscriptions"] = autorest.Encode("query", deleteSubscriptions) 197 } else { 198 queryParameters["deleteSubscriptions"] = autorest.Encode("query", "False") 199 } 200 if len(string(notify)) > 0 { 201 queryParameters["notify"] = autorest.Encode("query", notify) 202 } else { 203 queryParameters["notify"] = autorest.Encode("query", "False") 204 } 205 206 preparer := autorest.CreatePreparer( 207 autorest.AsDelete(), 208 autorest.WithCustomBaseURL("{apimBaseUrl}", urlParameters), 209 autorest.WithPathParameters("/users/{uid}", pathParameters), 210 autorest.WithQueryParameters(queryParameters), 211 autorest.WithHeader("If-Match", autorest.String(ifMatch))) 212 return preparer.Prepare((&http.Request{}).WithContext(ctx)) 213} 214 215// DeleteSender sends the Delete request. The method will close the 216// http.Response Body if it receives an error. 217func (client UserClient) DeleteSender(req *http.Request) (*http.Response, error) { 218 return client.Send(req, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) 219} 220 221// DeleteResponder handles the response to the Delete request. The method always 222// closes the http.Response Body. 223func (client UserClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) { 224 err = autorest.Respond( 225 resp, 226 azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusNoContent), 227 autorest.ByClosing()) 228 result.Response = resp 229 return 230} 231 232// GenerateSsoURL retrieves a redirection URL containing an authentication token for signing a given user into the 233// developer portal. 234// Parameters: 235// apimBaseURL - the management endpoint of the API Management service, for example 236// https://myapimservice.management.azure-api.net. 237// UID - user identifier. Must be unique in the current API Management service instance. 238func (client UserClient) GenerateSsoURL(ctx context.Context, apimBaseURL string, UID string) (result GenerateSsoURLResult, err error) { 239 if tracing.IsEnabled() { 240 ctx = tracing.StartSpan(ctx, fqdn+"/UserClient.GenerateSsoURL") 241 defer func() { 242 sc := -1 243 if result.Response.Response != nil { 244 sc = result.Response.Response.StatusCode 245 } 246 tracing.EndSpan(ctx, sc, err) 247 }() 248 } 249 if err := validation.Validate([]validation.Validation{ 250 {TargetValue: UID, 251 Constraints: []validation.Constraint{{Target: "UID", Name: validation.MaxLength, Rule: 256, Chain: nil}, 252 {Target: "UID", Name: validation.MinLength, Rule: 1, Chain: nil}, 253 {Target: "UID", Name: validation.Pattern, Rule: `^[^*#&+:<>?]+$`, Chain: nil}}}}); err != nil { 254 return result, validation.NewError("apimanagement.UserClient", "GenerateSsoURL", err.Error()) 255 } 256 257 req, err := client.GenerateSsoURLPreparer(ctx, apimBaseURL, UID) 258 if err != nil { 259 err = autorest.NewErrorWithError(err, "apimanagement.UserClient", "GenerateSsoURL", nil, "Failure preparing request") 260 return 261 } 262 263 resp, err := client.GenerateSsoURLSender(req) 264 if err != nil { 265 result.Response = autorest.Response{Response: resp} 266 err = autorest.NewErrorWithError(err, "apimanagement.UserClient", "GenerateSsoURL", resp, "Failure sending request") 267 return 268 } 269 270 result, err = client.GenerateSsoURLResponder(resp) 271 if err != nil { 272 err = autorest.NewErrorWithError(err, "apimanagement.UserClient", "GenerateSsoURL", resp, "Failure responding to request") 273 return 274 } 275 276 return 277} 278 279// GenerateSsoURLPreparer prepares the GenerateSsoURL request. 280func (client UserClient) GenerateSsoURLPreparer(ctx context.Context, apimBaseURL string, UID string) (*http.Request, error) { 281 urlParameters := map[string]interface{}{ 282 "apimBaseUrl": apimBaseURL, 283 } 284 285 pathParameters := map[string]interface{}{ 286 "uid": autorest.Encode("path", UID), 287 } 288 289 const APIVersion = "2017-03-01" 290 queryParameters := map[string]interface{}{ 291 "api-version": APIVersion, 292 } 293 294 preparer := autorest.CreatePreparer( 295 autorest.AsPost(), 296 autorest.WithCustomBaseURL("{apimBaseUrl}", urlParameters), 297 autorest.WithPathParameters("/users/{uid}/generateSsoUrl", pathParameters), 298 autorest.WithQueryParameters(queryParameters)) 299 return preparer.Prepare((&http.Request{}).WithContext(ctx)) 300} 301 302// GenerateSsoURLSender sends the GenerateSsoURL request. The method will close the 303// http.Response Body if it receives an error. 304func (client UserClient) GenerateSsoURLSender(req *http.Request) (*http.Response, error) { 305 return client.Send(req, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) 306} 307 308// GenerateSsoURLResponder handles the response to the GenerateSsoURL request. The method always 309// closes the http.Response Body. 310func (client UserClient) GenerateSsoURLResponder(resp *http.Response) (result GenerateSsoURLResult, err error) { 311 err = autorest.Respond( 312 resp, 313 azure.WithErrorUnlessStatusCode(http.StatusOK), 314 autorest.ByUnmarshallingJSON(&result), 315 autorest.ByClosing()) 316 result.Response = autorest.Response{Response: resp} 317 return 318} 319 320// Get gets the details of the user specified by its identifier. 321// Parameters: 322// apimBaseURL - the management endpoint of the API Management service, for example 323// https://myapimservice.management.azure-api.net. 324// UID - user identifier. Must be unique in the current API Management service instance. 325func (client UserClient) Get(ctx context.Context, apimBaseURL string, UID string) (result UserContract, err error) { 326 if tracing.IsEnabled() { 327 ctx = tracing.StartSpan(ctx, fqdn+"/UserClient.Get") 328 defer func() { 329 sc := -1 330 if result.Response.Response != nil { 331 sc = result.Response.Response.StatusCode 332 } 333 tracing.EndSpan(ctx, sc, err) 334 }() 335 } 336 if err := validation.Validate([]validation.Validation{ 337 {TargetValue: UID, 338 Constraints: []validation.Constraint{{Target: "UID", Name: validation.MaxLength, Rule: 256, Chain: nil}, 339 {Target: "UID", Name: validation.MinLength, Rule: 1, Chain: nil}, 340 {Target: "UID", Name: validation.Pattern, Rule: `^[^*#&+:<>?]+$`, Chain: nil}}}}); err != nil { 341 return result, validation.NewError("apimanagement.UserClient", "Get", err.Error()) 342 } 343 344 req, err := client.GetPreparer(ctx, apimBaseURL, UID) 345 if err != nil { 346 err = autorest.NewErrorWithError(err, "apimanagement.UserClient", "Get", nil, "Failure preparing request") 347 return 348 } 349 350 resp, err := client.GetSender(req) 351 if err != nil { 352 result.Response = autorest.Response{Response: resp} 353 err = autorest.NewErrorWithError(err, "apimanagement.UserClient", "Get", resp, "Failure sending request") 354 return 355 } 356 357 result, err = client.GetResponder(resp) 358 if err != nil { 359 err = autorest.NewErrorWithError(err, "apimanagement.UserClient", "Get", resp, "Failure responding to request") 360 return 361 } 362 363 return 364} 365 366// GetPreparer prepares the Get request. 367func (client UserClient) GetPreparer(ctx context.Context, apimBaseURL string, UID string) (*http.Request, error) { 368 urlParameters := map[string]interface{}{ 369 "apimBaseUrl": apimBaseURL, 370 } 371 372 pathParameters := map[string]interface{}{ 373 "uid": autorest.Encode("path", UID), 374 } 375 376 const APIVersion = "2017-03-01" 377 queryParameters := map[string]interface{}{ 378 "api-version": APIVersion, 379 } 380 381 preparer := autorest.CreatePreparer( 382 autorest.AsGet(), 383 autorest.WithCustomBaseURL("{apimBaseUrl}", urlParameters), 384 autorest.WithPathParameters("/users/{uid}", pathParameters), 385 autorest.WithQueryParameters(queryParameters)) 386 return preparer.Prepare((&http.Request{}).WithContext(ctx)) 387} 388 389// GetSender sends the Get request. The method will close the 390// http.Response Body if it receives an error. 391func (client UserClient) GetSender(req *http.Request) (*http.Response, error) { 392 return client.Send(req, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) 393} 394 395// GetResponder handles the response to the Get request. The method always 396// closes the http.Response Body. 397func (client UserClient) GetResponder(resp *http.Response) (result UserContract, err error) { 398 err = autorest.Respond( 399 resp, 400 azure.WithErrorUnlessStatusCode(http.StatusOK), 401 autorest.ByUnmarshallingJSON(&result), 402 autorest.ByClosing()) 403 result.Response = autorest.Response{Response: resp} 404 return 405} 406 407// GetSharedAccessToken gets the Shared Access Authorization Token for the User. 408// Parameters: 409// apimBaseURL - the management endpoint of the API Management service, for example 410// https://myapimservice.management.azure-api.net. 411// UID - user identifier. Must be unique in the current API Management service instance. 412// parameters - create Authorization Token parameters. 413func (client UserClient) GetSharedAccessToken(ctx context.Context, apimBaseURL string, UID string, parameters UserTokenParameters) (result UserTokenResult, err error) { 414 if tracing.IsEnabled() { 415 ctx = tracing.StartSpan(ctx, fqdn+"/UserClient.GetSharedAccessToken") 416 defer func() { 417 sc := -1 418 if result.Response.Response != nil { 419 sc = result.Response.Response.StatusCode 420 } 421 tracing.EndSpan(ctx, sc, err) 422 }() 423 } 424 if err := validation.Validate([]validation.Validation{ 425 {TargetValue: UID, 426 Constraints: []validation.Constraint{{Target: "UID", Name: validation.MaxLength, Rule: 256, Chain: nil}, 427 {Target: "UID", Name: validation.MinLength, Rule: 1, Chain: nil}, 428 {Target: "UID", Name: validation.Pattern, Rule: `^[^*#&+:<>?]+$`, Chain: nil}}}, 429 {TargetValue: parameters, 430 Constraints: []validation.Constraint{{Target: "parameters.Expiry", Name: validation.Null, Rule: true, Chain: nil}}}}); err != nil { 431 return result, validation.NewError("apimanagement.UserClient", "GetSharedAccessToken", err.Error()) 432 } 433 434 req, err := client.GetSharedAccessTokenPreparer(ctx, apimBaseURL, UID, parameters) 435 if err != nil { 436 err = autorest.NewErrorWithError(err, "apimanagement.UserClient", "GetSharedAccessToken", nil, "Failure preparing request") 437 return 438 } 439 440 resp, err := client.GetSharedAccessTokenSender(req) 441 if err != nil { 442 result.Response = autorest.Response{Response: resp} 443 err = autorest.NewErrorWithError(err, "apimanagement.UserClient", "GetSharedAccessToken", resp, "Failure sending request") 444 return 445 } 446 447 result, err = client.GetSharedAccessTokenResponder(resp) 448 if err != nil { 449 err = autorest.NewErrorWithError(err, "apimanagement.UserClient", "GetSharedAccessToken", resp, "Failure responding to request") 450 return 451 } 452 453 return 454} 455 456// GetSharedAccessTokenPreparer prepares the GetSharedAccessToken request. 457func (client UserClient) GetSharedAccessTokenPreparer(ctx context.Context, apimBaseURL string, UID string, parameters UserTokenParameters) (*http.Request, error) { 458 urlParameters := map[string]interface{}{ 459 "apimBaseUrl": apimBaseURL, 460 } 461 462 pathParameters := map[string]interface{}{ 463 "uid": autorest.Encode("path", UID), 464 } 465 466 const APIVersion = "2017-03-01" 467 queryParameters := map[string]interface{}{ 468 "api-version": APIVersion, 469 } 470 471 preparer := autorest.CreatePreparer( 472 autorest.AsContentType("application/json; charset=utf-8"), 473 autorest.AsPost(), 474 autorest.WithCustomBaseURL("{apimBaseUrl}", urlParameters), 475 autorest.WithPathParameters("/users/{uid}/token", pathParameters), 476 autorest.WithJSON(parameters), 477 autorest.WithQueryParameters(queryParameters)) 478 return preparer.Prepare((&http.Request{}).WithContext(ctx)) 479} 480 481// GetSharedAccessTokenSender sends the GetSharedAccessToken request. The method will close the 482// http.Response Body if it receives an error. 483func (client UserClient) GetSharedAccessTokenSender(req *http.Request) (*http.Response, error) { 484 return client.Send(req, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) 485} 486 487// GetSharedAccessTokenResponder handles the response to the GetSharedAccessToken request. The method always 488// closes the http.Response Body. 489func (client UserClient) GetSharedAccessTokenResponder(resp *http.Response) (result UserTokenResult, err error) { 490 err = autorest.Respond( 491 resp, 492 azure.WithErrorUnlessStatusCode(http.StatusOK), 493 autorest.ByUnmarshallingJSON(&result), 494 autorest.ByClosing()) 495 result.Response = autorest.Response{Response: resp} 496 return 497} 498 499// List lists a collection of registered users in the specified service instance. 500// Parameters: 501// apimBaseURL - the management endpoint of the API Management service, for example 502// https://myapimservice.management.azure-api.net. 503// filter - | Field | Supported operators | Supported functions | 504// |------------------|------------------------|-----------------------------------| 505// | id | ge, le, eq, ne, gt, lt | substringof, contains, startswith, endswith | 506// | firstName | ge, le, eq, ne, gt, lt | substringof, contains, startswith, endswith | 507// | lastName | ge, le, eq, ne, gt, lt | substringof, contains, startswith, endswith | 508// | email | ge, le, eq, ne, gt, lt | substringof, contains, startswith, endswith | 509// | state | eq | N/A | 510// | registrationDate | ge, le, eq, ne, gt, lt | N/A | 511// | note | ge, le, eq, ne, gt, lt | substringof, contains, startswith, endswith | 512// top - number of records to return. 513// skip - number of records to skip. 514func (client UserClient) List(ctx context.Context, apimBaseURL string, filter string, top *int32, skip *int32) (result UserCollectionPage, err error) { 515 if tracing.IsEnabled() { 516 ctx = tracing.StartSpan(ctx, fqdn+"/UserClient.List") 517 defer func() { 518 sc := -1 519 if result.uc.Response.Response != nil { 520 sc = result.uc.Response.Response.StatusCode 521 } 522 tracing.EndSpan(ctx, sc, err) 523 }() 524 } 525 if err := validation.Validate([]validation.Validation{ 526 {TargetValue: top, 527 Constraints: []validation.Constraint{{Target: "top", Name: validation.Null, Rule: false, 528 Chain: []validation.Constraint{{Target: "top", Name: validation.InclusiveMinimum, Rule: int64(1), Chain: nil}}}}}, 529 {TargetValue: skip, 530 Constraints: []validation.Constraint{{Target: "skip", Name: validation.Null, Rule: false, 531 Chain: []validation.Constraint{{Target: "skip", Name: validation.InclusiveMinimum, Rule: int64(0), Chain: nil}}}}}}); err != nil { 532 return result, validation.NewError("apimanagement.UserClient", "List", err.Error()) 533 } 534 535 result.fn = client.listNextResults 536 req, err := client.ListPreparer(ctx, apimBaseURL, filter, top, skip) 537 if err != nil { 538 err = autorest.NewErrorWithError(err, "apimanagement.UserClient", "List", nil, "Failure preparing request") 539 return 540 } 541 542 resp, err := client.ListSender(req) 543 if err != nil { 544 result.uc.Response = autorest.Response{Response: resp} 545 err = autorest.NewErrorWithError(err, "apimanagement.UserClient", "List", resp, "Failure sending request") 546 return 547 } 548 549 result.uc, err = client.ListResponder(resp) 550 if err != nil { 551 err = autorest.NewErrorWithError(err, "apimanagement.UserClient", "List", resp, "Failure responding to request") 552 return 553 } 554 if result.uc.hasNextLink() && result.uc.IsEmpty() { 555 err = result.NextWithContext(ctx) 556 return 557 } 558 559 return 560} 561 562// ListPreparer prepares the List request. 563func (client UserClient) ListPreparer(ctx context.Context, apimBaseURL string, filter string, top *int32, skip *int32) (*http.Request, error) { 564 urlParameters := map[string]interface{}{ 565 "apimBaseUrl": apimBaseURL, 566 } 567 568 const APIVersion = "2017-03-01" 569 queryParameters := map[string]interface{}{ 570 "api-version": APIVersion, 571 } 572 if len(filter) > 0 { 573 queryParameters["$filter"] = autorest.Encode("query", filter) 574 } 575 if top != nil { 576 queryParameters["$top"] = autorest.Encode("query", *top) 577 } 578 if skip != nil { 579 queryParameters["$skip"] = autorest.Encode("query", *skip) 580 } 581 582 preparer := autorest.CreatePreparer( 583 autorest.AsGet(), 584 autorest.WithCustomBaseURL("{apimBaseUrl}", urlParameters), 585 autorest.WithPath("/users"), 586 autorest.WithQueryParameters(queryParameters)) 587 return preparer.Prepare((&http.Request{}).WithContext(ctx)) 588} 589 590// ListSender sends the List request. The method will close the 591// http.Response Body if it receives an error. 592func (client UserClient) ListSender(req *http.Request) (*http.Response, error) { 593 return client.Send(req, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) 594} 595 596// ListResponder handles the response to the List request. The method always 597// closes the http.Response Body. 598func (client UserClient) ListResponder(resp *http.Response) (result UserCollection, err error) { 599 err = autorest.Respond( 600 resp, 601 azure.WithErrorUnlessStatusCode(http.StatusOK), 602 autorest.ByUnmarshallingJSON(&result), 603 autorest.ByClosing()) 604 result.Response = autorest.Response{Response: resp} 605 return 606} 607 608// listNextResults retrieves the next set of results, if any. 609func (client UserClient) listNextResults(ctx context.Context, lastResults UserCollection) (result UserCollection, err error) { 610 req, err := lastResults.userCollectionPreparer(ctx) 611 if err != nil { 612 return result, autorest.NewErrorWithError(err, "apimanagement.UserClient", "listNextResults", nil, "Failure preparing next results request") 613 } 614 if req == nil { 615 return 616 } 617 resp, err := client.ListSender(req) 618 if err != nil { 619 result.Response = autorest.Response{Response: resp} 620 return result, autorest.NewErrorWithError(err, "apimanagement.UserClient", "listNextResults", resp, "Failure sending next results request") 621 } 622 result, err = client.ListResponder(resp) 623 if err != nil { 624 err = autorest.NewErrorWithError(err, "apimanagement.UserClient", "listNextResults", resp, "Failure responding to next results request") 625 } 626 return 627} 628 629// ListComplete enumerates all values, automatically crossing page boundaries as required. 630func (client UserClient) ListComplete(ctx context.Context, apimBaseURL string, filter string, top *int32, skip *int32) (result UserCollectionIterator, err error) { 631 if tracing.IsEnabled() { 632 ctx = tracing.StartSpan(ctx, fqdn+"/UserClient.List") 633 defer func() { 634 sc := -1 635 if result.Response().Response.Response != nil { 636 sc = result.page.Response().Response.Response.StatusCode 637 } 638 tracing.EndSpan(ctx, sc, err) 639 }() 640 } 641 result.page, err = client.List(ctx, apimBaseURL, filter, top, skip) 642 return 643} 644 645// Update updates the details of the user specified by its identifier. 646// Parameters: 647// apimBaseURL - the management endpoint of the API Management service, for example 648// https://myapimservice.management.azure-api.net. 649// UID - user identifier. Must be unique in the current API Management service instance. 650// parameters - update parameters. 651// ifMatch - the entity state (Etag) version of the user to update. A value of "*" can be used for If-Match to 652// unconditionally apply the operation. 653func (client UserClient) Update(ctx context.Context, apimBaseURL string, UID string, parameters UserUpdateParameters, ifMatch string) (result autorest.Response, err error) { 654 if tracing.IsEnabled() { 655 ctx = tracing.StartSpan(ctx, fqdn+"/UserClient.Update") 656 defer func() { 657 sc := -1 658 if result.Response != nil { 659 sc = result.Response.StatusCode 660 } 661 tracing.EndSpan(ctx, sc, err) 662 }() 663 } 664 if err := validation.Validate([]validation.Validation{ 665 {TargetValue: UID, 666 Constraints: []validation.Constraint{{Target: "UID", Name: validation.MaxLength, Rule: 256, Chain: nil}, 667 {Target: "UID", Name: validation.MinLength, Rule: 1, Chain: nil}, 668 {Target: "UID", Name: validation.Pattern, Rule: `^[^*#&+:<>?]+$`, Chain: nil}}}}); err != nil { 669 return result, validation.NewError("apimanagement.UserClient", "Update", err.Error()) 670 } 671 672 req, err := client.UpdatePreparer(ctx, apimBaseURL, UID, parameters, ifMatch) 673 if err != nil { 674 err = autorest.NewErrorWithError(err, "apimanagement.UserClient", "Update", nil, "Failure preparing request") 675 return 676 } 677 678 resp, err := client.UpdateSender(req) 679 if err != nil { 680 result.Response = resp 681 err = autorest.NewErrorWithError(err, "apimanagement.UserClient", "Update", resp, "Failure sending request") 682 return 683 } 684 685 result, err = client.UpdateResponder(resp) 686 if err != nil { 687 err = autorest.NewErrorWithError(err, "apimanagement.UserClient", "Update", resp, "Failure responding to request") 688 return 689 } 690 691 return 692} 693 694// UpdatePreparer prepares the Update request. 695func (client UserClient) UpdatePreparer(ctx context.Context, apimBaseURL string, UID string, parameters UserUpdateParameters, ifMatch string) (*http.Request, error) { 696 urlParameters := map[string]interface{}{ 697 "apimBaseUrl": apimBaseURL, 698 } 699 700 pathParameters := map[string]interface{}{ 701 "uid": autorest.Encode("path", UID), 702 } 703 704 const APIVersion = "2017-03-01" 705 queryParameters := map[string]interface{}{ 706 "api-version": APIVersion, 707 } 708 709 preparer := autorest.CreatePreparer( 710 autorest.AsContentType("application/json; charset=utf-8"), 711 autorest.AsPatch(), 712 autorest.WithCustomBaseURL("{apimBaseUrl}", urlParameters), 713 autorest.WithPathParameters("/users/{uid}", pathParameters), 714 autorest.WithJSON(parameters), 715 autorest.WithQueryParameters(queryParameters), 716 autorest.WithHeader("If-Match", autorest.String(ifMatch))) 717 return preparer.Prepare((&http.Request{}).WithContext(ctx)) 718} 719 720// UpdateSender sends the Update request. The method will close the 721// http.Response Body if it receives an error. 722func (client UserClient) UpdateSender(req *http.Request) (*http.Response, error) { 723 return client.Send(req, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) 724} 725 726// UpdateResponder handles the response to the Update request. The method always 727// closes the http.Response Body. 728func (client UserClient) UpdateResponder(resp *http.Response) (result autorest.Response, err error) { 729 err = autorest.Respond( 730 resp, 731 azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusNoContent), 732 autorest.ByClosing()) 733 result.Response = resp 734 return 735} 736