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// APIIssuesClient is the apiManagement Client 19type APIIssuesClient struct { 20 BaseClient 21} 22 23// NewAPIIssuesClient creates an instance of the APIIssuesClient client. 24func NewAPIIssuesClient(subscriptionID string) APIIssuesClient { 25 return NewAPIIssuesClientWithBaseURI(DefaultBaseURI, subscriptionID) 26} 27 28// NewAPIIssuesClientWithBaseURI creates an instance of the APIIssuesClient client using a custom endpoint. Use this 29// when interacting with an Azure cloud that uses a non-standard base URI (sovereign clouds, Azure stack). 30func NewAPIIssuesClientWithBaseURI(baseURI string, subscriptionID string) APIIssuesClient { 31 return APIIssuesClient{NewWithBaseURI(baseURI, subscriptionID)} 32} 33 34// ListByService lists all issues associated with the specified API. 35// Parameters: 36// resourceGroupName - the name of the resource group. 37// serviceName - the name of the API Management service. 38// apiid - API identifier. Must be unique in the current API Management service instance. 39// filter - | Field | Supported operators | Supported functions | 40// |-------------|------------------------|-----------------------------------| 41// | id | ge, le, eq, ne, gt, lt | substringof, startswith, endswith | 42// | state | eq | | 43// | userId | ge, le, eq, ne, gt, lt | substringof, startswith, endswith | 44// top - number of records to return. 45// skip - number of records to skip. 46func (client APIIssuesClient) ListByService(ctx context.Context, resourceGroupName string, serviceName string, apiid string, filter string, top *int32, skip *int32) (result IssueCollectionPage, err error) { 47 if tracing.IsEnabled() { 48 ctx = tracing.StartSpan(ctx, fqdn+"/APIIssuesClient.ListByService") 49 defer func() { 50 sc := -1 51 if result.ic.Response.Response != nil { 52 sc = result.ic.Response.Response.StatusCode 53 } 54 tracing.EndSpan(ctx, sc, err) 55 }() 56 } 57 if err := validation.Validate([]validation.Validation{ 58 {TargetValue: serviceName, 59 Constraints: []validation.Constraint{{Target: "serviceName", Name: validation.MaxLength, Rule: 50, Chain: nil}, 60 {Target: "serviceName", Name: validation.MinLength, Rule: 1, Chain: nil}, 61 {Target: "serviceName", Name: validation.Pattern, Rule: `^[a-zA-Z](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?$`, Chain: nil}}}, 62 {TargetValue: apiid, 63 Constraints: []validation.Constraint{{Target: "apiid", Name: validation.MaxLength, Rule: 256, Chain: nil}, 64 {Target: "apiid", Name: validation.MinLength, Rule: 1, Chain: nil}, 65 {Target: "apiid", Name: validation.Pattern, Rule: `^[^*#&+:<>?]+$`, Chain: nil}}}, 66 {TargetValue: top, 67 Constraints: []validation.Constraint{{Target: "top", Name: validation.Null, Rule: false, 68 Chain: []validation.Constraint{{Target: "top", Name: validation.InclusiveMinimum, Rule: int64(1), Chain: nil}}}}}, 69 {TargetValue: skip, 70 Constraints: []validation.Constraint{{Target: "skip", Name: validation.Null, Rule: false, 71 Chain: []validation.Constraint{{Target: "skip", Name: validation.InclusiveMinimum, Rule: int64(0), Chain: nil}}}}}}); err != nil { 72 return result, validation.NewError("apimanagement.APIIssuesClient", "ListByService", err.Error()) 73 } 74 75 result.fn = client.listByServiceNextResults 76 req, err := client.ListByServicePreparer(ctx, resourceGroupName, serviceName, apiid, filter, top, skip) 77 if err != nil { 78 err = autorest.NewErrorWithError(err, "apimanagement.APIIssuesClient", "ListByService", nil, "Failure preparing request") 79 return 80 } 81 82 resp, err := client.ListByServiceSender(req) 83 if err != nil { 84 result.ic.Response = autorest.Response{Response: resp} 85 err = autorest.NewErrorWithError(err, "apimanagement.APIIssuesClient", "ListByService", resp, "Failure sending request") 86 return 87 } 88 89 result.ic, err = client.ListByServiceResponder(resp) 90 if err != nil { 91 err = autorest.NewErrorWithError(err, "apimanagement.APIIssuesClient", "ListByService", resp, "Failure responding to request") 92 return 93 } 94 if result.ic.hasNextLink() && result.ic.IsEmpty() { 95 err = result.NextWithContext(ctx) 96 return 97 } 98 99 return 100} 101 102// ListByServicePreparer prepares the ListByService request. 103func (client APIIssuesClient) ListByServicePreparer(ctx context.Context, resourceGroupName string, serviceName string, apiid string, filter string, top *int32, skip *int32) (*http.Request, error) { 104 pathParameters := map[string]interface{}{ 105 "apiId": autorest.Encode("path", apiid), 106 "resourceGroupName": autorest.Encode("path", resourceGroupName), 107 "serviceName": autorest.Encode("path", serviceName), 108 "subscriptionId": autorest.Encode("path", client.SubscriptionID), 109 } 110 111 const APIVersion = "2017-03-01" 112 queryParameters := map[string]interface{}{ 113 "api-version": APIVersion, 114 } 115 if len(filter) > 0 { 116 queryParameters["$filter"] = autorest.Encode("query", filter) 117 } 118 if top != nil { 119 queryParameters["$top"] = autorest.Encode("query", *top) 120 } 121 if skip != nil { 122 queryParameters["$skip"] = autorest.Encode("query", *skip) 123 } 124 125 preparer := autorest.CreatePreparer( 126 autorest.AsGet(), 127 autorest.WithBaseURL(client.BaseURI), 128 autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis/{apiId}/issues", pathParameters), 129 autorest.WithQueryParameters(queryParameters)) 130 return preparer.Prepare((&http.Request{}).WithContext(ctx)) 131} 132 133// ListByServiceSender sends the ListByService request. The method will close the 134// http.Response Body if it receives an error. 135func (client APIIssuesClient) ListByServiceSender(req *http.Request) (*http.Response, error) { 136 return client.Send(req, azure.DoRetryWithRegistration(client.Client)) 137} 138 139// ListByServiceResponder handles the response to the ListByService request. The method always 140// closes the http.Response Body. 141func (client APIIssuesClient) ListByServiceResponder(resp *http.Response) (result IssueCollection, err error) { 142 err = autorest.Respond( 143 resp, 144 azure.WithErrorUnlessStatusCode(http.StatusOK), 145 autorest.ByUnmarshallingJSON(&result), 146 autorest.ByClosing()) 147 result.Response = autorest.Response{Response: resp} 148 return 149} 150 151// listByServiceNextResults retrieves the next set of results, if any. 152func (client APIIssuesClient) listByServiceNextResults(ctx context.Context, lastResults IssueCollection) (result IssueCollection, err error) { 153 req, err := lastResults.issueCollectionPreparer(ctx) 154 if err != nil { 155 return result, autorest.NewErrorWithError(err, "apimanagement.APIIssuesClient", "listByServiceNextResults", nil, "Failure preparing next results request") 156 } 157 if req == nil { 158 return 159 } 160 resp, err := client.ListByServiceSender(req) 161 if err != nil { 162 result.Response = autorest.Response{Response: resp} 163 return result, autorest.NewErrorWithError(err, "apimanagement.APIIssuesClient", "listByServiceNextResults", resp, "Failure sending next results request") 164 } 165 result, err = client.ListByServiceResponder(resp) 166 if err != nil { 167 err = autorest.NewErrorWithError(err, "apimanagement.APIIssuesClient", "listByServiceNextResults", resp, "Failure responding to next results request") 168 } 169 return 170} 171 172// ListByServiceComplete enumerates all values, automatically crossing page boundaries as required. 173func (client APIIssuesClient) ListByServiceComplete(ctx context.Context, resourceGroupName string, serviceName string, apiid string, filter string, top *int32, skip *int32) (result IssueCollectionIterator, err error) { 174 if tracing.IsEnabled() { 175 ctx = tracing.StartSpan(ctx, fqdn+"/APIIssuesClient.ListByService") 176 defer func() { 177 sc := -1 178 if result.Response().Response.Response != nil { 179 sc = result.page.Response().Response.Response.StatusCode 180 } 181 tracing.EndSpan(ctx, sc, err) 182 }() 183 } 184 result.page, err = client.ListByService(ctx, resourceGroupName, serviceName, apiid, filter, top, skip) 185 return 186} 187