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 azartifacts
9
10import (
11	"context"
12	"errors"
13	"github.com/Azure/azure-sdk-for-go/sdk/azcore"
14	"net/http"
15)
16
17// WorkspaceGitRepoManagementClient contains the methods for the WorkspaceGitRepoManagement group.
18// Don't use this type directly, use NewWorkspaceGitRepoManagementClient() instead.
19type WorkspaceGitRepoManagementClient struct {
20	con *Connection
21}
22
23// NewWorkspaceGitRepoManagementClient creates a new instance of WorkspaceGitRepoManagementClient with the specified values.
24func NewWorkspaceGitRepoManagementClient(con *Connection) *WorkspaceGitRepoManagementClient {
25	return &WorkspaceGitRepoManagementClient{con: con}
26}
27
28// GetGitHubAccessToken - Get the GitHub access token.
29// If the operation fails it returns a generic error.
30func (client *WorkspaceGitRepoManagementClient) GetGitHubAccessToken(ctx context.Context, gitHubAccessTokenRequest GitHubAccessTokenRequest, options *WorkspaceGitRepoManagementGetGitHubAccessTokenOptions) (GitHubAccessTokenResponseResponse, error) {
31	req, err := client.getGitHubAccessTokenCreateRequest(ctx, gitHubAccessTokenRequest, options)
32	if err != nil {
33		return GitHubAccessTokenResponseResponse{}, err
34	}
35	resp, err := client.con.Pipeline().Do(req)
36	if err != nil {
37		return GitHubAccessTokenResponseResponse{}, err
38	}
39	if !resp.HasStatusCode(http.StatusOK) {
40		return GitHubAccessTokenResponseResponse{}, client.getGitHubAccessTokenHandleError(resp)
41	}
42	return client.getGitHubAccessTokenHandleResponse(resp)
43}
44
45// getGitHubAccessTokenCreateRequest creates the GetGitHubAccessToken request.
46func (client *WorkspaceGitRepoManagementClient) getGitHubAccessTokenCreateRequest(ctx context.Context, gitHubAccessTokenRequest GitHubAccessTokenRequest, options *WorkspaceGitRepoManagementGetGitHubAccessTokenOptions) (*azcore.Request, error) {
47	urlPath := "/getGitHubAccessToken"
48	req, err := azcore.NewRequest(ctx, http.MethodPost, azcore.JoinPaths(client.con.Endpoint(), urlPath))
49	if err != nil {
50		return nil, err
51	}
52	req.Telemetry(telemetryInfo)
53	reqQP := req.URL.Query()
54	reqQP.Set("api-version", "2019-06-01-preview")
55	req.URL.RawQuery = reqQP.Encode()
56	if options != nil && options.ClientRequestID != nil {
57		req.Header.Set("x-ms-client-request-id", *options.ClientRequestID)
58	}
59	req.Header.Set("Accept", "application/json")
60	return req, req.MarshalAsJSON(gitHubAccessTokenRequest)
61}
62
63// getGitHubAccessTokenHandleResponse handles the GetGitHubAccessToken response.
64func (client *WorkspaceGitRepoManagementClient) getGitHubAccessTokenHandleResponse(resp *azcore.Response) (GitHubAccessTokenResponseResponse, error) {
65	var val *GitHubAccessTokenResponse
66	if err := resp.UnmarshalAsJSON(&val); err != nil {
67		return GitHubAccessTokenResponseResponse{}, err
68	}
69	return GitHubAccessTokenResponseResponse{RawResponse: resp.Response, GitHubAccessTokenResponse: val}, nil
70}
71
72// getGitHubAccessTokenHandleError handles the GetGitHubAccessToken error response.
73func (client *WorkspaceGitRepoManagementClient) getGitHubAccessTokenHandleError(resp *azcore.Response) error {
74	body, err := resp.Payload()
75	if err != nil {
76		return azcore.NewResponseError(err, resp.Response)
77	}
78	if len(body) == 0 {
79		return azcore.NewResponseError(errors.New(resp.Status), resp.Response)
80	}
81	return azcore.NewResponseError(errors.New(string(body)), resp.Response)
82}
83