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