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