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 armnetwork 9 10import ( 11 "context" 12 "github.com/Azure/azure-sdk-for-go/sdk/armcore" 13 "github.com/Azure/azure-sdk-for-go/sdk/azcore" 14 "net/http" 15 "net/url" 16 "strings" 17) 18 19// LoadBalancerOutboundRulesClient contains the methods for the LoadBalancerOutboundRules group. 20// Don't use this type directly, use NewLoadBalancerOutboundRulesClient() instead. 21type LoadBalancerOutboundRulesClient struct { 22 con *armcore.Connection 23 subscriptionID string 24} 25 26// NewLoadBalancerOutboundRulesClient creates a new instance of LoadBalancerOutboundRulesClient with the specified values. 27func NewLoadBalancerOutboundRulesClient(con *armcore.Connection, subscriptionID string) *LoadBalancerOutboundRulesClient { 28 return &LoadBalancerOutboundRulesClient{con: con, subscriptionID: subscriptionID} 29} 30 31// Get - Gets the specified load balancer outbound rule. 32func (client *LoadBalancerOutboundRulesClient) Get(ctx context.Context, resourceGroupName string, loadBalancerName string, outboundRuleName string, options *LoadBalancerOutboundRulesGetOptions) (OutboundRuleResponse, error) { 33 req, err := client.getCreateRequest(ctx, resourceGroupName, loadBalancerName, outboundRuleName, options) 34 if err != nil { 35 return OutboundRuleResponse{}, err 36 } 37 resp, err := client.con.Pipeline().Do(req) 38 if err != nil { 39 return OutboundRuleResponse{}, err 40 } 41 if !resp.HasStatusCode(http.StatusOK) { 42 return OutboundRuleResponse{}, client.getHandleError(resp) 43 } 44 return client.getHandleResponse(resp) 45} 46 47// getCreateRequest creates the Get request. 48func (client *LoadBalancerOutboundRulesClient) getCreateRequest(ctx context.Context, resourceGroupName string, loadBalancerName string, outboundRuleName string, options *LoadBalancerOutboundRulesGetOptions) (*azcore.Request, error) { 49 urlPath := "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}/outboundRules/{outboundRuleName}" 50 urlPath = strings.ReplaceAll(urlPath, "{resourceGroupName}", url.PathEscape(resourceGroupName)) 51 urlPath = strings.ReplaceAll(urlPath, "{loadBalancerName}", url.PathEscape(loadBalancerName)) 52 urlPath = strings.ReplaceAll(urlPath, "{outboundRuleName}", url.PathEscape(outboundRuleName)) 53 urlPath = strings.ReplaceAll(urlPath, "{subscriptionId}", url.PathEscape(client.subscriptionID)) 54 req, err := azcore.NewRequest(ctx, http.MethodGet, azcore.JoinPaths(client.con.Endpoint(), urlPath)) 55 if err != nil { 56 return nil, err 57 } 58 req.Telemetry(telemetryInfo) 59 query := req.URL.Query() 60 query.Set("api-version", "2020-07-01") 61 req.URL.RawQuery = query.Encode() 62 req.Header.Set("Accept", "application/json") 63 return req, nil 64} 65 66// getHandleResponse handles the Get response. 67func (client *LoadBalancerOutboundRulesClient) getHandleResponse(resp *azcore.Response) (OutboundRuleResponse, error) { 68 var val *OutboundRule 69 if err := resp.UnmarshalAsJSON(&val); err != nil { 70 return OutboundRuleResponse{}, err 71 } 72 return OutboundRuleResponse{RawResponse: resp.Response, OutboundRule: val}, nil 73} 74 75// getHandleError handles the Get error response. 76func (client *LoadBalancerOutboundRulesClient) getHandleError(resp *azcore.Response) error { 77 var err CloudError 78 if err := resp.UnmarshalAsJSON(&err); err != nil { 79 return err 80 } 81 return azcore.NewResponseError(&err, resp.Response) 82} 83 84// List - Gets all the outbound rules in a load balancer. 85func (client *LoadBalancerOutboundRulesClient) List(resourceGroupName string, loadBalancerName string, options *LoadBalancerOutboundRulesListOptions) LoadBalancerOutboundRuleListResultPager { 86 return &loadBalancerOutboundRuleListResultPager{ 87 pipeline: client.con.Pipeline(), 88 requester: func(ctx context.Context) (*azcore.Request, error) { 89 return client.listCreateRequest(ctx, resourceGroupName, loadBalancerName, options) 90 }, 91 responder: client.listHandleResponse, 92 errorer: client.listHandleError, 93 advancer: func(ctx context.Context, resp LoadBalancerOutboundRuleListResultResponse) (*azcore.Request, error) { 94 return azcore.NewRequest(ctx, http.MethodGet, *resp.LoadBalancerOutboundRuleListResult.NextLink) 95 }, 96 statusCodes: []int{http.StatusOK}, 97 } 98} 99 100// listCreateRequest creates the List request. 101func (client *LoadBalancerOutboundRulesClient) listCreateRequest(ctx context.Context, resourceGroupName string, loadBalancerName string, options *LoadBalancerOutboundRulesListOptions) (*azcore.Request, error) { 102 urlPath := "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}/outboundRules" 103 urlPath = strings.ReplaceAll(urlPath, "{resourceGroupName}", url.PathEscape(resourceGroupName)) 104 urlPath = strings.ReplaceAll(urlPath, "{loadBalancerName}", url.PathEscape(loadBalancerName)) 105 urlPath = strings.ReplaceAll(urlPath, "{subscriptionId}", url.PathEscape(client.subscriptionID)) 106 req, err := azcore.NewRequest(ctx, http.MethodGet, azcore.JoinPaths(client.con.Endpoint(), urlPath)) 107 if err != nil { 108 return nil, err 109 } 110 req.Telemetry(telemetryInfo) 111 query := req.URL.Query() 112 query.Set("api-version", "2020-07-01") 113 req.URL.RawQuery = query.Encode() 114 req.Header.Set("Accept", "application/json") 115 return req, nil 116} 117 118// listHandleResponse handles the List response. 119func (client *LoadBalancerOutboundRulesClient) listHandleResponse(resp *azcore.Response) (LoadBalancerOutboundRuleListResultResponse, error) { 120 var val *LoadBalancerOutboundRuleListResult 121 if err := resp.UnmarshalAsJSON(&val); err != nil { 122 return LoadBalancerOutboundRuleListResultResponse{}, err 123 } 124 return LoadBalancerOutboundRuleListResultResponse{RawResponse: resp.Response, LoadBalancerOutboundRuleListResult: val}, nil 125} 126 127// listHandleError handles the List error response. 128func (client *LoadBalancerOutboundRulesClient) listHandleError(resp *azcore.Response) error { 129 var err CloudError 130 if err := resp.UnmarshalAsJSON(&err); err != nil { 131 return err 132 } 133 return azcore.NewResponseError(&err, resp.Response) 134} 135