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// IssueClient contains the methods for the Issue group. 23// Don't use this type directly, use NewIssueClient() instead. 24type IssueClient struct { 25 con *armcore.Connection 26 subscriptionID string 27} 28 29// NewIssueClient creates a new instance of IssueClient with the specified values. 30func NewIssueClient(con *armcore.Connection, subscriptionID string) *IssueClient { 31 return &IssueClient{con: con, subscriptionID: subscriptionID} 32} 33 34// Get - Gets API Management issue details 35// If the operation fails it returns the *ErrorResponse error type. 36func (client *IssueClient) Get(ctx context.Context, resourceGroupName string, serviceName string, issueID string, options *IssueGetOptions) (IssueGetResponse, error) { 37 req, err := client.getCreateRequest(ctx, resourceGroupName, serviceName, issueID, options) 38 if err != nil { 39 return IssueGetResponse{}, err 40 } 41 resp, err := client.con.Pipeline().Do(req) 42 if err != nil { 43 return IssueGetResponse{}, err 44 } 45 if !resp.HasStatusCode(http.StatusOK) { 46 return IssueGetResponse{}, client.getHandleError(resp) 47 } 48 return client.getHandleResponse(resp) 49} 50 51// getCreateRequest creates the Get request. 52func (client *IssueClient) getCreateRequest(ctx context.Context, resourceGroupName string, serviceName string, issueID string, options *IssueGetOptions) (*azcore.Request, error) { 53 urlPath := "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/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 issueID == "" { 63 return nil, errors.New("parameter issueID cannot be empty") 64 } 65 urlPath = strings.ReplaceAll(urlPath, "{issueId}", url.PathEscape(issueID)) 66 if client.subscriptionID == "" { 67 return nil, errors.New("parameter client.subscriptionID cannot be empty") 68 } 69 urlPath = strings.ReplaceAll(urlPath, "{subscriptionId}", url.PathEscape(client.subscriptionID)) 70 req, err := azcore.NewRequest(ctx, http.MethodGet, azcore.JoinPaths(client.con.Endpoint(), urlPath)) 71 if err != nil { 72 return nil, err 73 } 74 req.Telemetry(telemetryInfo) 75 reqQP := req.URL.Query() 76 reqQP.Set("api-version", "2020-12-01") 77 req.URL.RawQuery = reqQP.Encode() 78 req.Header.Set("Accept", "application/json") 79 return req, nil 80} 81 82// getHandleResponse handles the Get response. 83func (client *IssueClient) getHandleResponse(resp *azcore.Response) (IssueGetResponse, error) { 84 result := IssueGetResponse{RawResponse: resp.Response} 85 if val := resp.Header.Get("ETag"); val != "" { 86 result.ETag = &val 87 } 88 if err := resp.UnmarshalAsJSON(&result.IssueContract); err != nil { 89 return IssueGetResponse{}, err 90 } 91 return result, nil 92} 93 94// getHandleError handles the Get error response. 95func (client *IssueClient) getHandleError(resp *azcore.Response) error { 96 body, err := resp.Payload() 97 if err != nil { 98 return azcore.NewResponseError(err, resp.Response) 99 } 100 errType := ErrorResponse{raw: string(body)} 101 if err := resp.UnmarshalAsJSON(&errType.InnerError); err != nil { 102 return azcore.NewResponseError(fmt.Errorf("%s\n%s", string(body), err), resp.Response) 103 } 104 return azcore.NewResponseError(&errType, resp.Response) 105} 106 107// ListByService - Lists a collection of issues in the specified service instance. 108// If the operation fails it returns the *ErrorResponse error type. 109func (client *IssueClient) ListByService(resourceGroupName string, serviceName string, options *IssueListByServiceOptions) IssueListByServicePager { 110 return &issueListByServicePager{ 111 client: client, 112 requester: func(ctx context.Context) (*azcore.Request, error) { 113 return client.listByServiceCreateRequest(ctx, resourceGroupName, serviceName, options) 114 }, 115 advancer: func(ctx context.Context, resp IssueListByServiceResponse) (*azcore.Request, error) { 116 return azcore.NewRequest(ctx, http.MethodGet, *resp.IssueCollection.NextLink) 117 }, 118 } 119} 120 121// listByServiceCreateRequest creates the ListByService request. 122func (client *IssueClient) listByServiceCreateRequest(ctx context.Context, resourceGroupName string, serviceName string, options *IssueListByServiceOptions) (*azcore.Request, error) { 123 urlPath := "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/issues" 124 if resourceGroupName == "" { 125 return nil, errors.New("parameter resourceGroupName cannot be empty") 126 } 127 urlPath = strings.ReplaceAll(urlPath, "{resourceGroupName}", url.PathEscape(resourceGroupName)) 128 if serviceName == "" { 129 return nil, errors.New("parameter serviceName cannot be empty") 130 } 131 urlPath = strings.ReplaceAll(urlPath, "{serviceName}", url.PathEscape(serviceName)) 132 if client.subscriptionID == "" { 133 return nil, errors.New("parameter client.subscriptionID cannot be empty") 134 } 135 urlPath = strings.ReplaceAll(urlPath, "{subscriptionId}", url.PathEscape(client.subscriptionID)) 136 req, err := azcore.NewRequest(ctx, http.MethodGet, azcore.JoinPaths(client.con.Endpoint(), urlPath)) 137 if err != nil { 138 return nil, err 139 } 140 req.Telemetry(telemetryInfo) 141 reqQP := req.URL.Query() 142 if options != nil && options.Filter != nil { 143 reqQP.Set("$filter", *options.Filter) 144 } 145 if options != nil && options.Top != nil { 146 reqQP.Set("$top", strconv.FormatInt(int64(*options.Top), 10)) 147 } 148 if options != nil && options.Skip != nil { 149 reqQP.Set("$skip", strconv.FormatInt(int64(*options.Skip), 10)) 150 } 151 reqQP.Set("api-version", "2020-12-01") 152 req.URL.RawQuery = reqQP.Encode() 153 req.Header.Set("Accept", "application/json") 154 return req, nil 155} 156 157// listByServiceHandleResponse handles the ListByService response. 158func (client *IssueClient) listByServiceHandleResponse(resp *azcore.Response) (IssueListByServiceResponse, error) { 159 result := IssueListByServiceResponse{RawResponse: resp.Response} 160 if err := resp.UnmarshalAsJSON(&result.IssueCollection); err != nil { 161 return IssueListByServiceResponse{}, err 162 } 163 return result, nil 164} 165 166// listByServiceHandleError handles the ListByService error response. 167func (client *IssueClient) listByServiceHandleError(resp *azcore.Response) error { 168 body, err := resp.Payload() 169 if err != nil { 170 return azcore.NewResponseError(err, resp.Response) 171 } 172 errType := ErrorResponse{raw: string(body)} 173 if err := resp.UnmarshalAsJSON(&errType.InnerError); err != nil { 174 return azcore.NewResponseError(fmt.Errorf("%s\n%s", string(body), err), resp.Response) 175 } 176 return azcore.NewResponseError(&errType, resp.Response) 177} 178