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 "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 "strings" 19) 20 21// LoadBalancerOutboundRulesClient contains the methods for the LoadBalancerOutboundRules group. 22// Don't use this type directly, use NewLoadBalancerOutboundRulesClient() instead. 23type LoadBalancerOutboundRulesClient struct { 24 con *armcore.Connection 25 subscriptionID string 26} 27 28// NewLoadBalancerOutboundRulesClient creates a new instance of LoadBalancerOutboundRulesClient with the specified values. 29func NewLoadBalancerOutboundRulesClient(con *armcore.Connection, subscriptionID string) *LoadBalancerOutboundRulesClient { 30 return &LoadBalancerOutboundRulesClient{con: con, subscriptionID: subscriptionID} 31} 32 33// Get - Gets the specified load balancer outbound rule. 34// If the operation fails it returns the *CloudError error type. 35func (client *LoadBalancerOutboundRulesClient) Get(ctx context.Context, resourceGroupName string, loadBalancerName string, outboundRuleName string, options *LoadBalancerOutboundRulesGetOptions) (OutboundRuleResponse, error) { 36 req, err := client.getCreateRequest(ctx, resourceGroupName, loadBalancerName, outboundRuleName, options) 37 if err != nil { 38 return OutboundRuleResponse{}, err 39 } 40 resp, err := client.con.Pipeline().Do(req) 41 if err != nil { 42 return OutboundRuleResponse{}, err 43 } 44 if !resp.HasStatusCode(http.StatusOK) { 45 return OutboundRuleResponse{}, client.getHandleError(resp) 46 } 47 return client.getHandleResponse(resp) 48} 49 50// getCreateRequest creates the Get request. 51func (client *LoadBalancerOutboundRulesClient) getCreateRequest(ctx context.Context, resourceGroupName string, loadBalancerName string, outboundRuleName string, options *LoadBalancerOutboundRulesGetOptions) (*azcore.Request, error) { 52 urlPath := "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}/outboundRules/{outboundRuleName}" 53 if resourceGroupName == "" { 54 return nil, errors.New("parameter resourceGroupName cannot be empty") 55 } 56 urlPath = strings.ReplaceAll(urlPath, "{resourceGroupName}", url.PathEscape(resourceGroupName)) 57 if loadBalancerName == "" { 58 return nil, errors.New("parameter loadBalancerName cannot be empty") 59 } 60 urlPath = strings.ReplaceAll(urlPath, "{loadBalancerName}", url.PathEscape(loadBalancerName)) 61 if outboundRuleName == "" { 62 return nil, errors.New("parameter outboundRuleName cannot be empty") 63 } 64 urlPath = strings.ReplaceAll(urlPath, "{outboundRuleName}", url.PathEscape(outboundRuleName)) 65 if client.subscriptionID == "" { 66 return nil, errors.New("parameter client.subscriptionID cannot be empty") 67 } 68 urlPath = strings.ReplaceAll(urlPath, "{subscriptionId}", url.PathEscape(client.subscriptionID)) 69 req, err := azcore.NewRequest(ctx, http.MethodGet, azcore.JoinPaths(client.con.Endpoint(), urlPath)) 70 if err != nil { 71 return nil, err 72 } 73 req.Telemetry(telemetryInfo) 74 reqQP := req.URL.Query() 75 reqQP.Set("api-version", "2021-02-01") 76 req.URL.RawQuery = reqQP.Encode() 77 req.Header.Set("Accept", "application/json") 78 return req, nil 79} 80 81// getHandleResponse handles the Get response. 82func (client *LoadBalancerOutboundRulesClient) getHandleResponse(resp *azcore.Response) (OutboundRuleResponse, error) { 83 var val *OutboundRule 84 if err := resp.UnmarshalAsJSON(&val); err != nil { 85 return OutboundRuleResponse{}, err 86 } 87 return OutboundRuleResponse{RawResponse: resp.Response, OutboundRule: val}, nil 88} 89 90// getHandleError handles the Get error response. 91func (client *LoadBalancerOutboundRulesClient) getHandleError(resp *azcore.Response) error { 92 body, err := resp.Payload() 93 if err != nil { 94 return azcore.NewResponseError(err, resp.Response) 95 } 96 errType := CloudError{raw: string(body)} 97 if err := resp.UnmarshalAsJSON(&errType); err != nil { 98 return azcore.NewResponseError(fmt.Errorf("%s\n%s", string(body), err), resp.Response) 99 } 100 return azcore.NewResponseError(&errType, resp.Response) 101} 102 103// List - Gets all the outbound rules in a load balancer. 104// If the operation fails it returns the *CloudError error type. 105func (client *LoadBalancerOutboundRulesClient) List(resourceGroupName string, loadBalancerName string, options *LoadBalancerOutboundRulesListOptions) LoadBalancerOutboundRuleListResultPager { 106 return &loadBalancerOutboundRuleListResultPager{ 107 pipeline: client.con.Pipeline(), 108 requester: func(ctx context.Context) (*azcore.Request, error) { 109 return client.listCreateRequest(ctx, resourceGroupName, loadBalancerName, options) 110 }, 111 responder: client.listHandleResponse, 112 errorer: client.listHandleError, 113 advancer: func(ctx context.Context, resp LoadBalancerOutboundRuleListResultResponse) (*azcore.Request, error) { 114 return azcore.NewRequest(ctx, http.MethodGet, *resp.LoadBalancerOutboundRuleListResult.NextLink) 115 }, 116 statusCodes: []int{http.StatusOK}, 117 } 118} 119 120// listCreateRequest creates the List request. 121func (client *LoadBalancerOutboundRulesClient) listCreateRequest(ctx context.Context, resourceGroupName string, loadBalancerName string, options *LoadBalancerOutboundRulesListOptions) (*azcore.Request, error) { 122 urlPath := "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}/outboundRules" 123 if resourceGroupName == "" { 124 return nil, errors.New("parameter resourceGroupName cannot be empty") 125 } 126 urlPath = strings.ReplaceAll(urlPath, "{resourceGroupName}", url.PathEscape(resourceGroupName)) 127 if loadBalancerName == "" { 128 return nil, errors.New("parameter loadBalancerName cannot be empty") 129 } 130 urlPath = strings.ReplaceAll(urlPath, "{loadBalancerName}", url.PathEscape(loadBalancerName)) 131 if client.subscriptionID == "" { 132 return nil, errors.New("parameter client.subscriptionID cannot be empty") 133 } 134 urlPath = strings.ReplaceAll(urlPath, "{subscriptionId}", url.PathEscape(client.subscriptionID)) 135 req, err := azcore.NewRequest(ctx, http.MethodGet, azcore.JoinPaths(client.con.Endpoint(), urlPath)) 136 if err != nil { 137 return nil, err 138 } 139 req.Telemetry(telemetryInfo) 140 reqQP := req.URL.Query() 141 reqQP.Set("api-version", "2021-02-01") 142 req.URL.RawQuery = reqQP.Encode() 143 req.Header.Set("Accept", "application/json") 144 return req, nil 145} 146 147// listHandleResponse handles the List response. 148func (client *LoadBalancerOutboundRulesClient) listHandleResponse(resp *azcore.Response) (LoadBalancerOutboundRuleListResultResponse, error) { 149 var val *LoadBalancerOutboundRuleListResult 150 if err := resp.UnmarshalAsJSON(&val); err != nil { 151 return LoadBalancerOutboundRuleListResultResponse{}, err 152 } 153 return LoadBalancerOutboundRuleListResultResponse{RawResponse: resp.Response, LoadBalancerOutboundRuleListResult: val}, nil 154} 155 156// listHandleError handles the List error response. 157func (client *LoadBalancerOutboundRulesClient) listHandleError(resp *azcore.Response) error { 158 body, err := resp.Payload() 159 if err != nil { 160 return azcore.NewResponseError(err, resp.Response) 161 } 162 errType := CloudError{raw: string(body)} 163 if err := resp.UnmarshalAsJSON(&errType); err != nil { 164 return azcore.NewResponseError(fmt.Errorf("%s\n%s", string(body), err), resp.Response) 165 } 166 return azcore.NewResponseError(&errType, resp.Response) 167} 168