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 armapimanagement
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	"strconv"
19	"strings"
20)
21
22// OpenIDConnectProviderClient contains the methods for the OpenIDConnectProvider group.
23// Don't use this type directly, use NewOpenIDConnectProviderClient() instead.
24type OpenIDConnectProviderClient struct {
25	con            *armcore.Connection
26	subscriptionID string
27}
28
29// NewOpenIDConnectProviderClient creates a new instance of OpenIDConnectProviderClient with the specified values.
30func NewOpenIDConnectProviderClient(con *armcore.Connection, subscriptionID string) *OpenIDConnectProviderClient {
31	return &OpenIDConnectProviderClient{con: con, subscriptionID: subscriptionID}
32}
33
34// CreateOrUpdate - Creates or updates the OpenID Connect Provider.
35// If the operation fails it returns the *ErrorResponse error type.
36func (client *OpenIDConnectProviderClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, serviceName string, opid string, parameters OpenidConnectProviderContract, options *OpenIDConnectProviderCreateOrUpdateOptions) (OpenIDConnectProviderCreateOrUpdateResponse, error) {
37	req, err := client.createOrUpdateCreateRequest(ctx, resourceGroupName, serviceName, opid, parameters, options)
38	if err != nil {
39		return OpenIDConnectProviderCreateOrUpdateResponse{}, err
40	}
41	resp, err := client.con.Pipeline().Do(req)
42	if err != nil {
43		return OpenIDConnectProviderCreateOrUpdateResponse{}, err
44	}
45	if !resp.HasStatusCode(http.StatusOK, http.StatusCreated) {
46		return OpenIDConnectProviderCreateOrUpdateResponse{}, client.createOrUpdateHandleError(resp)
47	}
48	return client.createOrUpdateHandleResponse(resp)
49}
50
51// createOrUpdateCreateRequest creates the CreateOrUpdate request.
52func (client *OpenIDConnectProviderClient) createOrUpdateCreateRequest(ctx context.Context, resourceGroupName string, serviceName string, opid string, parameters OpenidConnectProviderContract, options *OpenIDConnectProviderCreateOrUpdateOptions) (*azcore.Request, error) {
53	urlPath := "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/openidConnectProviders/{opid}"
54	if resourceGroupName == "" {
55		return nil, errors.New("parameter resourceGroupName cannot be empty")
56	}
57	urlPath = strings.ReplaceAll(urlPath, "{resourceGroupName}", url.PathEscape(resourceGroupName))
58	if serviceName == "" {
59		return nil, errors.New("parameter serviceName cannot be empty")
60	}
61	urlPath = strings.ReplaceAll(urlPath, "{serviceName}", url.PathEscape(serviceName))
62	if opid == "" {
63		return nil, errors.New("parameter opid cannot be empty")
64	}
65	urlPath = strings.ReplaceAll(urlPath, "{opid}", url.PathEscape(opid))
66	if client.subscriptionID == "" {
67		return nil, errors.New("parameter client.subscriptionID cannot be empty")
68	}
69	urlPath = strings.ReplaceAll(urlPath, "{subscriptionId}", url.PathEscape(client.subscriptionID))
70	req, err := azcore.NewRequest(ctx, http.MethodPut, azcore.JoinPaths(client.con.Endpoint(), urlPath))
71	if err != nil {
72		return nil, err
73	}
74	req.Telemetry(telemetryInfo)
75	reqQP := req.URL.Query()
76	reqQP.Set("api-version", "2020-12-01")
77	req.URL.RawQuery = reqQP.Encode()
78	if options != nil && options.IfMatch != nil {
79		req.Header.Set("If-Match", *options.IfMatch)
80	}
81	req.Header.Set("Accept", "application/json")
82	return req, req.MarshalAsJSON(parameters)
83}
84
85// createOrUpdateHandleResponse handles the CreateOrUpdate response.
86func (client *OpenIDConnectProviderClient) createOrUpdateHandleResponse(resp *azcore.Response) (OpenIDConnectProviderCreateOrUpdateResponse, error) {
87	result := OpenIDConnectProviderCreateOrUpdateResponse{RawResponse: resp.Response}
88	if val := resp.Header.Get("ETag"); val != "" {
89		result.ETag = &val
90	}
91	if err := resp.UnmarshalAsJSON(&result.OpenidConnectProviderContract); err != nil {
92		return OpenIDConnectProviderCreateOrUpdateResponse{}, err
93	}
94	return result, nil
95}
96
97// createOrUpdateHandleError handles the CreateOrUpdate error response.
98func (client *OpenIDConnectProviderClient) createOrUpdateHandleError(resp *azcore.Response) error {
99	body, err := resp.Payload()
100	if err != nil {
101		return azcore.NewResponseError(err, resp.Response)
102	}
103	errType := ErrorResponse{raw: string(body)}
104	if err := resp.UnmarshalAsJSON(&errType.InnerError); err != nil {
105		return azcore.NewResponseError(fmt.Errorf("%s\n%s", string(body), err), resp.Response)
106	}
107	return azcore.NewResponseError(&errType, resp.Response)
108}
109
110// Delete - Deletes specific OpenID Connect Provider of the API Management service instance.
111// If the operation fails it returns the *ErrorResponse error type.
112func (client *OpenIDConnectProviderClient) Delete(ctx context.Context, resourceGroupName string, serviceName string, opid string, ifMatch string, options *OpenIDConnectProviderDeleteOptions) (OpenIDConnectProviderDeleteResponse, error) {
113	req, err := client.deleteCreateRequest(ctx, resourceGroupName, serviceName, opid, ifMatch, options)
114	if err != nil {
115		return OpenIDConnectProviderDeleteResponse{}, err
116	}
117	resp, err := client.con.Pipeline().Do(req)
118	if err != nil {
119		return OpenIDConnectProviderDeleteResponse{}, err
120	}
121	if !resp.HasStatusCode(http.StatusOK, http.StatusNoContent) {
122		return OpenIDConnectProviderDeleteResponse{}, client.deleteHandleError(resp)
123	}
124	return OpenIDConnectProviderDeleteResponse{RawResponse: resp.Response}, nil
125}
126
127// deleteCreateRequest creates the Delete request.
128func (client *OpenIDConnectProviderClient) deleteCreateRequest(ctx context.Context, resourceGroupName string, serviceName string, opid string, ifMatch string, options *OpenIDConnectProviderDeleteOptions) (*azcore.Request, error) {
129	urlPath := "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/openidConnectProviders/{opid}"
130	if resourceGroupName == "" {
131		return nil, errors.New("parameter resourceGroupName cannot be empty")
132	}
133	urlPath = strings.ReplaceAll(urlPath, "{resourceGroupName}", url.PathEscape(resourceGroupName))
134	if serviceName == "" {
135		return nil, errors.New("parameter serviceName cannot be empty")
136	}
137	urlPath = strings.ReplaceAll(urlPath, "{serviceName}", url.PathEscape(serviceName))
138	if opid == "" {
139		return nil, errors.New("parameter opid cannot be empty")
140	}
141	urlPath = strings.ReplaceAll(urlPath, "{opid}", url.PathEscape(opid))
142	if client.subscriptionID == "" {
143		return nil, errors.New("parameter client.subscriptionID cannot be empty")
144	}
145	urlPath = strings.ReplaceAll(urlPath, "{subscriptionId}", url.PathEscape(client.subscriptionID))
146	req, err := azcore.NewRequest(ctx, http.MethodDelete, azcore.JoinPaths(client.con.Endpoint(), urlPath))
147	if err != nil {
148		return nil, err
149	}
150	req.Telemetry(telemetryInfo)
151	reqQP := req.URL.Query()
152	reqQP.Set("api-version", "2020-12-01")
153	req.URL.RawQuery = reqQP.Encode()
154	req.Header.Set("If-Match", ifMatch)
155	req.Header.Set("Accept", "application/json")
156	return req, nil
157}
158
159// deleteHandleError handles the Delete error response.
160func (client *OpenIDConnectProviderClient) deleteHandleError(resp *azcore.Response) error {
161	body, err := resp.Payload()
162	if err != nil {
163		return azcore.NewResponseError(err, resp.Response)
164	}
165	errType := ErrorResponse{raw: string(body)}
166	if err := resp.UnmarshalAsJSON(&errType.InnerError); err != nil {
167		return azcore.NewResponseError(fmt.Errorf("%s\n%s", string(body), err), resp.Response)
168	}
169	return azcore.NewResponseError(&errType, resp.Response)
170}
171
172// Get - Gets specific OpenID Connect Provider without secrets.
173// If the operation fails it returns the *ErrorResponse error type.
174func (client *OpenIDConnectProviderClient) Get(ctx context.Context, resourceGroupName string, serviceName string, opid string, options *OpenIDConnectProviderGetOptions) (OpenIDConnectProviderGetResponse, error) {
175	req, err := client.getCreateRequest(ctx, resourceGroupName, serviceName, opid, options)
176	if err != nil {
177		return OpenIDConnectProviderGetResponse{}, err
178	}
179	resp, err := client.con.Pipeline().Do(req)
180	if err != nil {
181		return OpenIDConnectProviderGetResponse{}, err
182	}
183	if !resp.HasStatusCode(http.StatusOK) {
184		return OpenIDConnectProviderGetResponse{}, client.getHandleError(resp)
185	}
186	return client.getHandleResponse(resp)
187}
188
189// getCreateRequest creates the Get request.
190func (client *OpenIDConnectProviderClient) getCreateRequest(ctx context.Context, resourceGroupName string, serviceName string, opid string, options *OpenIDConnectProviderGetOptions) (*azcore.Request, error) {
191	urlPath := "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/openidConnectProviders/{opid}"
192	if resourceGroupName == "" {
193		return nil, errors.New("parameter resourceGroupName cannot be empty")
194	}
195	urlPath = strings.ReplaceAll(urlPath, "{resourceGroupName}", url.PathEscape(resourceGroupName))
196	if serviceName == "" {
197		return nil, errors.New("parameter serviceName cannot be empty")
198	}
199	urlPath = strings.ReplaceAll(urlPath, "{serviceName}", url.PathEscape(serviceName))
200	if opid == "" {
201		return nil, errors.New("parameter opid cannot be empty")
202	}
203	urlPath = strings.ReplaceAll(urlPath, "{opid}", url.PathEscape(opid))
204	if client.subscriptionID == "" {
205		return nil, errors.New("parameter client.subscriptionID cannot be empty")
206	}
207	urlPath = strings.ReplaceAll(urlPath, "{subscriptionId}", url.PathEscape(client.subscriptionID))
208	req, err := azcore.NewRequest(ctx, http.MethodGet, azcore.JoinPaths(client.con.Endpoint(), urlPath))
209	if err != nil {
210		return nil, err
211	}
212	req.Telemetry(telemetryInfo)
213	reqQP := req.URL.Query()
214	reqQP.Set("api-version", "2020-12-01")
215	req.URL.RawQuery = reqQP.Encode()
216	req.Header.Set("Accept", "application/json")
217	return req, nil
218}
219
220// getHandleResponse handles the Get response.
221func (client *OpenIDConnectProviderClient) getHandleResponse(resp *azcore.Response) (OpenIDConnectProviderGetResponse, error) {
222	result := OpenIDConnectProviderGetResponse{RawResponse: resp.Response}
223	if val := resp.Header.Get("ETag"); val != "" {
224		result.ETag = &val
225	}
226	if err := resp.UnmarshalAsJSON(&result.OpenidConnectProviderContract); err != nil {
227		return OpenIDConnectProviderGetResponse{}, err
228	}
229	return result, nil
230}
231
232// getHandleError handles the Get error response.
233func (client *OpenIDConnectProviderClient) getHandleError(resp *azcore.Response) error {
234	body, err := resp.Payload()
235	if err != nil {
236		return azcore.NewResponseError(err, resp.Response)
237	}
238	errType := ErrorResponse{raw: string(body)}
239	if err := resp.UnmarshalAsJSON(&errType.InnerError); err != nil {
240		return azcore.NewResponseError(fmt.Errorf("%s\n%s", string(body), err), resp.Response)
241	}
242	return azcore.NewResponseError(&errType, resp.Response)
243}
244
245// GetEntityTag - Gets the entity state (Etag) version of the openIdConnectProvider specified by its identifier.
246// If the operation fails it returns the *ErrorResponse error type.
247func (client *OpenIDConnectProviderClient) GetEntityTag(ctx context.Context, resourceGroupName string, serviceName string, opid string, options *OpenIDConnectProviderGetEntityTagOptions) (OpenIDConnectProviderGetEntityTagResponse, error) {
248	req, err := client.getEntityTagCreateRequest(ctx, resourceGroupName, serviceName, opid, options)
249	if err != nil {
250		return OpenIDConnectProviderGetEntityTagResponse{}, err
251	}
252	resp, err := client.con.Pipeline().Do(req)
253	if err != nil {
254		return OpenIDConnectProviderGetEntityTagResponse{}, err
255	}
256	return client.getEntityTagHandleResponse(resp)
257}
258
259// getEntityTagCreateRequest creates the GetEntityTag request.
260func (client *OpenIDConnectProviderClient) getEntityTagCreateRequest(ctx context.Context, resourceGroupName string, serviceName string, opid string, options *OpenIDConnectProviderGetEntityTagOptions) (*azcore.Request, error) {
261	urlPath := "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/openidConnectProviders/{opid}"
262	if resourceGroupName == "" {
263		return nil, errors.New("parameter resourceGroupName cannot be empty")
264	}
265	urlPath = strings.ReplaceAll(urlPath, "{resourceGroupName}", url.PathEscape(resourceGroupName))
266	if serviceName == "" {
267		return nil, errors.New("parameter serviceName cannot be empty")
268	}
269	urlPath = strings.ReplaceAll(urlPath, "{serviceName}", url.PathEscape(serviceName))
270	if opid == "" {
271		return nil, errors.New("parameter opid cannot be empty")
272	}
273	urlPath = strings.ReplaceAll(urlPath, "{opid}", url.PathEscape(opid))
274	if client.subscriptionID == "" {
275		return nil, errors.New("parameter client.subscriptionID cannot be empty")
276	}
277	urlPath = strings.ReplaceAll(urlPath, "{subscriptionId}", url.PathEscape(client.subscriptionID))
278	req, err := azcore.NewRequest(ctx, http.MethodHead, azcore.JoinPaths(client.con.Endpoint(), urlPath))
279	if err != nil {
280		return nil, err
281	}
282	req.Telemetry(telemetryInfo)
283	reqQP := req.URL.Query()
284	reqQP.Set("api-version", "2020-12-01")
285	req.URL.RawQuery = reqQP.Encode()
286	req.Header.Set("Accept", "application/json")
287	return req, nil
288}
289
290// getEntityTagHandleResponse handles the GetEntityTag response.
291func (client *OpenIDConnectProviderClient) getEntityTagHandleResponse(resp *azcore.Response) (OpenIDConnectProviderGetEntityTagResponse, error) {
292	result := OpenIDConnectProviderGetEntityTagResponse{RawResponse: resp.Response}
293	if val := resp.Header.Get("ETag"); val != "" {
294		result.ETag = &val
295	}
296	if resp.StatusCode >= 200 && resp.StatusCode < 300 {
297		result.Success = true
298	}
299	return result, nil
300}
301
302// ListByService - Lists of all the OpenId Connect Providers.
303// If the operation fails it returns the *ErrorResponse error type.
304func (client *OpenIDConnectProviderClient) ListByService(resourceGroupName string, serviceName string, options *OpenIDConnectProviderListByServiceOptions) OpenIDConnectProviderListByServicePager {
305	return &openIDConnectProviderListByServicePager{
306		client: client,
307		requester: func(ctx context.Context) (*azcore.Request, error) {
308			return client.listByServiceCreateRequest(ctx, resourceGroupName, serviceName, options)
309		},
310		advancer: func(ctx context.Context, resp OpenIDConnectProviderListByServiceResponse) (*azcore.Request, error) {
311			return azcore.NewRequest(ctx, http.MethodGet, *resp.OpenIDConnectProviderCollection.NextLink)
312		},
313	}
314}
315
316// listByServiceCreateRequest creates the ListByService request.
317func (client *OpenIDConnectProviderClient) listByServiceCreateRequest(ctx context.Context, resourceGroupName string, serviceName string, options *OpenIDConnectProviderListByServiceOptions) (*azcore.Request, error) {
318	urlPath := "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/openidConnectProviders"
319	if resourceGroupName == "" {
320		return nil, errors.New("parameter resourceGroupName cannot be empty")
321	}
322	urlPath = strings.ReplaceAll(urlPath, "{resourceGroupName}", url.PathEscape(resourceGroupName))
323	if serviceName == "" {
324		return nil, errors.New("parameter serviceName cannot be empty")
325	}
326	urlPath = strings.ReplaceAll(urlPath, "{serviceName}", url.PathEscape(serviceName))
327	if client.subscriptionID == "" {
328		return nil, errors.New("parameter client.subscriptionID cannot be empty")
329	}
330	urlPath = strings.ReplaceAll(urlPath, "{subscriptionId}", url.PathEscape(client.subscriptionID))
331	req, err := azcore.NewRequest(ctx, http.MethodGet, azcore.JoinPaths(client.con.Endpoint(), urlPath))
332	if err != nil {
333		return nil, err
334	}
335	req.Telemetry(telemetryInfo)
336	reqQP := req.URL.Query()
337	if options != nil && options.Filter != nil {
338		reqQP.Set("$filter", *options.Filter)
339	}
340	if options != nil && options.Top != nil {
341		reqQP.Set("$top", strconv.FormatInt(int64(*options.Top), 10))
342	}
343	if options != nil && options.Skip != nil {
344		reqQP.Set("$skip", strconv.FormatInt(int64(*options.Skip), 10))
345	}
346	reqQP.Set("api-version", "2020-12-01")
347	req.URL.RawQuery = reqQP.Encode()
348	req.Header.Set("Accept", "application/json")
349	return req, nil
350}
351
352// listByServiceHandleResponse handles the ListByService response.
353func (client *OpenIDConnectProviderClient) listByServiceHandleResponse(resp *azcore.Response) (OpenIDConnectProviderListByServiceResponse, error) {
354	result := OpenIDConnectProviderListByServiceResponse{RawResponse: resp.Response}
355	if err := resp.UnmarshalAsJSON(&result.OpenIDConnectProviderCollection); err != nil {
356		return OpenIDConnectProviderListByServiceResponse{}, err
357	}
358	return result, nil
359}
360
361// listByServiceHandleError handles the ListByService error response.
362func (client *OpenIDConnectProviderClient) listByServiceHandleError(resp *azcore.Response) error {
363	body, err := resp.Payload()
364	if err != nil {
365		return azcore.NewResponseError(err, resp.Response)
366	}
367	errType := ErrorResponse{raw: string(body)}
368	if err := resp.UnmarshalAsJSON(&errType.InnerError); err != nil {
369		return azcore.NewResponseError(fmt.Errorf("%s\n%s", string(body), err), resp.Response)
370	}
371	return azcore.NewResponseError(&errType, resp.Response)
372}
373
374// ListSecrets - Gets the client secret details of the OpenID Connect Provider.
375// If the operation fails it returns the *ErrorResponse error type.
376func (client *OpenIDConnectProviderClient) ListSecrets(ctx context.Context, resourceGroupName string, serviceName string, opid string, options *OpenIDConnectProviderListSecretsOptions) (OpenIDConnectProviderListSecretsResponse, error) {
377	req, err := client.listSecretsCreateRequest(ctx, resourceGroupName, serviceName, opid, options)
378	if err != nil {
379		return OpenIDConnectProviderListSecretsResponse{}, err
380	}
381	resp, err := client.con.Pipeline().Do(req)
382	if err != nil {
383		return OpenIDConnectProviderListSecretsResponse{}, err
384	}
385	if !resp.HasStatusCode(http.StatusOK) {
386		return OpenIDConnectProviderListSecretsResponse{}, client.listSecretsHandleError(resp)
387	}
388	return client.listSecretsHandleResponse(resp)
389}
390
391// listSecretsCreateRequest creates the ListSecrets request.
392func (client *OpenIDConnectProviderClient) listSecretsCreateRequest(ctx context.Context, resourceGroupName string, serviceName string, opid string, options *OpenIDConnectProviderListSecretsOptions) (*azcore.Request, error) {
393	urlPath := "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/openidConnectProviders/{opid}/listSecrets"
394	if resourceGroupName == "" {
395		return nil, errors.New("parameter resourceGroupName cannot be empty")
396	}
397	urlPath = strings.ReplaceAll(urlPath, "{resourceGroupName}", url.PathEscape(resourceGroupName))
398	if serviceName == "" {
399		return nil, errors.New("parameter serviceName cannot be empty")
400	}
401	urlPath = strings.ReplaceAll(urlPath, "{serviceName}", url.PathEscape(serviceName))
402	if opid == "" {
403		return nil, errors.New("parameter opid cannot be empty")
404	}
405	urlPath = strings.ReplaceAll(urlPath, "{opid}", url.PathEscape(opid))
406	if client.subscriptionID == "" {
407		return nil, errors.New("parameter client.subscriptionID cannot be empty")
408	}
409	urlPath = strings.ReplaceAll(urlPath, "{subscriptionId}", url.PathEscape(client.subscriptionID))
410	req, err := azcore.NewRequest(ctx, http.MethodPost, azcore.JoinPaths(client.con.Endpoint(), urlPath))
411	if err != nil {
412		return nil, err
413	}
414	req.Telemetry(telemetryInfo)
415	reqQP := req.URL.Query()
416	reqQP.Set("api-version", "2020-12-01")
417	req.URL.RawQuery = reqQP.Encode()
418	req.Header.Set("Accept", "application/json")
419	return req, nil
420}
421
422// listSecretsHandleResponse handles the ListSecrets response.
423func (client *OpenIDConnectProviderClient) listSecretsHandleResponse(resp *azcore.Response) (OpenIDConnectProviderListSecretsResponse, error) {
424	result := OpenIDConnectProviderListSecretsResponse{RawResponse: resp.Response}
425	if val := resp.Header.Get("ETag"); val != "" {
426		result.ETag = &val
427	}
428	if err := resp.UnmarshalAsJSON(&result.ClientSecretContract); err != nil {
429		return OpenIDConnectProviderListSecretsResponse{}, err
430	}
431	return result, nil
432}
433
434// listSecretsHandleError handles the ListSecrets error response.
435func (client *OpenIDConnectProviderClient) listSecretsHandleError(resp *azcore.Response) error {
436	body, err := resp.Payload()
437	if err != nil {
438		return azcore.NewResponseError(err, resp.Response)
439	}
440	errType := ErrorResponse{raw: string(body)}
441	if err := resp.UnmarshalAsJSON(&errType.InnerError); err != nil {
442		return azcore.NewResponseError(fmt.Errorf("%s\n%s", string(body), err), resp.Response)
443	}
444	return azcore.NewResponseError(&errType, resp.Response)
445}
446
447// Update - Updates the specific OpenID Connect Provider.
448// If the operation fails it returns the *ErrorResponse error type.
449func (client *OpenIDConnectProviderClient) Update(ctx context.Context, resourceGroupName string, serviceName string, opid string, ifMatch string, parameters OpenidConnectProviderUpdateContract, options *OpenIDConnectProviderUpdateOptions) (OpenIDConnectProviderUpdateResponse, error) {
450	req, err := client.updateCreateRequest(ctx, resourceGroupName, serviceName, opid, ifMatch, parameters, options)
451	if err != nil {
452		return OpenIDConnectProviderUpdateResponse{}, err
453	}
454	resp, err := client.con.Pipeline().Do(req)
455	if err != nil {
456		return OpenIDConnectProviderUpdateResponse{}, err
457	}
458	if !resp.HasStatusCode(http.StatusOK) {
459		return OpenIDConnectProviderUpdateResponse{}, client.updateHandleError(resp)
460	}
461	return client.updateHandleResponse(resp)
462}
463
464// updateCreateRequest creates the Update request.
465func (client *OpenIDConnectProviderClient) updateCreateRequest(ctx context.Context, resourceGroupName string, serviceName string, opid string, ifMatch string, parameters OpenidConnectProviderUpdateContract, options *OpenIDConnectProviderUpdateOptions) (*azcore.Request, error) {
466	urlPath := "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/openidConnectProviders/{opid}"
467	if resourceGroupName == "" {
468		return nil, errors.New("parameter resourceGroupName cannot be empty")
469	}
470	urlPath = strings.ReplaceAll(urlPath, "{resourceGroupName}", url.PathEscape(resourceGroupName))
471	if serviceName == "" {
472		return nil, errors.New("parameter serviceName cannot be empty")
473	}
474	urlPath = strings.ReplaceAll(urlPath, "{serviceName}", url.PathEscape(serviceName))
475	if opid == "" {
476		return nil, errors.New("parameter opid cannot be empty")
477	}
478	urlPath = strings.ReplaceAll(urlPath, "{opid}", url.PathEscape(opid))
479	if client.subscriptionID == "" {
480		return nil, errors.New("parameter client.subscriptionID cannot be empty")
481	}
482	urlPath = strings.ReplaceAll(urlPath, "{subscriptionId}", url.PathEscape(client.subscriptionID))
483	req, err := azcore.NewRequest(ctx, http.MethodPatch, azcore.JoinPaths(client.con.Endpoint(), urlPath))
484	if err != nil {
485		return nil, err
486	}
487	req.Telemetry(telemetryInfo)
488	reqQP := req.URL.Query()
489	reqQP.Set("api-version", "2020-12-01")
490	req.URL.RawQuery = reqQP.Encode()
491	req.Header.Set("If-Match", ifMatch)
492	req.Header.Set("Accept", "application/json")
493	return req, req.MarshalAsJSON(parameters)
494}
495
496// updateHandleResponse handles the Update response.
497func (client *OpenIDConnectProviderClient) updateHandleResponse(resp *azcore.Response) (OpenIDConnectProviderUpdateResponse, error) {
498	result := OpenIDConnectProviderUpdateResponse{RawResponse: resp.Response}
499	if val := resp.Header.Get("ETag"); val != "" {
500		result.ETag = &val
501	}
502	if err := resp.UnmarshalAsJSON(&result.OpenidConnectProviderContract); err != nil {
503		return OpenIDConnectProviderUpdateResponse{}, err
504	}
505	return result, nil
506}
507
508// updateHandleError handles the Update error response.
509func (client *OpenIDConnectProviderClient) updateHandleError(resp *azcore.Response) error {
510	body, err := resp.Payload()
511	if err != nil {
512		return azcore.NewResponseError(err, resp.Response)
513	}
514	errType := ErrorResponse{raw: string(body)}
515	if err := resp.UnmarshalAsJSON(&errType.InnerError); err != nil {
516		return azcore.NewResponseError(fmt.Errorf("%s\n%s", string(body), err), resp.Response)
517	}
518	return azcore.NewResponseError(&errType, resp.Response)
519}
520