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	"fmt"
14	"github.com/Azure/azure-sdk-for-go/sdk/azcore"
15	"net/http"
16	"net/url"
17	"strings"
18)
19
20// TriggerRunClient contains the methods for the TriggerRun group.
21// Don't use this type directly, use NewTriggerRunClient() instead.
22type TriggerRunClient struct {
23	con *Connection
24}
25
26// NewTriggerRunClient creates a new instance of TriggerRunClient with the specified values.
27func NewTriggerRunClient(con *Connection) *TriggerRunClient {
28	return &TriggerRunClient{con: con}
29}
30
31// CancelTriggerInstance - Cancel single trigger instance by runId.
32// If the operation fails it returns the *CloudError error type.
33func (client *TriggerRunClient) CancelTriggerInstance(ctx context.Context, triggerName string, runID string, options *TriggerRunCancelTriggerInstanceOptions) (*http.Response, error) {
34	req, err := client.cancelTriggerInstanceCreateRequest(ctx, triggerName, runID, options)
35	if err != nil {
36		return nil, err
37	}
38	resp, err := client.con.Pipeline().Do(req)
39	if err != nil {
40		return nil, err
41	}
42	if !resp.HasStatusCode(http.StatusOK) {
43		return nil, client.cancelTriggerInstanceHandleError(resp)
44	}
45	return resp.Response, nil
46}
47
48// cancelTriggerInstanceCreateRequest creates the CancelTriggerInstance request.
49func (client *TriggerRunClient) cancelTriggerInstanceCreateRequest(ctx context.Context, triggerName string, runID string, options *TriggerRunCancelTriggerInstanceOptions) (*azcore.Request, error) {
50	urlPath := "/triggers/{triggerName}/triggerRuns/{runId}/cancel"
51	if triggerName == "" {
52		return nil, errors.New("parameter triggerName cannot be empty")
53	}
54	urlPath = strings.ReplaceAll(urlPath, "{triggerName}", url.PathEscape(triggerName))
55	if runID == "" {
56		return nil, errors.New("parameter runID cannot be empty")
57	}
58	urlPath = strings.ReplaceAll(urlPath, "{runId}", url.PathEscape(runID))
59	req, err := azcore.NewRequest(ctx, http.MethodPost, azcore.JoinPaths(client.con.Endpoint(), urlPath))
60	if err != nil {
61		return nil, err
62	}
63	req.Telemetry(telemetryInfo)
64	reqQP := req.URL.Query()
65	reqQP.Set("api-version", "2019-06-01-preview")
66	req.URL.RawQuery = reqQP.Encode()
67	req.Header.Set("Accept", "application/json")
68	return req, nil
69}
70
71// cancelTriggerInstanceHandleError handles the CancelTriggerInstance error response.
72func (client *TriggerRunClient) cancelTriggerInstanceHandleError(resp *azcore.Response) error {
73	body, err := resp.Payload()
74	if err != nil {
75		return azcore.NewResponseError(err, resp.Response)
76	}
77	errType := CloudError{raw: string(body)}
78	if err := resp.UnmarshalAsJSON(&errType.InnerError); err != nil {
79		return azcore.NewResponseError(fmt.Errorf("%s\n%s", string(body), err), resp.Response)
80	}
81	return azcore.NewResponseError(&errType, resp.Response)
82}
83
84// QueryTriggerRunsByWorkspace - Query trigger runs.
85// If the operation fails it returns the *CloudError error type.
86func (client *TriggerRunClient) QueryTriggerRunsByWorkspace(ctx context.Context, filterParameters RunFilterParameters, options *TriggerRunQueryTriggerRunsByWorkspaceOptions) (TriggerRunsQueryResponseResponse, error) {
87	req, err := client.queryTriggerRunsByWorkspaceCreateRequest(ctx, filterParameters, options)
88	if err != nil {
89		return TriggerRunsQueryResponseResponse{}, err
90	}
91	resp, err := client.con.Pipeline().Do(req)
92	if err != nil {
93		return TriggerRunsQueryResponseResponse{}, err
94	}
95	if !resp.HasStatusCode(http.StatusOK) {
96		return TriggerRunsQueryResponseResponse{}, client.queryTriggerRunsByWorkspaceHandleError(resp)
97	}
98	return client.queryTriggerRunsByWorkspaceHandleResponse(resp)
99}
100
101// queryTriggerRunsByWorkspaceCreateRequest creates the QueryTriggerRunsByWorkspace request.
102func (client *TriggerRunClient) queryTriggerRunsByWorkspaceCreateRequest(ctx context.Context, filterParameters RunFilterParameters, options *TriggerRunQueryTriggerRunsByWorkspaceOptions) (*azcore.Request, error) {
103	urlPath := "/queryTriggerRuns"
104	req, err := azcore.NewRequest(ctx, http.MethodPost, azcore.JoinPaths(client.con.Endpoint(), urlPath))
105	if err != nil {
106		return nil, err
107	}
108	req.Telemetry(telemetryInfo)
109	reqQP := req.URL.Query()
110	reqQP.Set("api-version", "2019-06-01-preview")
111	req.URL.RawQuery = reqQP.Encode()
112	req.Header.Set("Accept", "application/json")
113	return req, req.MarshalAsJSON(filterParameters)
114}
115
116// queryTriggerRunsByWorkspaceHandleResponse handles the QueryTriggerRunsByWorkspace response.
117func (client *TriggerRunClient) queryTriggerRunsByWorkspaceHandleResponse(resp *azcore.Response) (TriggerRunsQueryResponseResponse, error) {
118	var val *TriggerRunsQueryResponse
119	if err := resp.UnmarshalAsJSON(&val); err != nil {
120		return TriggerRunsQueryResponseResponse{}, err
121	}
122	return TriggerRunsQueryResponseResponse{RawResponse: resp.Response, TriggerRunsQueryResponse: val}, nil
123}
124
125// queryTriggerRunsByWorkspaceHandleError handles the QueryTriggerRunsByWorkspace error response.
126func (client *TriggerRunClient) queryTriggerRunsByWorkspaceHandleError(resp *azcore.Response) error {
127	body, err := resp.Payload()
128	if err != nil {
129		return azcore.NewResponseError(err, resp.Response)
130	}
131	errType := CloudError{raw: string(body)}
132	if err := resp.UnmarshalAsJSON(&errType.InnerError); err != nil {
133		return azcore.NewResponseError(fmt.Errorf("%s\n%s", string(body), err), resp.Response)
134	}
135	return azcore.NewResponseError(&errType, resp.Response)
136}
137
138// RerunTriggerInstance - Rerun single trigger instance by runId.
139// If the operation fails it returns the *CloudError error type.
140func (client *TriggerRunClient) RerunTriggerInstance(ctx context.Context, triggerName string, runID string, options *TriggerRunRerunTriggerInstanceOptions) (*http.Response, error) {
141	req, err := client.rerunTriggerInstanceCreateRequest(ctx, triggerName, runID, options)
142	if err != nil {
143		return nil, err
144	}
145	resp, err := client.con.Pipeline().Do(req)
146	if err != nil {
147		return nil, err
148	}
149	if !resp.HasStatusCode(http.StatusOK) {
150		return nil, client.rerunTriggerInstanceHandleError(resp)
151	}
152	return resp.Response, nil
153}
154
155// rerunTriggerInstanceCreateRequest creates the RerunTriggerInstance request.
156func (client *TriggerRunClient) rerunTriggerInstanceCreateRequest(ctx context.Context, triggerName string, runID string, options *TriggerRunRerunTriggerInstanceOptions) (*azcore.Request, error) {
157	urlPath := "/triggers/{triggerName}/triggerRuns/{runId}/rerun"
158	if triggerName == "" {
159		return nil, errors.New("parameter triggerName cannot be empty")
160	}
161	urlPath = strings.ReplaceAll(urlPath, "{triggerName}", url.PathEscape(triggerName))
162	if runID == "" {
163		return nil, errors.New("parameter runID cannot be empty")
164	}
165	urlPath = strings.ReplaceAll(urlPath, "{runId}", url.PathEscape(runID))
166	req, err := azcore.NewRequest(ctx, http.MethodPost, azcore.JoinPaths(client.con.Endpoint(), urlPath))
167	if err != nil {
168		return nil, err
169	}
170	req.Telemetry(telemetryInfo)
171	reqQP := req.URL.Query()
172	reqQP.Set("api-version", "2019-06-01-preview")
173	req.URL.RawQuery = reqQP.Encode()
174	req.Header.Set("Accept", "application/json")
175	return req, nil
176}
177
178// rerunTriggerInstanceHandleError handles the RerunTriggerInstance error response.
179func (client *TriggerRunClient) rerunTriggerInstanceHandleError(resp *azcore.Response) error {
180	body, err := resp.Payload()
181	if err != nil {
182		return azcore.NewResponseError(err, resp.Response)
183	}
184	errType := CloudError{raw: string(body)}
185	if err := resp.UnmarshalAsJSON(&errType.InnerError); err != nil {
186		return azcore.NewResponseError(fmt.Errorf("%s\n%s", string(body), err), resp.Response)
187	}
188	return azcore.NewResponseError(&errType, resp.Response)
189}
190