1// +build go1.13 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// Code generated by Microsoft (R) AutoRest Code Generator. 6// Changes may cause incorrect behavior and will be lost if the code is regenerated. 7 8package armapimanagement 9 10import ( 11 "context" 12 "errors" 13 "fmt" 14 "github.com/Azure/azure-sdk-for-go/sdk/armcore" 15 "github.com/Azure/azure-sdk-for-go/sdk/azcore" 16 "net/http" 17 "net/url" 18 "strconv" 19 "strings" 20) 21 22// APIReleaseClient contains the methods for the APIRelease group. 23// Don't use this type directly, use NewAPIReleaseClient() instead. 24type APIReleaseClient struct { 25 con *armcore.Connection 26 subscriptionID string 27} 28 29// NewAPIReleaseClient creates a new instance of APIReleaseClient with the specified values. 30func NewAPIReleaseClient(con *armcore.Connection, subscriptionID string) *APIReleaseClient { 31 return &APIReleaseClient{con: con, subscriptionID: subscriptionID} 32} 33 34// CreateOrUpdate - Creates a new Release for the API. 35// If the operation fails it returns the *ErrorResponse error type. 36func (client *APIReleaseClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, serviceName string, apiID string, releaseID string, parameters APIReleaseContract, options *APIReleaseCreateOrUpdateOptions) (APIReleaseCreateOrUpdateResponse, error) { 37 req, err := client.createOrUpdateCreateRequest(ctx, resourceGroupName, serviceName, apiID, releaseID, parameters, options) 38 if err != nil { 39 return APIReleaseCreateOrUpdateResponse{}, err 40 } 41 resp, err := client.con.Pipeline().Do(req) 42 if err != nil { 43 return APIReleaseCreateOrUpdateResponse{}, err 44 } 45 if !resp.HasStatusCode(http.StatusOK, http.StatusCreated) { 46 return APIReleaseCreateOrUpdateResponse{}, client.createOrUpdateHandleError(resp) 47 } 48 return client.createOrUpdateHandleResponse(resp) 49} 50 51// createOrUpdateCreateRequest creates the CreateOrUpdate request. 52func (client *APIReleaseClient) createOrUpdateCreateRequest(ctx context.Context, resourceGroupName string, serviceName string, apiID string, releaseID string, parameters APIReleaseContract, options *APIReleaseCreateOrUpdateOptions) (*azcore.Request, error) { 53 urlPath := "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis/{apiId}/releases/{releaseId}" 54 if resourceGroupName == "" { 55 return nil, errors.New("parameter resourceGroupName cannot be empty") 56 } 57 urlPath = strings.ReplaceAll(urlPath, "{resourceGroupName}", url.PathEscape(resourceGroupName)) 58 if serviceName == "" { 59 return nil, errors.New("parameter serviceName cannot be empty") 60 } 61 urlPath = strings.ReplaceAll(urlPath, "{serviceName}", url.PathEscape(serviceName)) 62 if apiID == "" { 63 return nil, errors.New("parameter apiID cannot be empty") 64 } 65 urlPath = strings.ReplaceAll(urlPath, "{apiId}", url.PathEscape(apiID)) 66 if releaseID == "" { 67 return nil, errors.New("parameter releaseID cannot be empty") 68 } 69 urlPath = strings.ReplaceAll(urlPath, "{releaseId}", url.PathEscape(releaseID)) 70 if client.subscriptionID == "" { 71 return nil, errors.New("parameter client.subscriptionID cannot be empty") 72 } 73 urlPath = strings.ReplaceAll(urlPath, "{subscriptionId}", url.PathEscape(client.subscriptionID)) 74 req, err := azcore.NewRequest(ctx, http.MethodPut, azcore.JoinPaths(client.con.Endpoint(), urlPath)) 75 if err != nil { 76 return nil, err 77 } 78 req.Telemetry(telemetryInfo) 79 reqQP := req.URL.Query() 80 reqQP.Set("api-version", "2020-12-01") 81 req.URL.RawQuery = reqQP.Encode() 82 if options != nil && options.IfMatch != nil { 83 req.Header.Set("If-Match", *options.IfMatch) 84 } 85 req.Header.Set("Accept", "application/json") 86 return req, req.MarshalAsJSON(parameters) 87} 88 89// createOrUpdateHandleResponse handles the CreateOrUpdate response. 90func (client *APIReleaseClient) createOrUpdateHandleResponse(resp *azcore.Response) (APIReleaseCreateOrUpdateResponse, error) { 91 result := APIReleaseCreateOrUpdateResponse{RawResponse: resp.Response} 92 if val := resp.Header.Get("ETag"); val != "" { 93 result.ETag = &val 94 } 95 if err := resp.UnmarshalAsJSON(&result.APIReleaseContract); err != nil { 96 return APIReleaseCreateOrUpdateResponse{}, err 97 } 98 return result, nil 99} 100 101// createOrUpdateHandleError handles the CreateOrUpdate error response. 102func (client *APIReleaseClient) createOrUpdateHandleError(resp *azcore.Response) error { 103 body, err := resp.Payload() 104 if err != nil { 105 return azcore.NewResponseError(err, resp.Response) 106 } 107 errType := ErrorResponse{raw: string(body)} 108 if err := resp.UnmarshalAsJSON(&errType.InnerError); err != nil { 109 return azcore.NewResponseError(fmt.Errorf("%s\n%s", string(body), err), resp.Response) 110 } 111 return azcore.NewResponseError(&errType, resp.Response) 112} 113 114// Delete - Deletes the specified release in the API. 115// If the operation fails it returns the *ErrorResponse error type. 116func (client *APIReleaseClient) Delete(ctx context.Context, resourceGroupName string, serviceName string, apiID string, releaseID string, ifMatch string, options *APIReleaseDeleteOptions) (APIReleaseDeleteResponse, error) { 117 req, err := client.deleteCreateRequest(ctx, resourceGroupName, serviceName, apiID, releaseID, ifMatch, options) 118 if err != nil { 119 return APIReleaseDeleteResponse{}, err 120 } 121 resp, err := client.con.Pipeline().Do(req) 122 if err != nil { 123 return APIReleaseDeleteResponse{}, err 124 } 125 if !resp.HasStatusCode(http.StatusOK, http.StatusNoContent) { 126 return APIReleaseDeleteResponse{}, client.deleteHandleError(resp) 127 } 128 return APIReleaseDeleteResponse{RawResponse: resp.Response}, nil 129} 130 131// deleteCreateRequest creates the Delete request. 132func (client *APIReleaseClient) deleteCreateRequest(ctx context.Context, resourceGroupName string, serviceName string, apiID string, releaseID string, ifMatch string, options *APIReleaseDeleteOptions) (*azcore.Request, error) { 133 urlPath := "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis/{apiId}/releases/{releaseId}" 134 if resourceGroupName == "" { 135 return nil, errors.New("parameter resourceGroupName cannot be empty") 136 } 137 urlPath = strings.ReplaceAll(urlPath, "{resourceGroupName}", url.PathEscape(resourceGroupName)) 138 if serviceName == "" { 139 return nil, errors.New("parameter serviceName cannot be empty") 140 } 141 urlPath = strings.ReplaceAll(urlPath, "{serviceName}", url.PathEscape(serviceName)) 142 if apiID == "" { 143 return nil, errors.New("parameter apiID cannot be empty") 144 } 145 urlPath = strings.ReplaceAll(urlPath, "{apiId}", url.PathEscape(apiID)) 146 if releaseID == "" { 147 return nil, errors.New("parameter releaseID cannot be empty") 148 } 149 urlPath = strings.ReplaceAll(urlPath, "{releaseId}", url.PathEscape(releaseID)) 150 if client.subscriptionID == "" { 151 return nil, errors.New("parameter client.subscriptionID cannot be empty") 152 } 153 urlPath = strings.ReplaceAll(urlPath, "{subscriptionId}", url.PathEscape(client.subscriptionID)) 154 req, err := azcore.NewRequest(ctx, http.MethodDelete, azcore.JoinPaths(client.con.Endpoint(), urlPath)) 155 if err != nil { 156 return nil, err 157 } 158 req.Telemetry(telemetryInfo) 159 reqQP := req.URL.Query() 160 reqQP.Set("api-version", "2020-12-01") 161 req.URL.RawQuery = reqQP.Encode() 162 req.Header.Set("If-Match", ifMatch) 163 req.Header.Set("Accept", "application/json") 164 return req, nil 165} 166 167// deleteHandleError handles the Delete error response. 168func (client *APIReleaseClient) deleteHandleError(resp *azcore.Response) error { 169 body, err := resp.Payload() 170 if err != nil { 171 return azcore.NewResponseError(err, resp.Response) 172 } 173 errType := ErrorResponse{raw: string(body)} 174 if err := resp.UnmarshalAsJSON(&errType.InnerError); err != nil { 175 return azcore.NewResponseError(fmt.Errorf("%s\n%s", string(body), err), resp.Response) 176 } 177 return azcore.NewResponseError(&errType, resp.Response) 178} 179 180// Get - Returns the details of an API release. 181// If the operation fails it returns the *ErrorResponse error type. 182func (client *APIReleaseClient) Get(ctx context.Context, resourceGroupName string, serviceName string, apiID string, releaseID string, options *APIReleaseGetOptions) (APIReleaseGetResponse, error) { 183 req, err := client.getCreateRequest(ctx, resourceGroupName, serviceName, apiID, releaseID, options) 184 if err != nil { 185 return APIReleaseGetResponse{}, err 186 } 187 resp, err := client.con.Pipeline().Do(req) 188 if err != nil { 189 return APIReleaseGetResponse{}, err 190 } 191 if !resp.HasStatusCode(http.StatusOK) { 192 return APIReleaseGetResponse{}, client.getHandleError(resp) 193 } 194 return client.getHandleResponse(resp) 195} 196 197// getCreateRequest creates the Get request. 198func (client *APIReleaseClient) getCreateRequest(ctx context.Context, resourceGroupName string, serviceName string, apiID string, releaseID string, options *APIReleaseGetOptions) (*azcore.Request, error) { 199 urlPath := "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis/{apiId}/releases/{releaseId}" 200 if resourceGroupName == "" { 201 return nil, errors.New("parameter resourceGroupName cannot be empty") 202 } 203 urlPath = strings.ReplaceAll(urlPath, "{resourceGroupName}", url.PathEscape(resourceGroupName)) 204 if serviceName == "" { 205 return nil, errors.New("parameter serviceName cannot be empty") 206 } 207 urlPath = strings.ReplaceAll(urlPath, "{serviceName}", url.PathEscape(serviceName)) 208 if apiID == "" { 209 return nil, errors.New("parameter apiID cannot be empty") 210 } 211 urlPath = strings.ReplaceAll(urlPath, "{apiId}", url.PathEscape(apiID)) 212 if releaseID == "" { 213 return nil, errors.New("parameter releaseID cannot be empty") 214 } 215 urlPath = strings.ReplaceAll(urlPath, "{releaseId}", url.PathEscape(releaseID)) 216 if client.subscriptionID == "" { 217 return nil, errors.New("parameter client.subscriptionID cannot be empty") 218 } 219 urlPath = strings.ReplaceAll(urlPath, "{subscriptionId}", url.PathEscape(client.subscriptionID)) 220 req, err := azcore.NewRequest(ctx, http.MethodGet, azcore.JoinPaths(client.con.Endpoint(), urlPath)) 221 if err != nil { 222 return nil, err 223 } 224 req.Telemetry(telemetryInfo) 225 reqQP := req.URL.Query() 226 reqQP.Set("api-version", "2020-12-01") 227 req.URL.RawQuery = reqQP.Encode() 228 req.Header.Set("Accept", "application/json") 229 return req, nil 230} 231 232// getHandleResponse handles the Get response. 233func (client *APIReleaseClient) getHandleResponse(resp *azcore.Response) (APIReleaseGetResponse, error) { 234 result := APIReleaseGetResponse{RawResponse: resp.Response} 235 if val := resp.Header.Get("ETag"); val != "" { 236 result.ETag = &val 237 } 238 if err := resp.UnmarshalAsJSON(&result.APIReleaseContract); err != nil { 239 return APIReleaseGetResponse{}, err 240 } 241 return result, nil 242} 243 244// getHandleError handles the Get error response. 245func (client *APIReleaseClient) getHandleError(resp *azcore.Response) error { 246 body, err := resp.Payload() 247 if err != nil { 248 return azcore.NewResponseError(err, resp.Response) 249 } 250 errType := ErrorResponse{raw: string(body)} 251 if err := resp.UnmarshalAsJSON(&errType.InnerError); err != nil { 252 return azcore.NewResponseError(fmt.Errorf("%s\n%s", string(body), err), resp.Response) 253 } 254 return azcore.NewResponseError(&errType, resp.Response) 255} 256 257// GetEntityTag - Returns the etag of an API release. 258// If the operation fails it returns the *ErrorResponse error type. 259func (client *APIReleaseClient) GetEntityTag(ctx context.Context, resourceGroupName string, serviceName string, apiID string, releaseID string, options *APIReleaseGetEntityTagOptions) (APIReleaseGetEntityTagResponse, error) { 260 req, err := client.getEntityTagCreateRequest(ctx, resourceGroupName, serviceName, apiID, releaseID, options) 261 if err != nil { 262 return APIReleaseGetEntityTagResponse{}, err 263 } 264 resp, err := client.con.Pipeline().Do(req) 265 if err != nil { 266 return APIReleaseGetEntityTagResponse{}, err 267 } 268 return client.getEntityTagHandleResponse(resp) 269} 270 271// getEntityTagCreateRequest creates the GetEntityTag request. 272func (client *APIReleaseClient) getEntityTagCreateRequest(ctx context.Context, resourceGroupName string, serviceName string, apiID string, releaseID string, options *APIReleaseGetEntityTagOptions) (*azcore.Request, error) { 273 urlPath := "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis/{apiId}/releases/{releaseId}" 274 if resourceGroupName == "" { 275 return nil, errors.New("parameter resourceGroupName cannot be empty") 276 } 277 urlPath = strings.ReplaceAll(urlPath, "{resourceGroupName}", url.PathEscape(resourceGroupName)) 278 if serviceName == "" { 279 return nil, errors.New("parameter serviceName cannot be empty") 280 } 281 urlPath = strings.ReplaceAll(urlPath, "{serviceName}", url.PathEscape(serviceName)) 282 if apiID == "" { 283 return nil, errors.New("parameter apiID cannot be empty") 284 } 285 urlPath = strings.ReplaceAll(urlPath, "{apiId}", url.PathEscape(apiID)) 286 if releaseID == "" { 287 return nil, errors.New("parameter releaseID cannot be empty") 288 } 289 urlPath = strings.ReplaceAll(urlPath, "{releaseId}", url.PathEscape(releaseID)) 290 if client.subscriptionID == "" { 291 return nil, errors.New("parameter client.subscriptionID cannot be empty") 292 } 293 urlPath = strings.ReplaceAll(urlPath, "{subscriptionId}", url.PathEscape(client.subscriptionID)) 294 req, err := azcore.NewRequest(ctx, http.MethodHead, azcore.JoinPaths(client.con.Endpoint(), urlPath)) 295 if err != nil { 296 return nil, err 297 } 298 req.Telemetry(telemetryInfo) 299 reqQP := req.URL.Query() 300 reqQP.Set("api-version", "2020-12-01") 301 req.URL.RawQuery = reqQP.Encode() 302 req.Header.Set("Accept", "application/json") 303 return req, nil 304} 305 306// getEntityTagHandleResponse handles the GetEntityTag response. 307func (client *APIReleaseClient) getEntityTagHandleResponse(resp *azcore.Response) (APIReleaseGetEntityTagResponse, error) { 308 result := APIReleaseGetEntityTagResponse{RawResponse: resp.Response} 309 if val := resp.Header.Get("ETag"); val != "" { 310 result.ETag = &val 311 } 312 if resp.StatusCode >= 200 && resp.StatusCode < 300 { 313 result.Success = true 314 } 315 return result, nil 316} 317 318// ListByService - Lists all releases of an API. An API release is created when making an API Revision current. Releases are also used to rollback to previous 319// revisions. Results will be paged and can be constrained by 320// the $top and $skip parameters. 321// If the operation fails it returns the *ErrorResponse error type. 322func (client *APIReleaseClient) ListByService(resourceGroupName string, serviceName string, apiID string, options *APIReleaseListByServiceOptions) APIReleaseListByServicePager { 323 return &apiReleaseListByServicePager{ 324 client: client, 325 requester: func(ctx context.Context) (*azcore.Request, error) { 326 return client.listByServiceCreateRequest(ctx, resourceGroupName, serviceName, apiID, options) 327 }, 328 advancer: func(ctx context.Context, resp APIReleaseListByServiceResponse) (*azcore.Request, error) { 329 return azcore.NewRequest(ctx, http.MethodGet, *resp.APIReleaseCollection.NextLink) 330 }, 331 } 332} 333 334// listByServiceCreateRequest creates the ListByService request. 335func (client *APIReleaseClient) listByServiceCreateRequest(ctx context.Context, resourceGroupName string, serviceName string, apiID string, options *APIReleaseListByServiceOptions) (*azcore.Request, error) { 336 urlPath := "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis/{apiId}/releases" 337 if resourceGroupName == "" { 338 return nil, errors.New("parameter resourceGroupName cannot be empty") 339 } 340 urlPath = strings.ReplaceAll(urlPath, "{resourceGroupName}", url.PathEscape(resourceGroupName)) 341 if serviceName == "" { 342 return nil, errors.New("parameter serviceName cannot be empty") 343 } 344 urlPath = strings.ReplaceAll(urlPath, "{serviceName}", url.PathEscape(serviceName)) 345 if apiID == "" { 346 return nil, errors.New("parameter apiID cannot be empty") 347 } 348 urlPath = strings.ReplaceAll(urlPath, "{apiId}", url.PathEscape(apiID)) 349 if client.subscriptionID == "" { 350 return nil, errors.New("parameter client.subscriptionID cannot be empty") 351 } 352 urlPath = strings.ReplaceAll(urlPath, "{subscriptionId}", url.PathEscape(client.subscriptionID)) 353 req, err := azcore.NewRequest(ctx, http.MethodGet, azcore.JoinPaths(client.con.Endpoint(), urlPath)) 354 if err != nil { 355 return nil, err 356 } 357 req.Telemetry(telemetryInfo) 358 reqQP := req.URL.Query() 359 if options != nil && options.Filter != nil { 360 reqQP.Set("$filter", *options.Filter) 361 } 362 if options != nil && options.Top != nil { 363 reqQP.Set("$top", strconv.FormatInt(int64(*options.Top), 10)) 364 } 365 if options != nil && options.Skip != nil { 366 reqQP.Set("$skip", strconv.FormatInt(int64(*options.Skip), 10)) 367 } 368 reqQP.Set("api-version", "2020-12-01") 369 req.URL.RawQuery = reqQP.Encode() 370 req.Header.Set("Accept", "application/json") 371 return req, nil 372} 373 374// listByServiceHandleResponse handles the ListByService response. 375func (client *APIReleaseClient) listByServiceHandleResponse(resp *azcore.Response) (APIReleaseListByServiceResponse, error) { 376 result := APIReleaseListByServiceResponse{RawResponse: resp.Response} 377 if err := resp.UnmarshalAsJSON(&result.APIReleaseCollection); err != nil { 378 return APIReleaseListByServiceResponse{}, err 379 } 380 return result, nil 381} 382 383// listByServiceHandleError handles the ListByService error response. 384func (client *APIReleaseClient) listByServiceHandleError(resp *azcore.Response) error { 385 body, err := resp.Payload() 386 if err != nil { 387 return azcore.NewResponseError(err, resp.Response) 388 } 389 errType := ErrorResponse{raw: string(body)} 390 if err := resp.UnmarshalAsJSON(&errType.InnerError); err != nil { 391 return azcore.NewResponseError(fmt.Errorf("%s\n%s", string(body), err), resp.Response) 392 } 393 return azcore.NewResponseError(&errType, resp.Response) 394} 395 396// Update - Updates the details of the release of the API specified by its identifier. 397// If the operation fails it returns the *ErrorResponse error type. 398func (client *APIReleaseClient) Update(ctx context.Context, resourceGroupName string, serviceName string, apiID string, releaseID string, ifMatch string, parameters APIReleaseContract, options *APIReleaseUpdateOptions) (APIReleaseUpdateResponse, error) { 399 req, err := client.updateCreateRequest(ctx, resourceGroupName, serviceName, apiID, releaseID, ifMatch, parameters, options) 400 if err != nil { 401 return APIReleaseUpdateResponse{}, err 402 } 403 resp, err := client.con.Pipeline().Do(req) 404 if err != nil { 405 return APIReleaseUpdateResponse{}, err 406 } 407 if !resp.HasStatusCode(http.StatusOK) { 408 return APIReleaseUpdateResponse{}, client.updateHandleError(resp) 409 } 410 return client.updateHandleResponse(resp) 411} 412 413// updateCreateRequest creates the Update request. 414func (client *APIReleaseClient) updateCreateRequest(ctx context.Context, resourceGroupName string, serviceName string, apiID string, releaseID string, ifMatch string, parameters APIReleaseContract, options *APIReleaseUpdateOptions) (*azcore.Request, error) { 415 urlPath := "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis/{apiId}/releases/{releaseId}" 416 if resourceGroupName == "" { 417 return nil, errors.New("parameter resourceGroupName cannot be empty") 418 } 419 urlPath = strings.ReplaceAll(urlPath, "{resourceGroupName}", url.PathEscape(resourceGroupName)) 420 if serviceName == "" { 421 return nil, errors.New("parameter serviceName cannot be empty") 422 } 423 urlPath = strings.ReplaceAll(urlPath, "{serviceName}", url.PathEscape(serviceName)) 424 if apiID == "" { 425 return nil, errors.New("parameter apiID cannot be empty") 426 } 427 urlPath = strings.ReplaceAll(urlPath, "{apiId}", url.PathEscape(apiID)) 428 if releaseID == "" { 429 return nil, errors.New("parameter releaseID cannot be empty") 430 } 431 urlPath = strings.ReplaceAll(urlPath, "{releaseId}", url.PathEscape(releaseID)) 432 if client.subscriptionID == "" { 433 return nil, errors.New("parameter client.subscriptionID cannot be empty") 434 } 435 urlPath = strings.ReplaceAll(urlPath, "{subscriptionId}", url.PathEscape(client.subscriptionID)) 436 req, err := azcore.NewRequest(ctx, http.MethodPatch, azcore.JoinPaths(client.con.Endpoint(), urlPath)) 437 if err != nil { 438 return nil, err 439 } 440 req.Telemetry(telemetryInfo) 441 reqQP := req.URL.Query() 442 reqQP.Set("api-version", "2020-12-01") 443 req.URL.RawQuery = reqQP.Encode() 444 req.Header.Set("If-Match", ifMatch) 445 req.Header.Set("Accept", "application/json") 446 return req, req.MarshalAsJSON(parameters) 447} 448 449// updateHandleResponse handles the Update response. 450func (client *APIReleaseClient) updateHandleResponse(resp *azcore.Response) (APIReleaseUpdateResponse, error) { 451 result := APIReleaseUpdateResponse{RawResponse: resp.Response} 452 if val := resp.Header.Get("ETag"); val != "" { 453 result.ETag = &val 454 } 455 if err := resp.UnmarshalAsJSON(&result.APIReleaseContract); err != nil { 456 return APIReleaseUpdateResponse{}, err 457 } 458 return result, nil 459} 460 461// updateHandleError handles the Update error response. 462func (client *APIReleaseClient) updateHandleError(resp *azcore.Response) error { 463 body, err := resp.Payload() 464 if err != nil { 465 return azcore.NewResponseError(err, resp.Response) 466 } 467 errType := ErrorResponse{raw: string(body)} 468 if err := resp.UnmarshalAsJSON(&errType.InnerError); err != nil { 469 return azcore.NewResponseError(fmt.Errorf("%s\n%s", string(body), err), resp.Response) 470 } 471 return azcore.NewResponseError(&errType, resp.Response) 472} 473