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// APIIssueClient contains the methods for the APIIssue group. 23// Don't use this type directly, use NewAPIIssueClient() instead. 24type APIIssueClient struct { 25 con *armcore.Connection 26 subscriptionID string 27} 28 29// NewAPIIssueClient creates a new instance of APIIssueClient with the specified values. 30func NewAPIIssueClient(con *armcore.Connection, subscriptionID string) *APIIssueClient { 31 return &APIIssueClient{con: con, subscriptionID: subscriptionID} 32} 33 34// CreateOrUpdate - Creates a new Issue for an API or updates an existing one. 35// If the operation fails it returns the *ErrorResponse error type. 36func (client *APIIssueClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, serviceName string, apiID string, issueID string, parameters IssueContract, options *APIIssueCreateOrUpdateOptions) (APIIssueCreateOrUpdateResponse, error) { 37 req, err := client.createOrUpdateCreateRequest(ctx, resourceGroupName, serviceName, apiID, issueID, parameters, options) 38 if err != nil { 39 return APIIssueCreateOrUpdateResponse{}, err 40 } 41 resp, err := client.con.Pipeline().Do(req) 42 if err != nil { 43 return APIIssueCreateOrUpdateResponse{}, err 44 } 45 if !resp.HasStatusCode(http.StatusOK, http.StatusCreated) { 46 return APIIssueCreateOrUpdateResponse{}, client.createOrUpdateHandleError(resp) 47 } 48 return client.createOrUpdateHandleResponse(resp) 49} 50 51// createOrUpdateCreateRequest creates the CreateOrUpdate request. 52func (client *APIIssueClient) createOrUpdateCreateRequest(ctx context.Context, resourceGroupName string, serviceName string, apiID string, issueID string, parameters IssueContract, options *APIIssueCreateOrUpdateOptions) (*azcore.Request, error) { 53 urlPath := "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis/{apiId}/issues/{issueId}" 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 issueID == "" { 67 return nil, errors.New("parameter issueID cannot be empty") 68 } 69 urlPath = strings.ReplaceAll(urlPath, "{issueId}", url.PathEscape(issueID)) 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 *APIIssueClient) createOrUpdateHandleResponse(resp *azcore.Response) (APIIssueCreateOrUpdateResponse, error) { 91 result := APIIssueCreateOrUpdateResponse{RawResponse: resp.Response} 92 if val := resp.Header.Get("ETag"); val != "" { 93 result.ETag = &val 94 } 95 if err := resp.UnmarshalAsJSON(&result.IssueContract); err != nil { 96 return APIIssueCreateOrUpdateResponse{}, err 97 } 98 return result, nil 99} 100 101// createOrUpdateHandleError handles the CreateOrUpdate error response. 102func (client *APIIssueClient) 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 Issue from an API. 115// If the operation fails it returns the *ErrorResponse error type. 116func (client *APIIssueClient) Delete(ctx context.Context, resourceGroupName string, serviceName string, apiID string, issueID string, ifMatch string, options *APIIssueDeleteOptions) (APIIssueDeleteResponse, error) { 117 req, err := client.deleteCreateRequest(ctx, resourceGroupName, serviceName, apiID, issueID, ifMatch, options) 118 if err != nil { 119 return APIIssueDeleteResponse{}, err 120 } 121 resp, err := client.con.Pipeline().Do(req) 122 if err != nil { 123 return APIIssueDeleteResponse{}, err 124 } 125 if !resp.HasStatusCode(http.StatusOK, http.StatusNoContent) { 126 return APIIssueDeleteResponse{}, client.deleteHandleError(resp) 127 } 128 return APIIssueDeleteResponse{RawResponse: resp.Response}, nil 129} 130 131// deleteCreateRequest creates the Delete request. 132func (client *APIIssueClient) deleteCreateRequest(ctx context.Context, resourceGroupName string, serviceName string, apiID string, issueID string, ifMatch string, options *APIIssueDeleteOptions) (*azcore.Request, error) { 133 urlPath := "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis/{apiId}/issues/{issueId}" 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 issueID == "" { 147 return nil, errors.New("parameter issueID cannot be empty") 148 } 149 urlPath = strings.ReplaceAll(urlPath, "{issueId}", url.PathEscape(issueID)) 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 *APIIssueClient) 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 - Gets the details of the Issue for an API specified by its identifier. 181// If the operation fails it returns the *ErrorResponse error type. 182func (client *APIIssueClient) Get(ctx context.Context, resourceGroupName string, serviceName string, apiID string, issueID string, options *APIIssueGetOptions) (APIIssueGetResponse, error) { 183 req, err := client.getCreateRequest(ctx, resourceGroupName, serviceName, apiID, issueID, options) 184 if err != nil { 185 return APIIssueGetResponse{}, err 186 } 187 resp, err := client.con.Pipeline().Do(req) 188 if err != nil { 189 return APIIssueGetResponse{}, err 190 } 191 if !resp.HasStatusCode(http.StatusOK) { 192 return APIIssueGetResponse{}, client.getHandleError(resp) 193 } 194 return client.getHandleResponse(resp) 195} 196 197// getCreateRequest creates the Get request. 198func (client *APIIssueClient) getCreateRequest(ctx context.Context, resourceGroupName string, serviceName string, apiID string, issueID string, options *APIIssueGetOptions) (*azcore.Request, error) { 199 urlPath := "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis/{apiId}/issues/{issueId}" 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 issueID == "" { 213 return nil, errors.New("parameter issueID cannot be empty") 214 } 215 urlPath = strings.ReplaceAll(urlPath, "{issueId}", url.PathEscape(issueID)) 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 if options != nil && options.ExpandCommentsAttachments != nil { 227 reqQP.Set("expandCommentsAttachments", strconv.FormatBool(*options.ExpandCommentsAttachments)) 228 } 229 reqQP.Set("api-version", "2020-12-01") 230 req.URL.RawQuery = reqQP.Encode() 231 req.Header.Set("Accept", "application/json") 232 return req, nil 233} 234 235// getHandleResponse handles the Get response. 236func (client *APIIssueClient) getHandleResponse(resp *azcore.Response) (APIIssueGetResponse, error) { 237 result := APIIssueGetResponse{RawResponse: resp.Response} 238 if val := resp.Header.Get("ETag"); val != "" { 239 result.ETag = &val 240 } 241 if err := resp.UnmarshalAsJSON(&result.IssueContract); err != nil { 242 return APIIssueGetResponse{}, err 243 } 244 return result, nil 245} 246 247// getHandleError handles the Get error response. 248func (client *APIIssueClient) getHandleError(resp *azcore.Response) error { 249 body, err := resp.Payload() 250 if err != nil { 251 return azcore.NewResponseError(err, resp.Response) 252 } 253 errType := ErrorResponse{raw: string(body)} 254 if err := resp.UnmarshalAsJSON(&errType.InnerError); err != nil { 255 return azcore.NewResponseError(fmt.Errorf("%s\n%s", string(body), err), resp.Response) 256 } 257 return azcore.NewResponseError(&errType, resp.Response) 258} 259 260// GetEntityTag - Gets the entity state (Etag) version of the Issue for an API specified by its identifier. 261// If the operation fails it returns the *ErrorResponse error type. 262func (client *APIIssueClient) GetEntityTag(ctx context.Context, resourceGroupName string, serviceName string, apiID string, issueID string, options *APIIssueGetEntityTagOptions) (APIIssueGetEntityTagResponse, error) { 263 req, err := client.getEntityTagCreateRequest(ctx, resourceGroupName, serviceName, apiID, issueID, options) 264 if err != nil { 265 return APIIssueGetEntityTagResponse{}, err 266 } 267 resp, err := client.con.Pipeline().Do(req) 268 if err != nil { 269 return APIIssueGetEntityTagResponse{}, err 270 } 271 return client.getEntityTagHandleResponse(resp) 272} 273 274// getEntityTagCreateRequest creates the GetEntityTag request. 275func (client *APIIssueClient) getEntityTagCreateRequest(ctx context.Context, resourceGroupName string, serviceName string, apiID string, issueID string, options *APIIssueGetEntityTagOptions) (*azcore.Request, error) { 276 urlPath := "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis/{apiId}/issues/{issueId}" 277 if resourceGroupName == "" { 278 return nil, errors.New("parameter resourceGroupName cannot be empty") 279 } 280 urlPath = strings.ReplaceAll(urlPath, "{resourceGroupName}", url.PathEscape(resourceGroupName)) 281 if serviceName == "" { 282 return nil, errors.New("parameter serviceName cannot be empty") 283 } 284 urlPath = strings.ReplaceAll(urlPath, "{serviceName}", url.PathEscape(serviceName)) 285 if apiID == "" { 286 return nil, errors.New("parameter apiID cannot be empty") 287 } 288 urlPath = strings.ReplaceAll(urlPath, "{apiId}", url.PathEscape(apiID)) 289 if issueID == "" { 290 return nil, errors.New("parameter issueID cannot be empty") 291 } 292 urlPath = strings.ReplaceAll(urlPath, "{issueId}", url.PathEscape(issueID)) 293 if client.subscriptionID == "" { 294 return nil, errors.New("parameter client.subscriptionID cannot be empty") 295 } 296 urlPath = strings.ReplaceAll(urlPath, "{subscriptionId}", url.PathEscape(client.subscriptionID)) 297 req, err := azcore.NewRequest(ctx, http.MethodHead, azcore.JoinPaths(client.con.Endpoint(), urlPath)) 298 if err != nil { 299 return nil, err 300 } 301 req.Telemetry(telemetryInfo) 302 reqQP := req.URL.Query() 303 reqQP.Set("api-version", "2020-12-01") 304 req.URL.RawQuery = reqQP.Encode() 305 req.Header.Set("Accept", "application/json") 306 return req, nil 307} 308 309// getEntityTagHandleResponse handles the GetEntityTag response. 310func (client *APIIssueClient) getEntityTagHandleResponse(resp *azcore.Response) (APIIssueGetEntityTagResponse, error) { 311 result := APIIssueGetEntityTagResponse{RawResponse: resp.Response} 312 if val := resp.Header.Get("ETag"); val != "" { 313 result.ETag = &val 314 } 315 if resp.StatusCode >= 200 && resp.StatusCode < 300 { 316 result.Success = true 317 } 318 return result, nil 319} 320 321// ListByService - Lists all issues associated with the specified API. 322// If the operation fails it returns the *ErrorResponse error type. 323func (client *APIIssueClient) ListByService(resourceGroupName string, serviceName string, apiID string, options *APIIssueListByServiceOptions) APIIssueListByServicePager { 324 return &apiIssueListByServicePager{ 325 client: client, 326 requester: func(ctx context.Context) (*azcore.Request, error) { 327 return client.listByServiceCreateRequest(ctx, resourceGroupName, serviceName, apiID, options) 328 }, 329 advancer: func(ctx context.Context, resp APIIssueListByServiceResponse) (*azcore.Request, error) { 330 return azcore.NewRequest(ctx, http.MethodGet, *resp.IssueCollection.NextLink) 331 }, 332 } 333} 334 335// listByServiceCreateRequest creates the ListByService request. 336func (client *APIIssueClient) listByServiceCreateRequest(ctx context.Context, resourceGroupName string, serviceName string, apiID string, options *APIIssueListByServiceOptions) (*azcore.Request, error) { 337 urlPath := "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis/{apiId}/issues" 338 if resourceGroupName == "" { 339 return nil, errors.New("parameter resourceGroupName cannot be empty") 340 } 341 urlPath = strings.ReplaceAll(urlPath, "{resourceGroupName}", url.PathEscape(resourceGroupName)) 342 if serviceName == "" { 343 return nil, errors.New("parameter serviceName cannot be empty") 344 } 345 urlPath = strings.ReplaceAll(urlPath, "{serviceName}", url.PathEscape(serviceName)) 346 if apiID == "" { 347 return nil, errors.New("parameter apiID cannot be empty") 348 } 349 urlPath = strings.ReplaceAll(urlPath, "{apiId}", url.PathEscape(apiID)) 350 if client.subscriptionID == "" { 351 return nil, errors.New("parameter client.subscriptionID cannot be empty") 352 } 353 urlPath = strings.ReplaceAll(urlPath, "{subscriptionId}", url.PathEscape(client.subscriptionID)) 354 req, err := azcore.NewRequest(ctx, http.MethodGet, azcore.JoinPaths(client.con.Endpoint(), urlPath)) 355 if err != nil { 356 return nil, err 357 } 358 req.Telemetry(telemetryInfo) 359 reqQP := req.URL.Query() 360 if options != nil && options.Filter != nil { 361 reqQP.Set("$filter", *options.Filter) 362 } 363 if options != nil && options.ExpandCommentsAttachments != nil { 364 reqQP.Set("expandCommentsAttachments", strconv.FormatBool(*options.ExpandCommentsAttachments)) 365 } 366 if options != nil && options.Top != nil { 367 reqQP.Set("$top", strconv.FormatInt(int64(*options.Top), 10)) 368 } 369 if options != nil && options.Skip != nil { 370 reqQP.Set("$skip", strconv.FormatInt(int64(*options.Skip), 10)) 371 } 372 reqQP.Set("api-version", "2020-12-01") 373 req.URL.RawQuery = reqQP.Encode() 374 req.Header.Set("Accept", "application/json") 375 return req, nil 376} 377 378// listByServiceHandleResponse handles the ListByService response. 379func (client *APIIssueClient) listByServiceHandleResponse(resp *azcore.Response) (APIIssueListByServiceResponse, error) { 380 result := APIIssueListByServiceResponse{RawResponse: resp.Response} 381 if err := resp.UnmarshalAsJSON(&result.IssueCollection); err != nil { 382 return APIIssueListByServiceResponse{}, err 383 } 384 return result, nil 385} 386 387// listByServiceHandleError handles the ListByService error response. 388func (client *APIIssueClient) listByServiceHandleError(resp *azcore.Response) error { 389 body, err := resp.Payload() 390 if err != nil { 391 return azcore.NewResponseError(err, resp.Response) 392 } 393 errType := ErrorResponse{raw: string(body)} 394 if err := resp.UnmarshalAsJSON(&errType.InnerError); err != nil { 395 return azcore.NewResponseError(fmt.Errorf("%s\n%s", string(body), err), resp.Response) 396 } 397 return azcore.NewResponseError(&errType, resp.Response) 398} 399 400// Update - Updates an existing issue for an API. 401// If the operation fails it returns the *ErrorResponse error type. 402func (client *APIIssueClient) Update(ctx context.Context, resourceGroupName string, serviceName string, apiID string, issueID string, ifMatch string, parameters IssueUpdateContract, options *APIIssueUpdateOptions) (APIIssueUpdateResponse, error) { 403 req, err := client.updateCreateRequest(ctx, resourceGroupName, serviceName, apiID, issueID, ifMatch, parameters, options) 404 if err != nil { 405 return APIIssueUpdateResponse{}, err 406 } 407 resp, err := client.con.Pipeline().Do(req) 408 if err != nil { 409 return APIIssueUpdateResponse{}, err 410 } 411 if !resp.HasStatusCode(http.StatusOK) { 412 return APIIssueUpdateResponse{}, client.updateHandleError(resp) 413 } 414 return client.updateHandleResponse(resp) 415} 416 417// updateCreateRequest creates the Update request. 418func (client *APIIssueClient) updateCreateRequest(ctx context.Context, resourceGroupName string, serviceName string, apiID string, issueID string, ifMatch string, parameters IssueUpdateContract, options *APIIssueUpdateOptions) (*azcore.Request, error) { 419 urlPath := "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis/{apiId}/issues/{issueId}" 420 if resourceGroupName == "" { 421 return nil, errors.New("parameter resourceGroupName cannot be empty") 422 } 423 urlPath = strings.ReplaceAll(urlPath, "{resourceGroupName}", url.PathEscape(resourceGroupName)) 424 if serviceName == "" { 425 return nil, errors.New("parameter serviceName cannot be empty") 426 } 427 urlPath = strings.ReplaceAll(urlPath, "{serviceName}", url.PathEscape(serviceName)) 428 if apiID == "" { 429 return nil, errors.New("parameter apiID cannot be empty") 430 } 431 urlPath = strings.ReplaceAll(urlPath, "{apiId}", url.PathEscape(apiID)) 432 if issueID == "" { 433 return nil, errors.New("parameter issueID cannot be empty") 434 } 435 urlPath = strings.ReplaceAll(urlPath, "{issueId}", url.PathEscape(issueID)) 436 if client.subscriptionID == "" { 437 return nil, errors.New("parameter client.subscriptionID cannot be empty") 438 } 439 urlPath = strings.ReplaceAll(urlPath, "{subscriptionId}", url.PathEscape(client.subscriptionID)) 440 req, err := azcore.NewRequest(ctx, http.MethodPatch, azcore.JoinPaths(client.con.Endpoint(), urlPath)) 441 if err != nil { 442 return nil, err 443 } 444 req.Telemetry(telemetryInfo) 445 reqQP := req.URL.Query() 446 reqQP.Set("api-version", "2020-12-01") 447 req.URL.RawQuery = reqQP.Encode() 448 req.Header.Set("If-Match", ifMatch) 449 req.Header.Set("Accept", "application/json") 450 return req, req.MarshalAsJSON(parameters) 451} 452 453// updateHandleResponse handles the Update response. 454func (client *APIIssueClient) updateHandleResponse(resp *azcore.Response) (APIIssueUpdateResponse, error) { 455 result := APIIssueUpdateResponse{RawResponse: resp.Response} 456 if val := resp.Header.Get("ETag"); val != "" { 457 result.ETag = &val 458 } 459 if err := resp.UnmarshalAsJSON(&result.IssueContract); err != nil { 460 return APIIssueUpdateResponse{}, err 461 } 462 return result, nil 463} 464 465// updateHandleError handles the Update error response. 466func (client *APIIssueClient) updateHandleError(resp *azcore.Response) error { 467 body, err := resp.Payload() 468 if err != nil { 469 return azcore.NewResponseError(err, resp.Response) 470 } 471 errType := ErrorResponse{raw: string(body)} 472 if err := resp.UnmarshalAsJSON(&errType.InnerError); err != nil { 473 return azcore.NewResponseError(fmt.Errorf("%s\n%s", string(body), err), resp.Response) 474 } 475 return azcore.NewResponseError(&errType, resp.Response) 476} 477