1package artifacts
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//
6// Code generated by Microsoft (R) AutoRest Code Generator.
7// Changes may cause incorrect behavior and will be lost if the code is regenerated.
8
9import (
10	"context"
11	"github.com/Azure/go-autorest/autorest"
12	"github.com/Azure/go-autorest/autorest/azure"
13	"github.com/Azure/go-autorest/autorest/validation"
14	"github.com/Azure/go-autorest/tracing"
15	"net/http"
16)
17
18// WorkspaceGitRepoManagementClient is the client for the WorkspaceGitRepoManagement methods of the Artifacts service.
19type WorkspaceGitRepoManagementClient struct {
20	BaseClient
21}
22
23// NewWorkspaceGitRepoManagementClient creates an instance of the WorkspaceGitRepoManagementClient client.
24func NewWorkspaceGitRepoManagementClient(endpoint string) WorkspaceGitRepoManagementClient {
25	return WorkspaceGitRepoManagementClient{New(endpoint)}
26}
27
28// GetGitHubAccessToken get the GitHub access token.
29// Parameters:
30// clientRequestID - can provide a guid, which is helpful for debugging and to provide better customer support
31func (client WorkspaceGitRepoManagementClient) GetGitHubAccessToken(ctx context.Context, APIVersion string, gitHubAccessTokenRequest GitHubAccessTokenRequest, clientRequestID string) (result GitHubAccessTokenResponse, err error) {
32	if tracing.IsEnabled() {
33		ctx = tracing.StartSpan(ctx, fqdn+"/WorkspaceGitRepoManagementClient.GetGitHubAccessToken")
34		defer func() {
35			sc := -1
36			if result.Response.Response != nil {
37				sc = result.Response.Response.StatusCode
38			}
39			tracing.EndSpan(ctx, sc, err)
40		}()
41	}
42	if err := validation.Validate([]validation.Validation{
43		{TargetValue: gitHubAccessTokenRequest,
44			Constraints: []validation.Constraint{{Target: "gitHubAccessTokenRequest.GitHubClientID", Name: validation.Null, Rule: true, Chain: nil},
45				{Target: "gitHubAccessTokenRequest.GitHubAccessCode", Name: validation.Null, Rule: true, Chain: nil},
46				{Target: "gitHubAccessTokenRequest.GitHubAccessTokenBaseURL", Name: validation.Null, Rule: true, Chain: nil}}}}); err != nil {
47		return result, validation.NewError("artifacts.WorkspaceGitRepoManagementClient", "GetGitHubAccessToken", err.Error())
48	}
49
50	req, err := client.GetGitHubAccessTokenPreparer(ctx, APIVersion, gitHubAccessTokenRequest, clientRequestID)
51	if err != nil {
52		err = autorest.NewErrorWithError(err, "artifacts.WorkspaceGitRepoManagementClient", "GetGitHubAccessToken", nil, "Failure preparing request")
53		return
54	}
55
56	resp, err := client.GetGitHubAccessTokenSender(req)
57	if err != nil {
58		result.Response = autorest.Response{Response: resp}
59		err = autorest.NewErrorWithError(err, "artifacts.WorkspaceGitRepoManagementClient", "GetGitHubAccessToken", resp, "Failure sending request")
60		return
61	}
62
63	result, err = client.GetGitHubAccessTokenResponder(resp)
64	if err != nil {
65		err = autorest.NewErrorWithError(err, "artifacts.WorkspaceGitRepoManagementClient", "GetGitHubAccessToken", resp, "Failure responding to request")
66		return
67	}
68
69	return
70}
71
72// GetGitHubAccessTokenPreparer prepares the GetGitHubAccessToken request.
73func (client WorkspaceGitRepoManagementClient) GetGitHubAccessTokenPreparer(ctx context.Context, APIVersion string, gitHubAccessTokenRequest GitHubAccessTokenRequest, clientRequestID string) (*http.Request, error) {
74	urlParameters := map[string]interface{}{
75		"endpoint": client.Endpoint,
76	}
77
78	queryParameters := map[string]interface{}{
79		"api-version": APIVersion,
80	}
81
82	preparer := autorest.CreatePreparer(
83		autorest.AsContentType("application/json; charset=utf-8"),
84		autorest.AsPost(),
85		autorest.WithCustomBaseURL("{endpoint}", urlParameters),
86		autorest.WithPath("/getGitHubAccessToken"),
87		autorest.WithJSON(gitHubAccessTokenRequest),
88		autorest.WithQueryParameters(queryParameters))
89	if len(clientRequestID) > 0 {
90		preparer = autorest.DecoratePreparer(preparer,
91			autorest.WithHeader("x-ms-client-request-id", autorest.String(clientRequestID)))
92	}
93	return preparer.Prepare((&http.Request{}).WithContext(ctx))
94}
95
96// GetGitHubAccessTokenSender sends the GetGitHubAccessToken request. The method will close the
97// http.Response Body if it receives an error.
98func (client WorkspaceGitRepoManagementClient) GetGitHubAccessTokenSender(req *http.Request) (*http.Response, error) {
99	return client.Send(req, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
100}
101
102// GetGitHubAccessTokenResponder handles the response to the GetGitHubAccessToken request. The method always
103// closes the http.Response Body.
104func (client WorkspaceGitRepoManagementClient) GetGitHubAccessTokenResponder(resp *http.Response) (result GitHubAccessTokenResponse, err error) {
105	err = autorest.Respond(
106		resp,
107		azure.WithErrorUnlessStatusCode(http.StatusOK),
108		autorest.ByUnmarshallingJSON(&result),
109		autorest.ByClosing())
110	result.Response = autorest.Response{Response: resp}
111	return
112}
113