From 0c8d92e38a6b35ce26dcac2cdd5e0e966716a259 Mon Sep 17 00:00:00 2001 From: xwzQmxx <1499273991@qq.com> Date: Tue, 23 Mar 2021 15:02:19 +0800 Subject: [PATCH] add replace issue and pr labels --- gitee/api_labels.go | 8 +-- gitee/api_pull_requests.go | 106 +++++++++++++++++++++++++++++++++++++ go.mod | 1 + test/api_test.go | 49 +++++++++++++++++ 4 files changed, 160 insertions(+), 4 deletions(-) create mode 100644 test/api_test.go diff --git a/gitee/api_labels.go b/gitee/api_labels.go index 4ccaf8d..88d1b1f 100644 --- a/gitee/api_labels.go +++ b/gitee/api_labels.go @@ -1116,13 +1116,13 @@ type PutV5ReposOwnerRepoIssuesNumberLabelsOpts struct { Body optional.Interface } -func (a *LabelsApiService) PutV5ReposOwnerRepoIssuesNumberLabels(ctx context.Context, owner string, repo string, number string, localVarOptionals *PutV5ReposOwnerRepoIssuesNumberLabelsOpts) (Label, *http.Response, error) { +func (a *LabelsApiService) PutV5ReposOwnerRepoIssuesNumberLabels(ctx context.Context, owner string, repo string, number string, localVarOptionals *PutV5ReposOwnerRepoIssuesNumberLabelsOpts) ([]Label, *http.Response, error) { var ( localVarHttpMethod = strings.ToUpper("Put") localVarPostBody interface{} localVarFileName string localVarFileBytes []byte - localVarReturnValue Label + localVarReturnValue []Label ) // create path and map variables @@ -1156,7 +1156,7 @@ func (a *LabelsApiService) PutV5ReposOwnerRepoIssuesNumberLabels(ctx context.Con localVarFormParams.Add("access_token", parameterToString(localVarOptionals.AccessToken.Value(), "")) } if localVarOptionals != nil && localVarOptionals.Body.IsSet() { - localVarFormParams.Add("body", parameterToString(localVarOptionals.Body.Value(), "multi")) + localVarPostBody = localVarOptionals.Body.Value() } r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes) if err != nil { @@ -1189,7 +1189,7 @@ func (a *LabelsApiService) PutV5ReposOwnerRepoIssuesNumberLabels(ctx context.Con } if localVarHttpResponse.StatusCode == 200 { - var v Label + var v []Label err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) if err != nil { newErr.error = err.Error() diff --git a/gitee/api_pull_requests.go b/gitee/api_pull_requests.go index ed39bf9..9609b61 100644 --- a/gitee/api_pull_requests.go +++ b/gitee/api_pull_requests.go @@ -2373,3 +2373,109 @@ func (a *PullRequestsApiService) PutV5ReposOwnerRepoPullsNumberMerge(ctx context return localVarHttpResponse, nil } + +type PutV5ReposOwnerRepoPullsNumberLabelsOpts struct { + AccessToken optional.String + Body optional.Interface +} + +/* +PullRequestsApiService 替换 Pull Request 标签 +合并Pull Request + * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + * @param owner 仓库所属空间地址(企业、组织或个人的地址path) + * @param repo 仓库路径(path) + * @param number 第几个PR,即本仓库PR的序数 + * @param body PullRequest 需替换的标签 + + +*/ +func (a *PullRequestsApiService) PutV5ReposOwnerRepoPullsNumberLabels(ctx context.Context, owner string, repo string, number int32, localVarOptionals *PutV5ReposOwnerRepoPullsNumberLabelsOpts) ([]Label, *http.Response, error) { + var ( + localVarHttpMethod = strings.ToUpper("Put") + localVarPostBody interface{} + localVarFileName string + localVarFileBytes []byte + localVarReturnValue []Label + ) + + // create path and map variables + localVarPath := a.client.cfg.BasePath + "/v5/repos/{owner}/{repo}/pulls/{number}/labels" + localVarPath = strings.Replace(localVarPath, "{"+"owner"+"}", fmt.Sprintf("%v", owner), -1) + localVarPath = strings.Replace(localVarPath, "{"+"repo"+"}", fmt.Sprintf("%v", repo), -1) + localVarPath = strings.Replace(localVarPath, "{"+"number"+"}", fmt.Sprintf("%v", number), -1) + + localVarHeaderParams := make(map[string]string) + localVarQueryParams := url.Values{} + localVarFormParams := url.Values{} + + // to determine the Content-Type header + localVarHttpContentTypes := []string{"application/json", "multipart/form-data"} + + // set Content-Type header + localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes) + if localVarHttpContentType != "" { + localVarHeaderParams["Content-Type"] = localVarHttpContentType + } + + // to determine the Accept header + localVarHttpHeaderAccepts := []string{"application/json"} + + // set Accept header + localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts) + if localVarHttpHeaderAccept != "" { + localVarHeaderParams["Accept"] = localVarHttpHeaderAccept + } + if localVarOptionals != nil && localVarOptionals.AccessToken.IsSet() { + localVarFormParams.Add("access_token", parameterToString(localVarOptionals.AccessToken.Value(), "")) + } + + if localVarOptionals != nil && localVarOptionals.Body.IsSet() { + localVarPostBody = localVarOptionals.Body.Value() + } + r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes) + if err != nil { + return localVarReturnValue, nil, err + } + + localVarHttpResponse, err := a.client.callAPI(r) + if err != nil || localVarHttpResponse == nil { + return localVarReturnValue, localVarHttpResponse, err + } + + localVarBody, err := ioutil.ReadAll(localVarHttpResponse.Body) + localVarHttpResponse.Body.Close() + if err != nil { + return localVarReturnValue, localVarHttpResponse, err + } + + if localVarHttpResponse.StatusCode < 300 { + // If we succeed, return the data, otherwise pass on to decode error. + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err == nil { + return localVarReturnValue, localVarHttpResponse, err + } + } + + if localVarHttpResponse.StatusCode >= 300 { + newErr := GenericSwaggerError{ + body: localVarBody, + error: localVarHttpResponse.Status, + } + + if localVarHttpResponse.StatusCode == 200 { + var v []Label + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHttpResponse, newErr + } + + return localVarReturnValue, localVarHttpResponse, newErr + } + + return localVarReturnValue, localVarHttpResponse, nil +} diff --git a/go.mod b/go.mod index 8c3813d..4212ac9 100644 --- a/go.mod +++ b/go.mod @@ -4,5 +4,6 @@ go 1.12 require ( github.com/antihax/optional v1.0.0 + golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45 ) diff --git a/test/api_test.go b/test/api_test.go new file mode 100644 index 0000000..816177d --- /dev/null +++ b/test/api_test.go @@ -0,0 +1,49 @@ +package test + +import ( + "gitee.com/openeuler/go-gitee/gitee" + "github.com/antihax/optional" + "golang.org/x/net/context" + "golang.org/x/oauth2" + "testing" +) + +var client *gitee.APIClient + +func init() { + token := "your gitee token" + + ts := oauth2.StaticTokenSource( + &oauth2.Token{AccessToken: token}, + ) + + conf := gitee.NewConfiguration() + conf.HTTPClient = oauth2.NewClient(context.Background(), ts) + + client = gitee.NewAPIClient(conf) +} + +func TestPutV5ReposOwnerRepoPullsNumberLabels(t *testing.T) { + op := &gitee.PutV5ReposOwnerRepoPullsNumberLabelsOpts{ + Body: optional.NewInterface([]string{"feature", "go-gitee-test"}), + } + labels, _, err := client.PullRequestsApi.PutV5ReposOwnerRepoPullsNumberLabels(context.Background(), "cve-manage-test", "phpp", 1, op) + if err != nil { + t.Error(err) + } else { + t.Log(labels) + } +} + +func TestPutV5ReposOwnerRepoIssuesNumberLabels(t *testing.T) { + op := &gitee.PutV5ReposOwnerRepoIssuesNumberLabelsOpts{ + Body: optional.NewInterface([]string{"feature", "go-gitee-test"}), + } + labels, _, err := client.LabelsApi.PutV5ReposOwnerRepoIssuesNumberLabels(context.Background(), "cve-manage-test", "config", "I3A2AO", op) + if err != nil { + t.Error(err) + } else { + t.Log(labels) + } + +} -- Gitee