diff options
author | techknowlogick <techknowlogick@gitea.io> | 2022-01-14 18:16:05 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-01-14 18:16:05 -0500 |
commit | 84145e45c50130922fae9055535ab5ea0378e1d4 (patch) | |
tree | fce077a5ae462840bb876ace79aca42abab29ed7 /vendor/code.gitea.io | |
parent | 2b16ca7c773de278ba01f122dc6f9f43d7534c52 (diff) | |
download | gitea-84145e45c50130922fae9055535ab5ea0378e1d4.tar.gz gitea-84145e45c50130922fae9055535ab5ea0378e1d4.zip |
Remove golang vendored directory (#18277)
* rm go vendor
* fix drone yaml
* add to gitignore
Diffstat (limited to 'vendor/code.gitea.io')
74 files changed, 0 insertions, 7686 deletions
diff --git a/vendor/code.gitea.io/gitea-vet/.changelog.yml b/vendor/code.gitea.io/gitea-vet/.changelog.yml deleted file mode 100644 index b3e6446b71..0000000000 --- a/vendor/code.gitea.io/gitea-vet/.changelog.yml +++ /dev/null @@ -1,30 +0,0 @@ -# The full repository name -repo: gitea/gitea-vet - -# Service type (gitea or github) -service: gitea - -# Base URL for Gitea instance if using gitea service type (optional) -base-url: https://gitea.com - -# Changelog groups and which labeled PRs to add to each group -groups: - - - name: BREAKING - labels: - - breaking - - - name: FEATURES - labels: - - feature - - - name: BUGFIXES - labels: - - bug - - - name: ENHANCEMENTS - labels: - - enhancement - -# regex indicating which labels to skip for the changelog -skip-labels: skip-changelog|backport\/.+ diff --git a/vendor/code.gitea.io/gitea-vet/.drone.yml b/vendor/code.gitea.io/gitea-vet/.drone.yml deleted file mode 100644 index dd0fc13f9d..0000000000 --- a/vendor/code.gitea.io/gitea-vet/.drone.yml +++ /dev/null @@ -1,45 +0,0 @@ ---- -kind: pipeline -name: compliance - -platform: - os: linux - arch: arm64 - -trigger: - event: - - pull_request - -steps: - - name: check - pull: always - image: golang:1.14 - environment: - GOPROXY: https://goproxy.cn - commands: - - make build - - make lint - - make vet - ---- -kind: pipeline -name: build-master - -platform: - os: linux - arch: amd64 - -trigger: - branch: - - master - event: - - push - -steps: - - name: build - pull: always - image: techknowlogick/xgo:latest - environment: - GOPROXY: https://goproxy.cn - commands: - - make build
\ No newline at end of file diff --git a/vendor/code.gitea.io/gitea-vet/.gitignore b/vendor/code.gitea.io/gitea-vet/.gitignore deleted file mode 100644 index b89cc42a23..0000000000 --- a/vendor/code.gitea.io/gitea-vet/.gitignore +++ /dev/null @@ -1,5 +0,0 @@ -# GoLand -.idea/ - -# Binaries -/gitea-vet*
\ No newline at end of file diff --git a/vendor/code.gitea.io/gitea-vet/.golangci.yml b/vendor/code.gitea.io/gitea-vet/.golangci.yml deleted file mode 100644 index 704d99a1d3..0000000000 --- a/vendor/code.gitea.io/gitea-vet/.golangci.yml +++ /dev/null @@ -1,23 +0,0 @@ -linters: - enable: - - deadcode - - dogsled - - dupl - - errcheck - - gocognit - - goconst - - gocritic - - gocyclo - - gofmt - - golint - - gosimple - - govet - - maligned - - misspell - - prealloc - - staticcheck - - structcheck - - typecheck - - unparam - - unused - - varcheck
\ No newline at end of file diff --git a/vendor/code.gitea.io/gitea-vet/CHANGELOG.md b/vendor/code.gitea.io/gitea-vet/CHANGELOG.md deleted file mode 100644 index 295456bb6b..0000000000 --- a/vendor/code.gitea.io/gitea-vet/CHANGELOG.md +++ /dev/null @@ -1,11 +0,0 @@ -## [v0.2.1](https://gitea.com/gitea/gitea-vet/releases/tag/v0.2.1) - 2020-08-15 - -* BUGFIXES - * Split migration check to Deps and Imports (#9) - -## [0.2.0](https://gitea.com/gitea/gitea-vet/pulls?q=&type=all&state=closed&milestone=1272) - 2020-07-20 - -* FEATURES - * Add migrations check (#5) -* BUGFIXES - * Correct Import Paths (#6) diff --git a/vendor/code.gitea.io/gitea-vet/LICENSE b/vendor/code.gitea.io/gitea-vet/LICENSE deleted file mode 100644 index a39c526bbe..0000000000 --- a/vendor/code.gitea.io/gitea-vet/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2020 The Gitea Authors - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE.
\ No newline at end of file diff --git a/vendor/code.gitea.io/gitea-vet/Makefile b/vendor/code.gitea.io/gitea-vet/Makefile deleted file mode 100644 index e9c9f4f70c..0000000000 --- a/vendor/code.gitea.io/gitea-vet/Makefile +++ /dev/null @@ -1,22 +0,0 @@ -GO ?= go - -.PHONY: build -build: - $(GO) build - -.PHONY: fmt -fmt: - $(GO) fmt ./... - -.PHONY: vet -vet: build - $(GO) vet ./... - $(GO) vet -vettool=gitea-vet ./... - -.PHONY: lint -lint: - @hash golangci-lint > /dev/null 2>&1; if [ $$? -ne 0 ]; then \ - export BINARY="golangci-lint"; \ - curl -sfL https://install.goreleaser.com/github.com/golangci/golangci-lint.sh | sh -s -- -b $(shell $(GO) env GOPATH)/bin v1.24.0; \ - fi - golangci-lint run --timeout 5m
\ No newline at end of file diff --git a/vendor/code.gitea.io/gitea-vet/README.md b/vendor/code.gitea.io/gitea-vet/README.md deleted file mode 100644 index 5d3d09742b..0000000000 --- a/vendor/code.gitea.io/gitea-vet/README.md +++ /dev/null @@ -1,11 +0,0 @@ -# gitea-vet - -[![Build Status](https://drone.gitea.com/api/badges/gitea/gitea-vet/status.svg)](https://drone.gitea.com/gitea/gitea-vet) - -`go vet` tool for Gitea - -| Analyzer | Description | -|------------|-----------------------------------------------------------------------------| -| Imports | Checks for import sorting. stdlib->code.gitea.io->other | -| License | Checks file headers for some form of `Copyright...YYYY...Gitea/Gogs` | -| Migrations | Checks for black-listed packages in `code.gitea.io/gitea/models/migrations` | diff --git a/vendor/code.gitea.io/gitea-vet/checks/imports.go b/vendor/code.gitea.io/gitea-vet/checks/imports.go deleted file mode 100644 index 15563c8543..0000000000 --- a/vendor/code.gitea.io/gitea-vet/checks/imports.go +++ /dev/null @@ -1,46 +0,0 @@ -// Copyright 2020 The Gitea Authors. All rights reserved. -// Use of this source code is governed by a MIT-style -// license that can be found in the LICENSE file. - -package checks - -import ( - "strings" - - "golang.org/x/tools/go/analysis" -) - -var Imports = &analysis.Analyzer{ - Name: "imports", - Doc: "check for import order", - Run: runImports, -} - -func runImports(pass *analysis.Pass) (interface{}, error) { - for _, file := range pass.Files { - level := 0 - for _, im := range file.Imports { - var lvl int - val := im.Path.Value - switch { - case importHasPrefix(val, "code.gitea.io"): - lvl = 2 - case strings.Contains(val, "."): - lvl = 3 - default: - lvl = 1 - } - - if lvl < level { - pass.Reportf(file.Pos(), "Imports are sorted wrong") - break - } - level = lvl - } - } - return nil, nil -} - -func importHasPrefix(s, p string) bool { - return strings.HasPrefix(s, "\""+p) -} diff --git a/vendor/code.gitea.io/gitea-vet/checks/license.go b/vendor/code.gitea.io/gitea-vet/checks/license.go deleted file mode 100644 index a3ae04767b..0000000000 --- a/vendor/code.gitea.io/gitea-vet/checks/license.go +++ /dev/null @@ -1,73 +0,0 @@ -// Copyright 2020 The Gitea Authors. All rights reserved. -// Use of this source code is governed by a MIT-style -// license that can be found in the LICENSE file. - -package checks - -import ( - "regexp" - "strings" - - "golang.org/x/tools/go/analysis" -) - -var ( - header = regexp.MustCompile(`.*Copyright.*\d{4}.*(Gitea|Gogs)`) - goGenerate = "//go:generate" - buildTag = "// +build" -) - -var License = &analysis.Analyzer{ - Name: "license", - Doc: "check for a copyright header", - Run: runLicense, -} - -func runLicense(pass *analysis.Pass) (interface{}, error) { - for _, file := range pass.Files { - if len(file.Comments) == 0 { - pass.Reportf(file.Pos(), "Copyright not found") - continue - } - - if len(file.Comments[0].List) == 0 { - pass.Reportf(file.Pos(), "Copyright not found or wrong") - continue - } - - commentGroup := 0 - if strings.HasPrefix(file.Comments[0].List[0].Text, goGenerate) { - if len(file.Comments[0].List) > 1 { - pass.Reportf(file.Pos(), "Must be an empty line between the go:generate and the Copyright") - continue - } - commentGroup++ - } - - if strings.HasPrefix(file.Comments[0].List[0].Text, buildTag) { - commentGroup++ - } - - if len(file.Comments) < commentGroup+1 { - pass.Reportf(file.Pos(), "Copyright not found") - continue - } - - if len(file.Comments[commentGroup].List) < 1 { - pass.Reportf(file.Pos(), "Copyright not found or wrong") - continue - } - - var check bool - for _, comment := range file.Comments[commentGroup].List { - if header.MatchString(comment.Text) { - check = true - } - } - - if !check { - pass.Reportf(file.Pos(), "Copyright did not match check") - } - } - return nil, nil -} diff --git a/vendor/code.gitea.io/gitea-vet/checks/migrations.go b/vendor/code.gitea.io/gitea-vet/checks/migrations.go deleted file mode 100644 index e3fe570f75..0000000000 --- a/vendor/code.gitea.io/gitea-vet/checks/migrations.go +++ /dev/null @@ -1,77 +0,0 @@ -// Copyright 2020 The Gitea Authors. All rights reserved. -// Use of this source code is governed by a MIT-style -// license that can be found in the LICENSE file. - -package checks - -import ( - "errors" - "os/exec" - "strings" - - "golang.org/x/tools/go/analysis" -) - -var Migrations = &analysis.Analyzer{ - Name: "migrations", - Doc: "check migrations for black-listed packages.", - Run: checkMigrations, -} - -var ( - migrationDepBlockList = []string{ - "code.gitea.io/gitea/models", - } - migrationImpBlockList = []string{ - "code.gitea.io/gitea/modules/structs", - } -) - -func checkMigrations(pass *analysis.Pass) (interface{}, error) { - if !strings.EqualFold(pass.Pkg.Path(), "code.gitea.io/gitea/models/migrations") { - return nil, nil - } - - if _, err := exec.LookPath("go"); err != nil { - return nil, errors.New("go was not found in the PATH") - } - - depsCmd := exec.Command("go", "list", "-f", `{{join .Deps "\n"}}`, "code.gitea.io/gitea/models/migrations") - depsOut, err := depsCmd.Output() - if err != nil { - return nil, err - } - - deps := strings.Split(string(depsOut), "\n") - for _, dep := range deps { - if stringInSlice(dep, migrationDepBlockList) { - pass.Reportf(0, "code.gitea.io/gitea/models/migrations cannot depend on the following packages: %s", migrationDepBlockList) - return nil, nil - } - } - - impsCmd := exec.Command("go", "list", "-f", `{{join .Imports "\n"}}`, "code.gitea.io/gitea/models/migrations") - impsOut, err := impsCmd.Output() - if err != nil { - return nil, err - } - - imps := strings.Split(string(impsOut), "\n") - for _, imp := range imps { - if stringInSlice(imp, migrationImpBlockList) { - pass.Reportf(0, "code.gitea.io/gitea/models/migrations cannot import the following packages: %s", migrationImpBlockList) - return nil, nil - } - } - - return nil, nil -} - -func stringInSlice(needle string, haystack []string) bool { - for _, h := range haystack { - if strings.EqualFold(needle, h) { - return true - } - } - return false -} diff --git a/vendor/code.gitea.io/gitea-vet/go.mod b/vendor/code.gitea.io/gitea-vet/go.mod deleted file mode 100644 index ed0987cc61..0000000000 --- a/vendor/code.gitea.io/gitea-vet/go.mod +++ /dev/null @@ -1,5 +0,0 @@ -module code.gitea.io/gitea-vet - -go 1.14 - -require golang.org/x/tools v0.0.0-20200325010219-a49f79bcc224 diff --git a/vendor/code.gitea.io/gitea-vet/go.sum b/vendor/code.gitea.io/gitea-vet/go.sum deleted file mode 100644 index 5feddd059c..0000000000 --- a/vendor/code.gitea.io/gitea-vet/go.sum +++ /dev/null @@ -1,20 +0,0 @@ -github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/mod v0.2.0 h1:KU7oHjnv3XNWfa5COkzUifxZmxp1TyI7ImMXqFxLwvQ= -golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20200325010219-a49f79bcc224 h1:azwY/v0y0K4mFHVsg5+UrTgchqALYWpqVo6vL5OmkmI= -golang.org/x/tools v0.0.0-20200325010219-a49f79bcc224/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= -golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= diff --git a/vendor/code.gitea.io/gitea-vet/main.go b/vendor/code.gitea.io/gitea-vet/main.go deleted file mode 100644 index 4894055086..0000000000 --- a/vendor/code.gitea.io/gitea-vet/main.go +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2020 The Gitea Authors. All rights reserved. -// Use of this source code is governed by a MIT-style -// license that can be found in the LICENSE file. - -package main - -import ( - "code.gitea.io/gitea-vet/checks" - - "golang.org/x/tools/go/analysis/unitchecker" -) - -func main() { - unitchecker.Main( - checks.Imports, - checks.License, - checks.Migrations, - ) -} diff --git a/vendor/code.gitea.io/sdk/gitea/LICENSE b/vendor/code.gitea.io/sdk/gitea/LICENSE deleted file mode 100644 index 10aeba46bc..0000000000 --- a/vendor/code.gitea.io/sdk/gitea/LICENSE +++ /dev/null @@ -1,20 +0,0 @@ -Copyright (c) 2016 The Gitea Authors -Copyright (c) 2014 The Gogs Authors - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/vendor/code.gitea.io/sdk/gitea/admin_cron.go b/vendor/code.gitea.io/sdk/gitea/admin_cron.go deleted file mode 100644 index 84316da2b1..0000000000 --- a/vendor/code.gitea.io/sdk/gitea/admin_cron.go +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright 2020 The Gitea Authors. All rights reserved. -// Use of this source code is governed by a MIT-style -// license that can be found in the LICENSE file. - -package gitea - -import ( - "fmt" - "time" -) - -// CronTask represents a Cron task -type CronTask struct { - Name string `json:"name"` - Schedule string `json:"schedule"` - Next time.Time `json:"next"` - Prev time.Time `json:"prev"` - ExecTimes int64 `json:"exec_times"` -} - -// ListCronTaskOptions list options for ListCronTasks -type ListCronTaskOptions struct { - ListOptions -} - -// ListCronTasks list available cron tasks -func (c *Client) ListCronTasks(opt ListCronTaskOptions) ([]*CronTask, *Response, error) { - if err := c.checkServerVersionGreaterThanOrEqual(version1_13_0); err != nil { - return nil, nil, err - } - opt.setDefaults() - ct := make([]*CronTask, 0, opt.PageSize) - resp, err := c.getParsedResponse("GET", fmt.Sprintf("/admin/cron?%s", opt.getURLQuery().Encode()), jsonHeader, nil, &ct) - return ct, resp, err -} - -// RunCronTasks run a cron task -func (c *Client) RunCronTasks(task string) (*Response, error) { - if err := c.checkServerVersionGreaterThanOrEqual(version1_13_0); err != nil { - return nil, err - } - if err := escapeValidatePathSegments(&task); err != nil { - return nil, err - } - _, resp, err := c.getResponse("POST", fmt.Sprintf("/admin/cron/%s", task), jsonHeader, nil) - return resp, err -} diff --git a/vendor/code.gitea.io/sdk/gitea/admin_org.go b/vendor/code.gitea.io/sdk/gitea/admin_org.go deleted file mode 100644 index 26bf81fb4d..0000000000 --- a/vendor/code.gitea.io/sdk/gitea/admin_org.go +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright 2015 The Gogs Authors. All rights reserved. -// Copyright 2019 The Gitea Authors. All rights reserved. -// Use of this source code is governed by a MIT-style -// license that can be found in the LICENSE file. - -package gitea - -import ( - "bytes" - "encoding/json" - "fmt" -) - -// AdminListOrgsOptions options for listing admin's organizations -type AdminListOrgsOptions struct { - ListOptions -} - -// AdminListOrgs lists all orgs -func (c *Client) AdminListOrgs(opt AdminListOrgsOptions) ([]*Organization, *Response, error) { - opt.setDefaults() - orgs := make([]*Organization, 0, opt.PageSize) - resp, err := c.getParsedResponse("GET", fmt.Sprintf("/admin/orgs?%s", opt.getURLQuery().Encode()), nil, nil, &orgs) - return orgs, resp, err -} - -// AdminCreateOrg create an organization -func (c *Client) AdminCreateOrg(user string, opt CreateOrgOption) (*Organization, *Response, error) { - if err := escapeValidatePathSegments(&user); err != nil { - return nil, nil, err - } - body, err := json.Marshal(&opt) - if err != nil { - return nil, nil, err - } - org := new(Organization) - resp, err := c.getParsedResponse("POST", fmt.Sprintf("/admin/users/%s/orgs", user), jsonHeader, bytes.NewReader(body), org) - return org, resp, err -} diff --git a/vendor/code.gitea.io/sdk/gitea/admin_repo.go b/vendor/code.gitea.io/sdk/gitea/admin_repo.go deleted file mode 100644 index 8666690cde..0000000000 --- a/vendor/code.gitea.io/sdk/gitea/admin_repo.go +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright 2015 The Gogs Authors. All rights reserved. -// Use of this source code is governed by a MIT-style -// license that can be found in the LICENSE file. - -package gitea - -import ( - "bytes" - "encoding/json" - "fmt" -) - -// AdminCreateRepo create a repo -func (c *Client) AdminCreateRepo(user string, opt CreateRepoOption) (*Repository, *Response, error) { - if err := escapeValidatePathSegments(&user); err != nil { - return nil, nil, err - } - body, err := json.Marshal(&opt) - if err != nil { - return nil, nil, err - } - repo := new(Repository) - resp, err := c.getParsedResponse("POST", fmt.Sprintf("/admin/users/%s/repos", user), jsonHeader, bytes.NewReader(body), repo) - return repo, resp, err -} diff --git a/vendor/code.gitea.io/sdk/gitea/admin_user.go b/vendor/code.gitea.io/sdk/gitea/admin_user.go deleted file mode 100644 index 172f0645c9..0000000000 --- a/vendor/code.gitea.io/sdk/gitea/admin_user.go +++ /dev/null @@ -1,130 +0,0 @@ -// Copyright 2015 The Gogs Authors. All rights reserved. -// Copyright 2019 The Gitea Authors. All rights reserved. -// Use of this source code is governed by a MIT-style -// license that can be found in the LICENSE file. - -package gitea - -import ( - "bytes" - "encoding/json" - "fmt" -) - -// AdminListUsersOptions options for listing admin users -type AdminListUsersOptions struct { - ListOptions -} - -// AdminListUsers lists all users -func (c *Client) AdminListUsers(opt AdminListUsersOptions) ([]*User, *Response, error) { - opt.setDefaults() - users := make([]*User, 0, opt.PageSize) - resp, err := c.getParsedResponse("GET", fmt.Sprintf("/admin/users?%s", opt.getURLQuery().Encode()), nil, nil, &users) - return users, resp, err -} - -// CreateUserOption create user options -type CreateUserOption struct { - SourceID int64 `json:"source_id"` - LoginName string `json:"login_name"` - Username string `json:"username"` - FullName string `json:"full_name"` - Email string `json:"email"` - Password string `json:"password"` - MustChangePassword *bool `json:"must_change_password"` - SendNotify bool `json:"send_notify"` - Visibility *VisibleType `json:"visibility"` -} - -// Validate the CreateUserOption struct -func (opt CreateUserOption) Validate() error { - if len(opt.Email) == 0 { - return fmt.Errorf("email is empty") - } - if len(opt.Username) == 0 { - return fmt.Errorf("username is empty") - } - return nil -} - -// AdminCreateUser create a user -func (c *Client) AdminCreateUser(opt CreateUserOption) (*User, *Response, error) { - if err := opt.Validate(); err != nil { - return nil, nil, err - } - body, err := json.Marshal(&opt) - if err != nil { - return nil, nil, err - } - user := new(User) - resp, err := c.getParsedResponse("POST", "/admin/users", jsonHeader, bytes.NewReader(body), user) - return user, resp, err -} - -// EditUserOption edit user options -type EditUserOption struct { - SourceID int64 `json:"source_id"` - LoginName string `json:"login_name"` - Email *string `json:"email"` - FullName *string `json:"full_name"` - Password string `json:"password"` - Description *string `json:"description"` - MustChangePassword *bool `json:"must_change_password"` - Website *string `json:"website"` - Location *string `json:"location"` - Active *bool `json:"active"` - Admin *bool `json:"admin"` - AllowGitHook *bool `json:"allow_git_hook"` - AllowImportLocal *bool `json:"allow_import_local"` - MaxRepoCreation *int `json:"max_repo_creation"` - ProhibitLogin *bool `json:"prohibit_login"` - AllowCreateOrganization *bool `json:"allow_create_organization"` - Restricted *bool `json:"restricted"` - Visibility *VisibleType `json:"visibility"` -} - -// AdminEditUser modify user informations -func (c *Client) AdminEditUser(user string, opt EditUserOption) (*Response, error) { - if err := escapeValidatePathSegments(&user); err != nil { - return nil, err - } - body, err := json.Marshal(&opt) - if err != nil { - return nil, err - } - _, resp, err := c.getResponse("PATCH", fmt.Sprintf("/admin/users/%s", user), jsonHeader, bytes.NewReader(body)) - return resp, err -} - -// AdminDeleteUser delete one user according name -func (c *Client) AdminDeleteUser(user string) (*Response, error) { - if err := escapeValidatePathSegments(&user); err != nil { - return nil, err - } - _, resp, err := c.getResponse("DELETE", fmt.Sprintf("/admin/users/%s", user), nil, nil) - return resp, err -} - -// AdminCreateUserPublicKey adds a public key for the user -func (c *Client) AdminCreateUserPublicKey(user string, opt CreateKeyOption) (*PublicKey, *Response, error) { - if err := escapeValidatePathSegments(&user); err != nil { - return nil, nil, err - } - body, err := json.Marshal(&opt) - if err != nil { - return nil, nil, err - } - key := new(PublicKey) - resp, err := c.getParsedResponse("POST", fmt.Sprintf("/admin/users/%s/keys", user), jsonHeader, bytes.NewReader(body), key) - return key, resp, err -} - -// AdminDeleteUserPublicKey deletes a user's public key -func (c *Client) AdminDeleteUserPublicKey(user string, keyID int) (*Response, error) { - if err := escapeValidatePathSegments(&user); err != nil { - return nil, err - } - _, resp, err := c.getResponse("DELETE", fmt.Sprintf("/admin/users/%s/keys/%d", user, keyID), nil, nil) - return resp, err -} diff --git a/vendor/code.gitea.io/sdk/gitea/attachment.go b/vendor/code.gitea.io/sdk/gitea/attachment.go deleted file mode 100644 index 24c57baf4b..0000000000 --- a/vendor/code.gitea.io/sdk/gitea/attachment.go +++ /dev/null @@ -1,111 +0,0 @@ -// Copyright 2017 The Gitea Authors. All rights reserved. -// Use of this source code is governed by a MIT-style -// license that can be found in the LICENSE file. - -package gitea // import "code.gitea.io/sdk/gitea" -import ( - "bytes" - "encoding/json" - "fmt" - "io" - "mime/multipart" - "net/http" - "time" -) - -// Attachment a generic attachment -type Attachment struct { - ID int64 `json:"id"` - Name string `json:"name"` - Size int64 `json:"size"` - DownloadCount int64 `json:"download_count"` - Created time.Time `json:"created_at"` - UUID string `json:"uuid"` - DownloadURL string `json:"browser_download_url"` -} - -// ListReleaseAttachmentsOptions options for listing release's attachments -type ListReleaseAttachmentsOptions struct { - ListOptions -} - -// ListReleaseAttachments list release's attachments -func (c *Client) ListReleaseAttachments(user, repo string, release int64, opt ListReleaseAttachmentsOptions) ([]*Attachment, *Response, error) { - if err := escapeValidatePathSegments(&user, &repo); err != nil { - return nil, nil, err - } - opt.setDefaults() - attachments := make([]*Attachment, 0, opt.PageSize) - resp, err := c.getParsedResponse("GET", - fmt.Sprintf("/repos/%s/%s/releases/%d/assets?%s", user, repo, release, opt.getURLQuery().Encode()), - nil, nil, &attachments) - return attachments, resp, err -} - -// GetReleaseAttachment returns the requested attachment -func (c *Client) GetReleaseAttachment(user, repo string, release int64, id int64) (*Attachment, *Response, error) { - if err := escapeValidatePathSegments(&user, &repo); err != nil { - return nil, nil, err - } - a := new(Attachment) - resp, err := c.getParsedResponse("GET", - fmt.Sprintf("/repos/%s/%s/releases/%d/assets/%d", user, repo, release, id), - nil, nil, &a) - return a, resp, err -} - -// CreateReleaseAttachment creates an attachment for the given release -func (c *Client) CreateReleaseAttachment(user, repo string, release int64, file io.Reader, filename string) (*Attachment, *Response, error) { - if err := escapeValidatePathSegments(&user, &repo); err != nil { - return nil, nil, err - } - // Write file to body - body := new(bytes.Buffer) - writer := multipart.NewWriter(body) - part, err := writer.CreateFormFile("attachment", filename) - if err != nil { - return nil, nil, err - } - - if _, err = io.Copy(part, file); err != nil { - return nil, nil, err - } - if err = writer.Close(); err != nil { - return nil, nil, err - } - - // Send request - attachment := new(Attachment) - resp, err := c.getParsedResponse("POST", - fmt.Sprintf("/repos/%s/%s/releases/%d/assets", user, repo, release), - http.Header{"Content-Type": {writer.FormDataContentType()}}, body, &attachment) - return attachment, resp, err -} - -// EditAttachmentOptions options for editing attachments -type EditAttachmentOptions struct { - Name string `json:"name"` -} - -// EditReleaseAttachment updates the given attachment with the given options -func (c *Client) EditReleaseAttachment(user, repo string, release int64, attachment int64, form EditAttachmentOptions) (*Attachment, *Response, error) { - if err := escapeValidatePathSegments(&user, &repo); err != nil { - return nil, nil, err - } - body, err := json.Marshal(&form) - if err != nil { - return nil, nil, err - } - attach := new(Attachment) - resp, err := c.getParsedResponse("PATCH", fmt.Sprintf("/repos/%s/%s/releases/%d/assets/%d", user, repo, release, attachment), jsonHeader, bytes.NewReader(body), attach) - return attach, resp, err -} - -// DeleteReleaseAttachment deletes the given attachment including the uploaded file -func (c *Client) DeleteReleaseAttachment(user, repo string, release int64, id int64) (*Response, error) { - if err := escapeValidatePathSegments(&user, &repo); err != nil { - return nil, err - } - _, resp, err := c.getResponse("DELETE", fmt.Sprintf("/repos/%s/%s/releases/%d/assets/%d", user, repo, release, id), nil, nil) - return resp, err -} diff --git a/vendor/code.gitea.io/sdk/gitea/client.go b/vendor/code.gitea.io/sdk/gitea/client.go deleted file mode 100644 index 3fe3e8bd77..0000000000 --- a/vendor/code.gitea.io/sdk/gitea/client.go +++ /dev/null @@ -1,347 +0,0 @@ -// Copyright 2014 The Gogs Authors. All rights reserved. -// Copyright 2020 The Gitea Authors. All rights reserved. -// Use of this source code is governed by a MIT-style -// license that can be found in the LICENSE file. - -package gitea - -import ( - "context" - "encoding/json" - "errors" - "fmt" - "io" - "io/ioutil" - "net/http" - "net/url" - "strings" - "sync" - - "github.com/hashicorp/go-version" -) - -var jsonHeader = http.Header{"content-type": []string{"application/json"}} - -// Version return the library version -func Version() string { - return "0.15.1" -} - -// Client represents a thread-safe Gitea API client. -type Client struct { - url string - accessToken string - username string - password string - otp string - sudo string - debug bool - client *http.Client - ctx context.Context - mutex sync.RWMutex - - serverVersion *version.Version - getVersionOnce sync.Once - ignoreVersion bool // only set by SetGiteaVersion so don't need a mutex lock -} - -// Response represents the gitea response -type Response struct { - *http.Response -} - -// ClientOption are functions used to init a new client -type ClientOption func(*Client) error - -// NewClient initializes and returns a API client. -// Usage of all gitea.Client methods is concurrency-safe. -func NewClient(url string, options ...ClientOption) (*Client, error) { - client := &Client{ - url: strings.TrimSuffix(url, "/"), - client: &http.Client{}, - ctx: context.Background(), - } - for _, opt := range options { - if err := opt(client); err != nil { - return nil, err - } - } - if err := client.checkServerVersionGreaterThanOrEqual(version1_11_0); err != nil { - return nil, err - } - return client, nil -} - -// NewClientWithHTTP creates an API client with a custom http client -// Deprecated use SetHTTPClient option -func NewClientWithHTTP(url string, httpClient *http.Client) *Client { - client, _ := NewClient(url, SetHTTPClient(httpClient)) - return client -} - -// SetHTTPClient is an option for NewClient to set custom http client -func SetHTTPClient(httpClient *http.Client) ClientOption { - return func(client *Client) error { - client.SetHTTPClient(httpClient) - return nil - } -} - -// SetHTTPClient replaces default http.Client with user given one. -func (c *Client) SetHTTPClient(client *http.Client) { - c.mutex.Lock() - c.client = client - c.mutex.Unlock() -} - -// SetToken is an option for NewClient to set token -func SetToken(token string) ClientOption { - return func(client *Client) error { - client.mutex.Lock() - client.accessToken = token - client.mutex.Unlock() - return nil - } -} - -// SetBasicAuth is an option for NewClient to set username and password -func SetBasicAuth(username, password string) ClientOption { - return func(client *Client) error { - client.SetBasicAuth(username, password) - return nil - } -} - -// SetBasicAuth sets username and password -func (c *Client) SetBasicAuth(username, password string) { - c.mutex.Lock() - c.username, c.password = username, password - c.mutex.Unlock() -} - -// SetOTP is an option for NewClient to set OTP for 2FA -func SetOTP(otp string) ClientOption { - return func(client *Client) error { - client.SetOTP(otp) - return nil - } -} - -// SetOTP sets OTP for 2FA -func (c *Client) SetOTP(otp string) { - c.mutex.Lock() - c.otp = otp - c.mutex.Unlock() -} - -// SetContext is an option for NewClient to set the default context -func SetContext(ctx context.Context) ClientOption { - return func(client *Client) error { - client.SetContext(ctx) - return nil - } -} - -// SetContext set default context witch is used for http requests -func (c *Client) SetContext(ctx context.Context) { - c.mutex.Lock() - c.ctx = ctx - c.mutex.Unlock() -} - -// SetSudo is an option for NewClient to set sudo header -func SetSudo(sudo string) ClientOption { - return func(client *Client) error { - client.SetSudo(sudo) - return nil - } -} - -// SetSudo sets username to impersonate. -func (c *Client) SetSudo(sudo string) { - c.mutex.Lock() - c.sudo = sudo - c.mutex.Unlock() -} - -// SetDebugMode is an option for NewClient to enable debug mode -func SetDebugMode() ClientOption { - return func(client *Client) error { - client.mutex.Lock() - client.debug = true - client.mutex.Unlock() - return nil - } -} - -func (c *Client) getWebResponse(method, path string, body io.Reader) ([]byte, *Response, error) { - c.mutex.RLock() - debug := c.debug - if debug { - fmt.Printf("%s: %s\nBody: %v\n", method, c.url+path, body) - } - req, err := http.NewRequestWithContext(c.ctx, method, c.url+path, body) - - client := c.client // client ref can change from this point on so safe it - c.mutex.RUnlock() - - if err != nil { - return nil, nil, err - } - - resp, err := client.Do(req) - if err != nil { - return nil, nil, err - } - - defer resp.Body.Close() - data, err := ioutil.ReadAll(resp.Body) - if debug { - fmt.Printf("Response: %v\n\n", resp) - } - return data, &Response{resp}, nil -} - -func (c *Client) doRequest(method, path string, header http.Header, body io.Reader) (*Response, error) { - c.mutex.RLock() - debug := c.debug - if debug { - fmt.Printf("%s: %s\nHeader: %v\nBody: %s\n", method, c.url+"/api/v1"+path, header, body) - } - req, err := http.NewRequestWithContext(c.ctx, method, c.url+"/api/v1"+path, body) - if err != nil { - c.mutex.RUnlock() - return nil, err - } - if len(c.accessToken) != 0 { - req.Header.Set("Authorization", "token "+c.accessToken) - } - if len(c.otp) != 0 { - req.Header.Set("X-GITEA-OTP", c.otp) - } - if len(c.username) != 0 { - req.SetBasicAuth(c.username, c.password) - } - if len(c.sudo) != 0 { - req.Header.Set("Sudo", c.sudo) - } - - client := c.client // client ref can change from this point on so safe it - c.mutex.RUnlock() - - for k, v := range header { - req.Header[k] = v - } - - resp, err := client.Do(req) - if err != nil { - return nil, err - } - if debug { - fmt.Printf("Response: %v\n\n", resp) - } - return &Response{resp}, nil -} - -// Converts a response for a HTTP status code indicating an error condition -// (non-2XX) to a well-known error value and response body. For non-problematic -// (2XX) status codes nil will be returned. Note that on a non-2XX response, the -// response body stream will have been read and, hence, is closed on return. -func statusCodeToErr(resp *Response) (body []byte, err error) { - // no error - if resp.StatusCode/100 == 2 { - return nil, nil - } - - // - // error: body will be read for details - // - defer resp.Body.Close() - data, err := ioutil.ReadAll(resp.Body) - if err != nil { - return nil, fmt.Errorf("body read on HTTP error %d: %v", resp.StatusCode, err) - } - - switch resp.StatusCode { - case 403: - return data, errors.New("403 Forbidden") - case 404: - return data, errors.New("404 Not Found") - case 409: - return data, errors.New("409 Conflict") - case 422: - return data, fmt.Errorf("422 Unprocessable Entity: %s", string(data)) - } - - path := resp.Request.URL.Path - method := resp.Request.Method - header := resp.Request.Header - errMap := make(map[string]interface{}) - if err = json.Unmarshal(data, &errMap); err != nil { - // when the JSON can't be parsed, data was probably empty or a - // plain string, so we try to return a helpful error anyway - return data, fmt.Errorf("Unknown API Error: %d\nRequest: '%s' with '%s' method '%s' header and '%s' body", resp.StatusCode, path, method, header, string(data)) - } - return data, errors.New(errMap["message"].(string)) -} - -func (c *Client) getResponse(method, path string, header http.Header, body io.Reader) ([]byte, *Response, error) { - resp, err := c.doRequest(method, path, header, body) - if err != nil { - return nil, nil, err - } - defer resp.Body.Close() - - // check for errors - data, err := statusCodeToErr(resp) - if err != nil { - return data, resp, err - } - - // success (2XX), read body - data, err = ioutil.ReadAll(resp.Body) - if err != nil { - return nil, resp, err - } - - return data, resp, nil -} - -func (c *Client) getParsedResponse(method, path string, header http.Header, body io.Reader, obj interface{}) (*Response, error) { - data, resp, err := c.getResponse(method, path, header, body) - if err != nil { - return resp, err - } - return resp, json.Unmarshal(data, obj) -} - -func (c *Client) getStatusCode(method, path string, header http.Header, body io.Reader) (int, *Response, error) { - resp, err := c.doRequest(method, path, header, body) - if err != nil { - return -1, resp, err - } - defer resp.Body.Close() - - return resp.StatusCode, resp, nil -} - -// pathEscapeSegments escapes segments of a path while not escaping forward slash -func pathEscapeSegments(path string) string { - slice := strings.Split(path, "/") - for index := range slice { - slice[index] = url.PathEscape(slice[index]) - } - escapedPath := strings.Join(slice, "/") - return escapedPath -} - -// escapeValidatePathSegments is a help function to validate and encode url path segments -func escapeValidatePathSegments(seg ...*string) error { - for i := range seg { - if seg[i] == nil || len(*seg[i]) == 0 { - return fmt.Errorf("path segment [%d] is empty", i) - } - *seg[i] = url.PathEscape(*seg[i]) - } - return nil -} diff --git a/vendor/code.gitea.io/sdk/gitea/doc.go b/vendor/code.gitea.io/sdk/gitea/doc.go deleted file mode 100644 index 6bd327db46..0000000000 --- a/vendor/code.gitea.io/sdk/gitea/doc.go +++ /dev/null @@ -1,5 +0,0 @@ -// Copyright 2016 The Gitea Authors. All rights reserved. -// Use of this source code is governed by a MIT-style -// license that can be found in the LICENSE file. - -package gitea // import "code.gitea.io/sdk/gitea" diff --git a/vendor/code.gitea.io/sdk/gitea/fork.go b/vendor/code.gitea.io/sdk/gitea/fork.go deleted file mode 100644 index c8e5323bc0..0000000000 --- a/vendor/code.gitea.io/sdk/gitea/fork.go +++ /dev/null @@ -1,49 +0,0 @@ -// Copyright 2016 The Gitea Authors. All rights reserved. -// Use of this source code is governed by a MIT-style -// license that can be found in the LICENSE file. - -package gitea - -import ( - "bytes" - "encoding/json" - "fmt" -) - -// ListForksOptions options for listing repository's forks -type ListForksOptions struct { - ListOptions -} - -// ListForks list a repository's forks -func (c *Client) ListForks(user string, repo string, opt ListForksOptions) ([]*Repository, *Response, error) { - if err := escapeValidatePathSegments(&user, &repo); err != nil { - return nil, nil, err - } - opt.setDefaults() - forks := make([]*Repository, opt.PageSize) - resp, err := c.getParsedResponse("GET", - fmt.Sprintf("/repos/%s/%s/forks?%s", user, repo, opt.getURLQuery().Encode()), - nil, nil, &forks) - return forks, resp, err -} - -// CreateForkOption options for creating a fork -type CreateForkOption struct { - // organization name, if forking into an organization - Organization *string `json:"organization"` -} - -// CreateFork create a fork of a repository -func (c *Client) CreateFork(user, repo string, form CreateForkOption) (*Repository, *Response, error) { - if err := escapeValidatePathSegments(&user, &repo); err != nil { - return nil, nil, err - } - body, err := json.Marshal(form) - if err != nil { - return nil, nil, err - } - fork := new(Repository) - resp, err := c.getParsedResponse("POST", fmt.Sprintf("/repos/%s/%s/forks", user, repo), jsonHeader, bytes.NewReader(body), &fork) - return fork, resp, err -} diff --git a/vendor/code.gitea.io/sdk/gitea/git_blob.go b/vendor/code.gitea.io/sdk/gitea/git_blob.go deleted file mode 100644 index 7668672dc0..0000000000 --- a/vendor/code.gitea.io/sdk/gitea/git_blob.go +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright 2020 The Gitea Authors. All rights reserved. -// Use of this source code is governed by a MIT-style -// license that can be found in the LICENSE file. - -package gitea - -import ( - "fmt" -) - -// GitBlobResponse represents a git blob -type GitBlobResponse struct { - Content string `json:"content"` - Encoding string `json:"encoding"` - URL string `json:"url"` - SHA string `json:"sha"` - Size int64 `json:"size"` -} - -// GetBlob get the blob of a repository file -func (c *Client) GetBlob(user, repo, sha string) (*GitBlobResponse, *Response, error) { - if err := escapeValidatePathSegments(&user, &repo, &sha); err != nil { - return nil, nil, err - } - blob := new(GitBlobResponse) - resp, err := c.getParsedResponse("GET", fmt.Sprintf("/repos/%s/%s/git/blobs/%s", user, repo, sha), nil, nil, blob) - return blob, resp, err -} diff --git a/vendor/code.gitea.io/sdk/gitea/git_hook.go b/vendor/code.gitea.io/sdk/gitea/git_hook.go deleted file mode 100644 index d8fbf71bd9..0000000000 --- a/vendor/code.gitea.io/sdk/gitea/git_hook.go +++ /dev/null @@ -1,71 +0,0 @@ -// Copyright 2019 The Gitea Authors. All rights reserved. -// Use of this source code is governed by a MIT-style -// license that can be found in the LICENSE file. - -package gitea - -import ( - "bytes" - "encoding/json" - "fmt" -) - -// GitHook represents a Git repository hook -type GitHook struct { - Name string `json:"name"` - IsActive bool `json:"is_active"` - Content string `json:"content,omitempty"` -} - -// ListRepoGitHooksOptions options for listing repository's githooks -type ListRepoGitHooksOptions struct { - ListOptions -} - -// ListRepoGitHooks list all the Git hooks of one repository -func (c *Client) ListRepoGitHooks(user, repo string, opt ListRepoGitHooksOptions) ([]*GitHook, *Response, error) { - if err := escapeValidatePathSegments(&user, &repo); err != nil { - return nil, nil, err - } - opt.setDefaults() - hooks := make([]*GitHook, 0, opt.PageSize) - resp, err := c.getParsedResponse("GET", fmt.Sprintf("/repos/%s/%s/hooks/git?%s", user, repo, opt.getURLQuery().Encode()), nil, nil, &hooks) - return hooks, resp, err -} - -// GetRepoGitHook get a Git hook of a repository -func (c *Client) GetRepoGitHook(user, repo, id string) (*GitHook, *Response, error) { - if err := escapeValidatePathSegments(&user, &repo, &id); err != nil { - return nil, nil, err - } - h := new(GitHook) - resp, err := c.getParsedResponse("GET", fmt.Sprintf("/repos/%s/%s/hooks/git/%s", user, repo, id), nil, nil, h) - return h, resp, err -} - -// EditGitHookOption options when modifying one Git hook -type EditGitHookOption struct { - Content string `json:"content"` -} - -// EditRepoGitHook modify one Git hook of a repository -func (c *Client) EditRepoGitHook(user, repo, id string, opt EditGitHookOption) (*Response, error) { - if err := escapeValidatePathSegments(&user, &repo, &id); err != nil { - return nil, err - } - body, err := json.Marshal(&opt) - if err != nil { - return nil, err - } - _, resp, err := c.getResponse("PATCH", fmt.Sprintf("/repos/%s/%s/hooks/git/%s", user, repo, id), jsonHeader, bytes.NewReader(body)) - return resp, err -} - -// DeleteRepoGitHook delete one Git hook from a repository -func (c *Client) DeleteRepoGitHook(user, repo, id string) (*Response, error) { - if err := escapeValidatePathSegments(&user, &repo, &id); err != nil { - return nil, err - } - _, resp, err := c.getResponse("DELETE", fmt.Sprintf("/repos/%s/%s/hooks/git/%s", user, repo, id), nil, nil) - return resp, err -} diff --git a/vendor/code.gitea.io/sdk/gitea/go.mod b/vendor/code.gitea.io/sdk/gitea/go.mod deleted file mode 100644 index 7141bfa474..0000000000 --- a/vendor/code.gitea.io/sdk/gitea/go.mod +++ /dev/null @@ -1,9 +0,0 @@ -module code.gitea.io/sdk/gitea - -go 1.13 - -require ( - code.gitea.io/gitea-vet v0.2.1 // indirect - github.com/hashicorp/go-version v1.2.1 - github.com/stretchr/testify v1.4.0 -) diff --git a/vendor/code.gitea.io/sdk/gitea/go.sum b/vendor/code.gitea.io/sdk/gitea/go.sum deleted file mode 100644 index 833e39100e..0000000000 --- a/vendor/code.gitea.io/sdk/gitea/go.sum +++ /dev/null @@ -1,33 +0,0 @@ -code.gitea.io/gitea-vet v0.2.1 h1:b30by7+3SkmiftK0RjuXqFvZg2q4p68uoPGuxhzBN0s= -code.gitea.io/gitea-vet v0.2.1/go.mod h1:zcNbT/aJEmivCAhfmkHOlT645KNOf9W2KnkLgFjGGfE= -github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8= -github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/hashicorp/go-version v1.2.1 h1:zEfKbn2+PDgroKdiOzqiE8rsmLqU2uwi5PB5pBJ3TkI= -github.com/hashicorp/go-version v1.2.1/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= -github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= -github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk= -github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= -github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20200325010219-a49f79bcc224 h1:azwY/v0y0K4mFHVsg5+UrTgchqALYWpqVo6vL5OmkmI= -golang.org/x/tools v0.0.0-20200325010219-a49f79bcc224/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= -golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw= -gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= diff --git a/vendor/code.gitea.io/sdk/gitea/helper.go b/vendor/code.gitea.io/sdk/gitea/helper.go deleted file mode 100644 index ff8038b128..0000000000 --- a/vendor/code.gitea.io/sdk/gitea/helper.go +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright 2020 The Gitea Authors. All rights reserved. -// Use of this source code is governed by a MIT-style -// license that can be found in the LICENSE file. - -package gitea - -// OptionalBool convert a bool to a bool reference -func OptionalBool(v bool) *bool { - return &v -} - -// OptionalString convert a string to a string reference -func OptionalString(v string) *string { - return &v -} - -// OptionalInt64 convert a int64 to a int64 reference -func OptionalInt64(v int64) *int64 { - return &v -} diff --git a/vendor/code.gitea.io/sdk/gitea/hook.go b/vendor/code.gitea.io/sdk/gitea/hook.go deleted file mode 100644 index 67a7518b68..0000000000 --- a/vendor/code.gitea.io/sdk/gitea/hook.go +++ /dev/null @@ -1,194 +0,0 @@ -// Copyright 2014 The Gogs Authors. All rights reserved. -// Copyright 2017 The Gitea Authors. All rights reserved. -// Use of this source code is governed by a MIT-style -// license that can be found in the LICENSE file. - -package gitea - -import ( - "bytes" - "encoding/json" - "fmt" - "time" -) - -// Hook a hook is a web hook when one repository changed -type Hook struct { - ID int64 `json:"id"` - Type string `json:"type"` - URL string `json:"-"` - Config map[string]string `json:"config"` - Events []string `json:"events"` - Active bool `json:"active"` - Updated time.Time `json:"updated_at"` - Created time.Time `json:"created_at"` -} - -// HookType represent all webhook types gitea currently offer -type HookType string - -const ( - // HookTypeDingtalk webhook that dingtalk understand - HookTypeDingtalk HookType = "dingtalk" - // HookTypeDiscord webhook that discord understand - HookTypeDiscord HookType = "discord" - // HookTypeGitea webhook that gitea understand - HookTypeGitea HookType = "gitea" - // HookTypeGogs webhook that gogs understand - HookTypeGogs HookType = "gogs" - // HookTypeMsteams webhook that msteams understand - HookTypeMsteams HookType = "msteams" - // HookTypeSlack webhook that slack understand - HookTypeSlack HookType = "slack" - // HookTypeTelegram webhook that telegram understand - HookTypeTelegram HookType = "telegram" - // HookTypeFeishu webhook that feishu understand - HookTypeFeishu HookType = "feishu" -) - -// ListHooksOptions options for listing hooks -type ListHooksOptions struct { - ListOptions -} - -// ListOrgHooks list all the hooks of one organization -func (c *Client) ListOrgHooks(org string, opt ListHooksOptions) ([]*Hook, *Response, error) { - if err := escapeValidatePathSegments(&org); err != nil { - return nil, nil, err - } - opt.setDefaults() - hooks := make([]*Hook, 0, opt.PageSize) - resp, err := c.getParsedResponse("GET", fmt.Sprintf("/orgs/%s/hooks?%s", org, opt.getURLQuery().Encode()), nil, nil, &hooks) - return hooks, resp, err -} - -// ListRepoHooks list all the hooks of one repository -func (c *Client) ListRepoHooks(user, repo string, opt ListHooksOptions) ([]*Hook, *Response, error) { - if err := escapeValidatePathSegments(&user, &repo); err != nil { - return nil, nil, err - } - opt.setDefaults() - hooks := make([]*Hook, 0, opt.PageSize) - resp, err := c.getParsedResponse("GET", fmt.Sprintf("/repos/%s/%s/hooks?%s", user, repo, opt.getURLQuery().Encode()), nil, nil, &hooks) - return hooks, resp, err -} - -// GetOrgHook get a hook of an organization -func (c *Client) GetOrgHook(org string, id int64) (*Hook, *Response, error) { - if err := escapeValidatePathSegments(&org); err != nil { - return nil, nil, err - } - h := new(Hook) - resp, err := c.getParsedResponse("GET", fmt.Sprintf("/orgs/%s/hooks/%d", org, id), nil, nil, h) - return h, resp, err -} - -// GetRepoHook get a hook of a repository -func (c *Client) GetRepoHook(user, repo string, id int64) (*Hook, *Response, error) { - if err := escapeValidatePathSegments(&user, &repo); err != nil { - return nil, nil, err - } - h := new(Hook) - resp, err := c.getParsedResponse("GET", fmt.Sprintf("/repos/%s/%s/hooks/%d", user, repo, id), nil, nil, h) - return h, resp, err -} - -// CreateHookOption options when create a hook -type CreateHookOption struct { - Type HookType `json:"type"` - Config map[string]string `json:"config"` - Events []string `json:"events"` - BranchFilter string `json:"branch_filter"` - Active bool `json:"active"` -} - -// Validate the CreateHookOption struct -func (opt CreateHookOption) Validate() error { - if len(opt.Type) == 0 { - return fmt.Errorf("hook type needed") - } - return nil -} - -// CreateOrgHook create one hook for an organization, with options -func (c *Client) CreateOrgHook(org string, opt CreateHookOption) (*Hook, *Response, error) { - if err := escapeValidatePathSegments(&org); err != nil { - return nil, nil, err - } - if err := opt.Validate(); err != nil { - return nil, nil, err - } - body, err := json.Marshal(&opt) - if err != nil { - return nil, nil, err - } - h := new(Hook) - resp, err := c.getParsedResponse("POST", fmt.Sprintf("/orgs/%s/hooks", org), jsonHeader, bytes.NewReader(body), h) - return h, resp, err -} - -// CreateRepoHook create one hook for a repository, with options -func (c *Client) CreateRepoHook(user, repo string, opt CreateHookOption) (*Hook, *Response, error) { - if err := escapeValidatePathSegments(&user, &repo); err != nil { - return nil, nil, err - } - body, err := json.Marshal(&opt) - if err != nil { - return nil, nil, err - } - h := new(Hook) - resp, err := c.getParsedResponse("POST", fmt.Sprintf("/repos/%s/%s/hooks", user, repo), jsonHeader, bytes.NewReader(body), h) - return h, resp, err -} - -// EditHookOption options when modify one hook -type EditHookOption struct { - Config map[string]string `json:"config"` - Events []string `json:"events"` - BranchFilter string `json:"branch_filter"` - Active *bool `json:"active"` -} - -// EditOrgHook modify one hook of an organization, with hook id and options -func (c *Client) EditOrgHook(org string, id int64, opt EditHookOption) (*Response, error) { - if err := escapeValidatePathSegments(&org); err != nil { - return nil, err - } - body, err := json.Marshal(&opt) - if err != nil { - return nil, err - } - _, resp, err := c.getResponse("PATCH", fmt.Sprintf("/orgs/%s/hooks/%d", org, id), jsonHeader, bytes.NewReader(body)) - return resp, err -} - -// EditRepoHook modify one hook of a repository, with hook id and options -func (c *Client) EditRepoHook(user, repo string, id int64, opt EditHookOption) (*Response, error) { - if err := escapeValidatePathSegments(&user, &repo); err != nil { - return nil, err - } - body, err := json.Marshal(&opt) - if err != nil { - return nil, err - } - _, resp, err := c.getResponse("PATCH", fmt.Sprintf("/repos/%s/%s/hooks/%d", user, repo, id), jsonHeader, bytes.NewReader(body)) - return resp, err -} - -// DeleteOrgHook delete one hook from an organization, with hook id -func (c *Client) DeleteOrgHook(org string, id int64) (*Response, error) { - if err := escapeValidatePathSegments(&org); err != nil { - return nil, err - } - _, resp, err := c.getResponse("DELETE", fmt.Sprintf("/orgs/%s/hooks/%d", org, id), nil, nil) - return resp, err -} - -// DeleteRepoHook delete one hook from a repository, with hook id -func (c *Client) DeleteRepoHook(user, repo string, id int64) (*Response, error) { - if err := escapeValidatePathSegments(&user, &repo); err != nil { - return nil, err - } - _, resp, err := c.getResponse("DELETE", fmt.Sprintf("/repos/%s/%s/hooks/%d", user, repo, id), nil, nil) - return resp, err -} diff --git a/vendor/code.gitea.io/sdk/gitea/issue.go b/vendor/code.gitea.io/sdk/gitea/issue.go deleted file mode 100644 index c33856a4da..0000000000 --- a/vendor/code.gitea.io/sdk/gitea/issue.go +++ /dev/null @@ -1,288 +0,0 @@ -// Copyright 2016 The Gogs Authors. All rights reserved. -// Copyright 2019 The Gitea Authors. All rights reserved. -// Use of this source code is governed by a MIT-style -// license that can be found in the LICENSE file. - -package gitea - -import ( - "bytes" - "encoding/json" - "fmt" - "net/url" - "strings" - "time" -) - -// PullRequestMeta PR info if an issue is a PR -type PullRequestMeta struct { - HasMerged bool `json:"merged"` - Merged *time.Time `json:"merged_at"` -} - -// RepositoryMeta basic repository information -type RepositoryMeta struct { - ID int64 `json:"id"` - Name string `json:"name"` - Owner string `json:"owner"` - FullName string `json:"full_name"` -} - -// Issue represents an issue in a repository -type Issue struct { - ID int64 `json:"id"` - URL string `json:"url"` - HTMLURL string `json:"html_url"` - Index int64 `json:"number"` - Poster *User `json:"user"` - OriginalAuthor string `json:"original_author"` - OriginalAuthorID int64 `json:"original_author_id"` - Title string `json:"title"` - Body string `json:"body"` - Ref string `json:"ref"` - Labels []*Label `json:"labels"` - Milestone *Milestone `json:"milestone"` - Assignees []*User `json:"assignees"` - // Whether the issue is open or closed - State StateType `json:"state"` - IsLocked bool `json:"is_locked"` - Comments int `json:"comments"` - Created time.Time `json:"created_at"` - Updated time.Time `json:"updated_at"` - Closed *time.Time `json:"closed_at"` - Deadline *time.Time `json:"due_date"` - PullRequest *PullRequestMeta `json:"pull_request"` - Repository *RepositoryMeta `json:"repository"` -} - -// ListIssueOption list issue options -type ListIssueOption struct { - ListOptions - State StateType - Type IssueType - Labels []string - Milestones []string - KeyWord string - Since time.Time - Before time.Time - // filter by created by username - CreatedBy string - // filter by assigned to username - AssignedBy string - // filter by username mentioned - MentionedBy string -} - -// StateType issue state type -type StateType string - -const ( - // StateOpen pr/issue is opend - StateOpen StateType = "open" - // StateClosed pr/issue is closed - StateClosed StateType = "closed" - // StateAll is all - StateAll StateType = "all" -) - -// IssueType is issue a pull or only an issue -type IssueType string - -const ( - // IssueTypeAll pr and issue - IssueTypeAll IssueType = "" - // IssueTypeIssue only issues - IssueTypeIssue IssueType = "issues" - // IssueTypePull only pulls - IssueTypePull IssueType = "pulls" -) - -// QueryEncode turns options into querystring argument -func (opt *ListIssueOption) QueryEncode() string { - query := opt.getURLQuery() - - if len(opt.State) > 0 { - query.Add("state", string(opt.State)) - } - - if len(opt.Labels) > 0 { - query.Add("labels", strings.Join(opt.Labels, ",")) - } - - if len(opt.KeyWord) > 0 { - query.Add("q", opt.KeyWord) - } - - query.Add("type", string(opt.Type)) - - if len(opt.Milestones) > 0 { - query.Add("milestones", strings.Join(opt.Milestones, ",")) - } - - if !opt.Since.IsZero() { - query.Add("since", opt.Since.Format(time.RFC3339)) - } - if !opt.Before.IsZero() { - query.Add("before", opt.Before.Format(time.RFC3339)) - } - - if len(opt.CreatedBy) > 0 { - query.Add("created_by", opt.CreatedBy) - } - if len(opt.AssignedBy) > 0 { - query.Add("assigned_by", opt.AssignedBy) - } - if len(opt.MentionedBy) > 0 { - query.Add("mentioned_by", opt.MentionedBy) - } - - return query.Encode() -} - -// ListIssues returns all issues assigned the authenticated user -func (c *Client) ListIssues(opt ListIssueOption) ([]*Issue, *Response, error) { - opt.setDefaults() - issues := make([]*Issue, 0, opt.PageSize) - - link, _ := url.Parse("/repos/issues/search") - link.RawQuery = opt.QueryEncode() - resp, err := c.getParsedResponse("GET", link.String(), jsonHeader, nil, &issues) - if e := c.checkServerVersionGreaterThanOrEqual(version1_12_0); e != nil { - for i := 0; i < len(issues); i++ { - if issues[i].Repository != nil { - issues[i].Repository.Owner = strings.Split(issues[i].Repository.FullName, "/")[0] - } - } - } - for i := range issues { - c.issueBackwardsCompatibility(issues[i]) - } - return issues, resp, err -} - -// ListRepoIssues returns all issues for a given repository -func (c *Client) ListRepoIssues(owner, repo string, opt ListIssueOption) ([]*Issue, *Response, error) { - if err := escapeValidatePathSegments(&owner, &repo); err != nil { - return nil, nil, err - } - opt.setDefaults() - issues := make([]*Issue, 0, opt.PageSize) - - link, _ := url.Parse(fmt.Sprintf("/repos/%s/%s/issues", owner, repo)) - link.RawQuery = opt.QueryEncode() - resp, err := c.getParsedResponse("GET", link.String(), jsonHeader, nil, &issues) - if e := c.checkServerVersionGreaterThanOrEqual(version1_12_0); e != nil { - for i := 0; i < len(issues); i++ { - if issues[i].Repository != nil { - issues[i].Repository.Owner = strings.Split(issues[i].Repository.FullName, "/")[0] - } - } - } - for i := range issues { - c.issueBackwardsCompatibility(issues[i]) - } - return issues, resp, err -} - -// GetIssue returns a single issue for a given repository -func (c *Client) GetIssue(owner, repo string, index int64) (*Issue, *Response, error) { - if err := escapeValidatePathSegments(&owner, &repo); err != nil { - return nil, nil, err - } - issue := new(Issue) - resp, err := c.getParsedResponse("GET", fmt.Sprintf("/repos/%s/%s/issues/%d", owner, repo, index), nil, nil, issue) - if e := c.checkServerVersionGreaterThanOrEqual(version1_12_0); e != nil && issue.Repository != nil { - issue.Repository.Owner = strings.Split(issue.Repository.FullName, "/")[0] - } - c.issueBackwardsCompatibility(issue) - return issue, resp, err -} - -// CreateIssueOption options to create one issue -type CreateIssueOption struct { - Title string `json:"title"` - Body string `json:"body"` - Ref string `json:"ref"` - Assignees []string `json:"assignees"` - Deadline *time.Time `json:"due_date"` - // milestone id - Milestone int64 `json:"milestone"` - // list of label ids - Labels []int64 `json:"labels"` - Closed bool `json:"closed"` -} - -// Validate the CreateIssueOption struct -func (opt CreateIssueOption) Validate() error { - if len(strings.TrimSpace(opt.Title)) == 0 { - return fmt.Errorf("title is empty") - } - return nil -} - -// CreateIssue create a new issue for a given repository -func (c *Client) CreateIssue(owner, repo string, opt CreateIssueOption) (*Issue, *Response, error) { - if err := escapeValidatePathSegments(&owner, &repo); err != nil { - return nil, nil, err - } - if err := opt.Validate(); err != nil { - return nil, nil, err - } - body, err := json.Marshal(&opt) - if err != nil { - return nil, nil, err - } - issue := new(Issue) - resp, err := c.getParsedResponse("POST", fmt.Sprintf("/repos/%s/%s/issues", owner, repo), - jsonHeader, bytes.NewReader(body), issue) - c.issueBackwardsCompatibility(issue) - return issue, resp, err -} - -// EditIssueOption options for editing an issue -type EditIssueOption struct { - Title string `json:"title"` - Body *string `json:"body"` - Ref *string `json:"ref"` - Assignees []string `json:"assignees"` - Milestone *int64 `json:"milestone"` - State *StateType `json:"state"` - Deadline *time.Time `json:"due_date"` - RemoveDeadline *bool `json:"unset_due_date"` -} - -// Validate the EditIssueOption struct -func (opt EditIssueOption) Validate() error { - if len(opt.Title) != 0 && len(strings.TrimSpace(opt.Title)) == 0 { - return fmt.Errorf("title is empty") - } - return nil -} - -// EditIssue modify an existing issue for a given repository -func (c *Client) EditIssue(owner, repo string, index int64, opt EditIssueOption) (*Issue, *Response, error) { - if err := escapeValidatePathSegments(&owner, &repo); err != nil { - return nil, nil, err - } - if err := opt.Validate(); err != nil { - return nil, nil, err - } - body, err := json.Marshal(&opt) - if err != nil { - return nil, nil, err - } - issue := new(Issue) - resp, err := c.getParsedResponse("PATCH", - fmt.Sprintf("/repos/%s/%s/issues/%d", owner, repo, index), - jsonHeader, bytes.NewReader(body), issue) - c.issueBackwardsCompatibility(issue) - return issue, resp, err -} - -func (c *Client) issueBackwardsCompatibility(issue *Issue) { - if c.checkServerVersionGreaterThanOrEqual(version1_12_0) != nil { - c.mutex.RLock() - issue.HTMLURL = fmt.Sprintf("%s/%s/issues/%d", c.url, issue.Repository.FullName, issue.Index) - c.mutex.RUnlock() - } -} diff --git a/vendor/code.gitea.io/sdk/gitea/issue_comment.go b/vendor/code.gitea.io/sdk/gitea/issue_comment.go deleted file mode 100644 index 8131a6edc2..0000000000 --- a/vendor/code.gitea.io/sdk/gitea/issue_comment.go +++ /dev/null @@ -1,154 +0,0 @@ -// Copyright 2016 The Gogs Authors. All rights reserved. -// Use of this source code is governed by a MIT-style -// license that can be found in the LICENSE file. - -package gitea - -import ( - "bytes" - "encoding/json" - "fmt" - "net/url" - "time" -) - -// Comment represents a comment on a commit or issue -type Comment struct { - ID int64 `json:"id"` - HTMLURL string `json:"html_url"` - PRURL string `json:"pull_request_url"` - IssueURL string `json:"issue_url"` - Poster *User `json:"user"` - OriginalAuthor string `json:"original_author"` - OriginalAuthorID int64 `json:"original_author_id"` - Body string `json:"body"` - Created time.Time `json:"created_at"` - Updated time.Time `json:"updated_at"` -} - -// ListIssueCommentOptions list comment options -type ListIssueCommentOptions struct { - ListOptions - Since time.Time - Before time.Time -} - -// QueryEncode turns options into querystring argument -func (opt *ListIssueCommentOptions) QueryEncode() string { - query := opt.getURLQuery() - if !opt.Since.IsZero() { - query.Add("since", opt.Since.Format(time.RFC3339)) - } - if !opt.Before.IsZero() { - query.Add("before", opt.Before.Format(time.RFC3339)) - } - return query.Encode() -} - -// ListIssueComments list comments on an issue. -func (c *Client) ListIssueComments(owner, repo string, index int64, opt ListIssueCommentOptions) ([]*Comment, *Response, error) { - if err := escapeValidatePathSegments(&owner, &repo); err != nil { - return nil, nil, err - } - opt.setDefaults() - link, _ := url.Parse(fmt.Sprintf("/repos/%s/%s/issues/%d/comments", owner, repo, index)) - link.RawQuery = opt.QueryEncode() - comments := make([]*Comment, 0, opt.PageSize) - resp, err := c.getParsedResponse("GET", link.String(), nil, nil, &comments) - return comments, resp, err -} - -// ListRepoIssueComments list comments for a given repo. -func (c *Client) ListRepoIssueComments(owner, repo string, opt ListIssueCommentOptions) ([]*Comment, *Response, error) { - if err := escapeValidatePathSegments(&owner, &repo); err != nil { - return nil, nil, err - } - opt.setDefaults() - link, _ := url.Parse(fmt.Sprintf("/repos/%s/%s/issues/comments", owner, repo)) - link.RawQuery = opt.QueryEncode() - comments := make([]*Comment, 0, opt.PageSize) - resp, err := c.getParsedResponse("GET", link.String(), nil, nil, &comments) - return comments, resp, err -} - -// GetIssueComment get a comment for a given repo by id. -func (c *Client) GetIssueComment(owner, repo string, id int64) (*Comment, *Response, error) { - if err := escapeValidatePathSegments(&owner, &repo); err != nil { - return nil, nil, err - } - comment := new(Comment) - if err := c.checkServerVersionGreaterThanOrEqual(version1_12_0); err != nil { - return comment, nil, err - } - resp, err := c.getParsedResponse("GET", fmt.Sprintf("/repos/%s/%s/issues/comments/%d", owner, repo, id), nil, nil, &comment) - return comment, resp, err -} - -// CreateIssueCommentOption options for creating a comment on an issue -type CreateIssueCommentOption struct { - Body string `json:"body"` -} - -// Validate the CreateIssueCommentOption struct -func (opt CreateIssueCommentOption) Validate() error { - if len(opt.Body) == 0 { - return fmt.Errorf("body is empty") - } - return nil -} - -// CreateIssueComment create comment on an issue. -func (c *Client) CreateIssueComment(owner, repo string, index int64, opt CreateIssueCommentOption) (*Comment, *Response, error) { - if err := escapeValidatePathSegments(&owner, &repo); err != nil { - return nil, nil, err - } - if err := opt.Validate(); err != nil { - return nil, nil, err - } - body, err := json.Marshal(&opt) - if err != nil { - return nil, nil, err - } - comment := new(Comment) - resp, err := c.getParsedResponse("POST", fmt.Sprintf("/repos/%s/%s/issues/%d/comments", owner, repo, index), jsonHeader, bytes.NewReader(body), comment) - return comment, resp, err -} - -// EditIssueCommentOption options for editing a comment -type EditIssueCommentOption struct { - Body string `json:"body"` -} - -// Validate the EditIssueCommentOption struct -func (opt EditIssueCommentOption) Validate() error { - if len(opt.Body) == 0 { - return fmt.Errorf("body is empty") - } - return nil -} - -// EditIssueComment edits an issue comment. -func (c *Client) EditIssueComment(owner, repo string, commentID int64, opt EditIssueCommentOption) (*Comment, *Response, error) { - if err := escapeValidatePathSegments(&owner, &repo); err != nil { - return nil, nil, err - } - if err := opt.Validate(); err != nil { - return nil, nil, err - } - body, err := json.Marshal(&opt) - if err != nil { - return nil, nil, err - } - comment := new(Comment) - resp, err := c.getParsedResponse("PATCH", fmt.Sprintf("/repos/%s/%s/issues/comments/%d", owner, repo, commentID), jsonHeader, bytes.NewReader(body), comment) - return comment, resp, err -} - -// DeleteIssueComment deletes an issue comment. -func (c *Client) DeleteIssueComment(owner, repo string, commentID int64) (*Response, error) { - if err := escapeValidatePathSegments(&owner, &repo); err != nil { - return nil, err - } - _, resp, err := c.getResponse("DELETE", fmt.Sprintf("/repos/%s/%s/issues/comments/%d", owner, repo, commentID), nil, nil) - return resp, err -} diff --git a/vendor/code.gitea.io/sdk/gitea/issue_label.go b/vendor/code.gitea.io/sdk/gitea/issue_label.go deleted file mode 100644 index f343ee5ef6..0000000000 --- a/vendor/code.gitea.io/sdk/gitea/issue_label.go +++ /dev/null @@ -1,211 +0,0 @@ -// Copyright 2016 The Gogs Authors. All rights reserved. -// Use of this source code is governed by a MIT-style -// license that can be found in the LICENSE file. - -package gitea - -import ( - "bytes" - "encoding/json" - "fmt" - "regexp" - "strings" -) - -// Label a label to an issue or a pr -type Label struct { - ID int64 `json:"id"` - Name string `json:"name"` - // example: 00aabb - Color string `json:"color"` - Description string `json:"description"` - URL string `json:"url"` -} - -// ListLabelsOptions options for listing repository's labels -type ListLabelsOptions struct { - ListOptions -} - -// ListRepoLabels list labels of one repository -func (c *Client) ListRepoLabels(owner, repo string, opt ListLabelsOptions) ([]*Label, *Response, error) { - if err := escapeValidatePathSegments(&owner, &repo); err != nil { - return nil, nil, err - } - opt.setDefaults() - labels := make([]*Label, 0, opt.PageSize) - resp, err := c.getParsedResponse("GET", fmt.Sprintf("/repos/%s/%s/labels?%s", owner, repo, opt.getURLQuery().Encode()), nil, nil, &labels) - return labels, resp, err -} - -// GetRepoLabel get one label of repository by repo it -func (c *Client) GetRepoLabel(owner, repo string, id int64) (*Label, *Response, error) { - if err := escapeValidatePathSegments(&owner, &repo); err != nil { - return nil, nil, err - } - label := new(Label) - resp, err := c.getParsedResponse("GET", fmt.Sprintf("/repos/%s/%s/labels/%d", owner, repo, id), nil, nil, label) - return label, resp, err -} - -// CreateLabelOption options for creating a label -type CreateLabelOption struct { - Name string `json:"name"` - // example: #00aabb - Color string `json:"color"` - Description string `json:"description"` -} - -// Validate the CreateLabelOption struct -func (opt CreateLabelOption) Validate() error { - aw, err := regexp.MatchString("^#?[0-9,a-f,A-F]{6}$", opt.Color) - if err != nil { - return err - } - if !aw { - return fmt.Errorf("invalid color format") - } - if len(strings.TrimSpace(opt.Name)) == 0 { - return fmt.Errorf("empty name not allowed") - } - return nil -} - -// CreateLabel create one label of repository -func (c *Client) CreateLabel(owner, repo string, opt CreateLabelOption) (*Label, *Response, error) { - if err := escapeValidatePathSegments(&owner, &repo); err != nil { - return nil, nil, err - } - if err := opt.Validate(); err != nil { - return nil, nil, err - } - if len(opt.Color) == 6 { - if err := c.checkServerVersionGreaterThanOrEqual(version1_12_0); err != nil { - opt.Color = "#" + opt.Color - } - } - body, err := json.Marshal(&opt) - if err != nil { - return nil, nil, err - } - label := new(Label) - resp, err := c.getParsedResponse("POST", - fmt.Sprintf("/repos/%s/%s/labels", owner, repo), - jsonHeader, bytes.NewReader(body), label) - return label, resp, err -} - -// EditLabelOption options for editing a label -type EditLabelOption struct { - Name *string `json:"name"` - Color *string `json:"color"` - Description *string `json:"description"` -} - -// Validate the EditLabelOption struct -func (opt EditLabelOption) Validate() error { - if opt.Color != nil { - aw, err := regexp.MatchString("^#?[0-9,a-f,A-F]{6}$", *opt.Color) - if err != nil { - return err - } - if !aw { - return fmt.Errorf("invalid color format") - } - } - if opt.Name != nil { - if len(strings.TrimSpace(*opt.Name)) == 0 { - return fmt.Errorf("empty name not allowed") - } - } - return nil -} - -// EditLabel modify one label with options -func (c *Client) EditLabel(owner, repo string, id int64, opt EditLabelOption) (*Label, *Response, error) { - if err := escapeValidatePathSegments(&owner, &repo); err != nil { - return nil, nil, err - } - if err := opt.Validate(); err != nil { - return nil, nil, err - } - body, err := json.Marshal(&opt) - if err != nil { - return nil, nil, err - } - label := new(Label) - resp, err := c.getParsedResponse("PATCH", fmt.Sprintf("/repos/%s/%s/labels/%d", owner, repo, id), jsonHeader, bytes.NewReader(body), label) - return label, resp, err -} - -// DeleteLabel delete one label of repository by id -func (c *Client) DeleteLabel(owner, repo string, id int64) (*Response, error) { - if err := escapeValidatePathSegments(&owner, &repo); err != nil { - return nil, err - } - _, resp, err := c.getResponse("DELETE", fmt.Sprintf("/repos/%s/%s/labels/%d", owner, repo, id), nil, nil) - return resp, err -} - -// GetIssueLabels get labels of one issue via issue id -func (c *Client) GetIssueLabels(owner, repo string, index int64, opts ListLabelsOptions) ([]*Label, *Response, error) { - if err := escapeValidatePathSegments(&owner, &repo); err != nil { - return nil, nil, err - } - labels := make([]*Label, 0, 5) - resp, err := c.getParsedResponse("GET", fmt.Sprintf("/repos/%s/%s/issues/%d/labels?%s", owner, repo, index, opts.getURLQuery().Encode()), nil, nil, &labels) - return labels, resp, err -} - -// IssueLabelsOption a collection of labels -type IssueLabelsOption struct { - // list of label IDs - Labels []int64 `json:"labels"` -} - -// AddIssueLabels add one or more labels to one issue -func (c *Client) AddIssueLabels(owner, repo string, index int64, opt IssueLabelsOption) ([]*Label, *Response, error) { - if err := escapeValidatePathSegments(&owner, &repo); err != nil { - return nil, nil, err - } - body, err := json.Marshal(&opt) - if err != nil { - return nil, nil, err - } - var labels []*Label - resp, err := c.getParsedResponse("POST", fmt.Sprintf("/repos/%s/%s/issues/%d/labels", owner, repo, index), jsonHeader, bytes.NewReader(body), &labels) - return labels, resp, err -} - -// ReplaceIssueLabels replace old labels of issue with new labels -func (c *Client) ReplaceIssueLabels(owner, repo string, index int64, opt IssueLabelsOption) ([]*Label, *Response, error) { - if err := escapeValidatePathSegments(&owner, &repo); err != nil { - return nil, nil, err - } - body, err := json.Marshal(&opt) - if err != nil { - return nil, nil, err - } - var labels []*Label - resp, err := c.getParsedResponse("PUT", fmt.Sprintf("/repos/%s/%s/issues/%d/labels", owner, repo, index), jsonHeader, bytes.NewReader(body), &labels) - return labels, resp, err -} - -// DeleteIssueLabel delete one label of one issue by issue id and label id -// TODO: maybe we need delete by label name and issue id -func (c *Client) DeleteIssueLabel(owner, repo string, index, label int64) (*Response, error) { - if err := escapeValidatePathSegments(&owner, &repo); err != nil { - return nil, err - } - _, resp, err := c.getResponse("DELETE", fmt.Sprintf("/repos/%s/%s/issues/%d/labels/%d", owner, repo, index, label), nil, nil) - return resp, err -} - -// ClearIssueLabels delete all the labels of one issue. -func (c *Client) ClearIssueLabels(owner, repo string, index int64) (*Response, error) { - if err := escapeValidatePathSegments(&owner, &repo); err != nil { - return nil, err - } - _, resp, err := c.getResponse("DELETE", fmt.Sprintf("/repos/%s/%s/issues/%d/labels", owner, repo, index), nil, nil) - return resp, err -} diff --git a/vendor/code.gitea.io/sdk/gitea/issue_milestone.go b/vendor/code.gitea.io/sdk/gitea/issue_milestone.go deleted file mode 100644 index dfb5720a0c..0000000000 --- a/vendor/code.gitea.io/sdk/gitea/issue_milestone.go +++ /dev/null @@ -1,237 +0,0 @@ -// Copyright 2016 The Gogs Authors. All rights reserved. -// Use of this source code is governed by a MIT-style -// license that can be found in the LICENSE file. - -package gitea - -import ( - "bytes" - "encoding/json" - "fmt" - "net/url" - "strings" - "time" -) - -// Milestone milestone is a collection of issues on one repository -type Milestone struct { - ID int64 `json:"id"` - Title string `json:"title"` - Description string `json:"description"` - State StateType `json:"state"` - OpenIssues int `json:"open_issues"` - ClosedIssues int `json:"closed_issues"` - Created time.Time `json:"created_at"` - Updated *time.Time `json:"updated_at"` - Closed *time.Time `json:"closed_at"` - Deadline *time.Time `json:"due_on"` -} - -// ListMilestoneOption list milestone options -type ListMilestoneOption struct { - ListOptions - // open, closed, all - State StateType - Name string -} - -// QueryEncode turns options into querystring argument -func (opt *ListMilestoneOption) QueryEncode() string { - query := opt.getURLQuery() - if opt.State != "" { - query.Add("state", string(opt.State)) - } - if len(opt.Name) != 0 { - query.Add("name", opt.Name) - } - return query.Encode() -} - -// ListRepoMilestones list all the milestones of one repository -func (c *Client) ListRepoMilestones(owner, repo string, opt ListMilestoneOption) ([]*Milestone, *Response, error) { - if err := escapeValidatePathSegments(&owner, &repo); err != nil { - return nil, nil, err - } - opt.setDefaults() - milestones := make([]*Milestone, 0, opt.PageSize) - - link, _ := url.Parse(fmt.Sprintf("/repos/%s/%s/milestones", owner, repo)) - link.RawQuery = opt.QueryEncode() - resp, err := c.getParsedResponse("GET", link.String(), nil, nil, &milestones) - return milestones, resp, err -} - -// GetMilestone get one milestone by repo name and milestone id -func (c *Client) GetMilestone(owner, repo string, id int64) (*Milestone, *Response, error) { - if err := escapeValidatePathSegments(&owner, &repo); err != nil { - return nil, nil, err - } - milestone := new(Milestone) - resp, err := c.getParsedResponse("GET", fmt.Sprintf("/repos/%s/%s/milestones/%d", owner, repo, id), nil, nil, milestone) - return milestone, resp, err -} - -// GetMilestoneByName get one milestone by repo and milestone name -func (c *Client) GetMilestoneByName(owner, repo string, name string) (*Milestone, *Response, error) { - if c.checkServerVersionGreaterThanOrEqual(version1_13_0) != nil { - // backwards compatibility mode - m, resp, err := c.resolveMilestoneByName(owner, repo, name) - return m, resp, err - } - if err := escapeValidatePathSegments(&owner, &repo, &name); err != nil { - return nil, nil, err - } - milestone := new(Milestone) - resp, err := c.getParsedResponse("GET", fmt.Sprintf("/repos/%s/%s/milestones/%s", owner, repo, name), nil, nil, milestone) - return milestone, resp, err -} - -// CreateMilestoneOption options for creating a milestone -type CreateMilestoneOption struct { - Title string `json:"title"` - Description string `json:"description"` - State StateType `json:"state"` - Deadline *time.Time `json:"due_on"` -} - -// Validate the CreateMilestoneOption struct -func (opt CreateMilestoneOption) Validate() error { - if len(strings.TrimSpace(opt.Title)) == 0 { - return fmt.Errorf("title is empty") - } - return nil -} - -// CreateMilestone create one milestone with options -func (c *Client) CreateMilestone(owner, repo string, opt CreateMilestoneOption) (*Milestone, *Response, error) { - if err := escapeValidatePathSegments(&owner, &repo); err != nil { - return nil, nil, err - } - if err := opt.Validate(); err != nil { - return nil, nil, err - } - body, err := json.Marshal(&opt) - if err != nil { - return nil, nil, err - } - milestone := new(Milestone) - resp, err := c.getParsedResponse("POST", fmt.Sprintf("/repos/%s/%s/milestones", owner, repo), jsonHeader, bytes.NewReader(body), milestone) - - // make creating closed milestones need gitea >= v1.13.0 - // this make it backwards compatible - if err == nil && opt.State == StateClosed && milestone.State != StateClosed { - closed := StateClosed - return c.EditMilestone(owner, repo, milestone.ID, EditMilestoneOption{ - State: &closed, - }) - } - - return milestone, resp, err -} - -// EditMilestoneOption options for editing a milestone -type EditMilestoneOption struct { - Title string `json:"title"` - Description *string `json:"description"` - State *StateType `json:"state"` - Deadline *time.Time `json:"due_on"` -} - -// Validate the EditMilestoneOption struct -func (opt EditMilestoneOption) Validate() error { - if len(opt.Title) != 0 && len(strings.TrimSpace(opt.Title)) == 0 { - return fmt.Errorf("title is empty") - } - return nil -} - -// EditMilestone modify milestone with options -func (c *Client) EditMilestone(owner, repo string, id int64, opt EditMilestoneOption) (*Milestone, *Response, error) { - if err := escapeValidatePathSegments(&owner, &repo); err != nil { - return nil, nil, err - } - if err := opt.Validate(); err != nil { - return nil, nil, err - } - body, err := json.Marshal(&opt) - if err != nil { - return nil, nil, err - } - milestone := new(Milestone) - resp, err := c.getParsedResponse("PATCH", fmt.Sprintf("/repos/%s/%s/milestones/%d", owner, repo, id), jsonHeader, bytes.NewReader(body), milestone) - return milestone, resp, err -} - -// EditMilestoneByName modify milestone with options -func (c *Client) EditMilestoneByName(owner, repo string, name string, opt EditMilestoneOption) (*Milestone, *Response, error) { - if c.checkServerVersionGreaterThanOrEqual(version1_13_0) != nil { - // backwards compatibility mode - m, _, err := c.resolveMilestoneByName(owner, repo, name) - if err != nil { - return nil, nil, err - } - return c.EditMilestone(owner, repo, m.ID, opt) - } - if err := escapeValidatePathSegments(&owner, &repo, &name); err != nil { - return nil, nil, err - } - if err := opt.Validate(); err != nil { - return nil, nil, err - } - body, err := json.Marshal(&opt) - if err != nil { - return nil, nil, err - } - milestone := new(Milestone) - resp, err := c.getParsedResponse("PATCH", fmt.Sprintf("/repos/%s/%s/milestones/%s", owner, repo, name), jsonHeader, bytes.NewReader(body), milestone) - return milestone, resp, err -} - -// DeleteMilestone delete one milestone by id -func (c *Client) DeleteMilestone(owner, repo string, id int64) (*Response, error) { - if err := escapeValidatePathSegments(&owner, &repo); err != nil { - return nil, err - } - _, resp, err := c.getResponse("DELETE", fmt.Sprintf("/repos/%s/%s/milestones/%d", owner, repo, id), nil, nil) - return resp, err -} - -// DeleteMilestoneByName delete one milestone by name -func (c *Client) DeleteMilestoneByName(owner, repo string, name string) (*Response, error) { - if c.checkServerVersionGreaterThanOrEqual(version1_13_0) != nil { - // backwards compatibility mode - m, _, err := c.resolveMilestoneByName(owner, repo, name) - if err != nil { - return nil, err - } - return c.DeleteMilestone(owner, repo, m.ID) - } - if err := escapeValidatePathSegments(&owner, &repo, &name); err != nil { - return nil, err - } - _, resp, err := c.getResponse("DELETE", fmt.Sprintf("/repos/%s/%s/milestones/%s", owner, repo, name), nil, nil) - return resp, err -} - -// resolveMilestoneByName is a fallback method to find milestone id by name -func (c *Client) resolveMilestoneByName(owner, repo, name string) (*Milestone, *Response, error) { - for i := 1; ; i++ { - miles, resp, err := c.ListRepoMilestones(owner, repo, ListMilestoneOption{ - ListOptions: ListOptions{ - Page: i, - }, - State: "all", - }) - if err != nil { - return nil, nil, err - } - if len(miles) == 0 { - return nil, nil, fmt.Errorf("milestone '%s' do not exist", name) - } - for _, m := range miles { - if strings.ToLower(strings.TrimSpace(m.Title)) == strings.ToLower(strings.TrimSpace(name)) { - return m, resp, nil - } - } - } -} diff --git a/vendor/code.gitea.io/sdk/gitea/issue_reaction.go b/vendor/code.gitea.io/sdk/gitea/issue_reaction.go deleted file mode 100644 index b45c066646..0000000000 --- a/vendor/code.gitea.io/sdk/gitea/issue_reaction.go +++ /dev/null @@ -1,104 +0,0 @@ -// Copyright 2020 The Gitea Authors. All rights reserved. -// Use of this source code is governed by a MIT-style -// license that can be found in the LICENSE file. - -package gitea - -import ( - "bytes" - "encoding/json" - "fmt" - "time" -) - -// Reaction contain one reaction -type Reaction struct { - User *User `json:"user"` - Reaction string `json:"content"` - Created time.Time `json:"created_at"` -} - -// GetIssueReactions get a list reactions of an issue -func (c *Client) GetIssueReactions(owner, repo string, index int64) ([]*Reaction, *Response, error) { - if err := escapeValidatePathSegments(&owner, &repo); err != nil { - return nil, nil, err - } - reactions := make([]*Reaction, 0, 10) - resp, err := c.getParsedResponse("GET", fmt.Sprintf("/repos/%s/%s/issues/%d/reactions", owner, repo, index), nil, nil, &reactions) - return reactions, resp, err -} - -// GetIssueCommentReactions get a list of reactions from a comment of an issue -func (c *Client) GetIssueCommentReactions(owner, repo string, commentID int64) ([]*Reaction, *Response, error) { - if err := escapeValidatePathSegments(&owner, &repo); err != nil { - return nil, nil, err - } - reactions := make([]*Reaction, 0, 10) - resp, err := c.getParsedResponse("GET", fmt.Sprintf("/repos/%s/%s/issues/comments/%d/reactions", owner, repo, commentID), nil, nil, &reactions) - return reactions, resp, err -} - -// editReactionOption contain the reaction type -type editReactionOption struct { - Reaction string `json:"content"` -} - -// PostIssueReaction add a reaction to an issue -func (c *Client) PostIssueReaction(owner, repo string, index int64, reaction string) (*Reaction, *Response, error) { - if err := escapeValidatePathSegments(&owner, &repo); err != nil { - return nil, nil, err - } - reactionResponse := new(Reaction) - body, err := json.Marshal(&editReactionOption{Reaction: reaction}) - if err != nil { - return nil, nil, err - } - resp, err := c.getParsedResponse("POST", - fmt.Sprintf("/repos/%s/%s/issues/%d/reactions", owner, repo, index), - jsonHeader, bytes.NewReader(body), reactionResponse) - return reactionResponse, resp, err -} - -// DeleteIssueReaction remove a reaction from an issue -func (c *Client) DeleteIssueReaction(owner, repo string, index int64, reaction string) (*Response, error) { - if err := escapeValidatePathSegments(&owner, &repo); err != nil { - return nil, err - } - body, err := json.Marshal(&editReactionOption{Reaction: reaction}) - if err != nil { - return nil, err - } - _, resp, err := c.getResponse("DELETE", fmt.Sprintf("/repos/%s/%s/issues/%d/reactions", owner, repo, index), jsonHeader, bytes.NewReader(body)) - return resp, err -} - -// PostIssueCommentReaction add a reaction to a comment of an issue -func (c *Client) PostIssueCommentReaction(owner, repo string, commentID int64, reaction string) (*Reaction, *Response, error) { - if err := escapeValidatePathSegments(&owner, &repo); err != nil { - return nil, nil, err - } - reactionResponse := new(Reaction) - body, err := json.Marshal(&editReactionOption{Reaction: reaction}) - if err != nil { - return nil, nil, err - } - resp, err := c.getParsedResponse("POST", - fmt.Sprintf("/repos/%s/%s/issues/comments/%d/reactions", owner, repo, commentID), - jsonHeader, bytes.NewReader(body), reactionResponse) - return reactionResponse, resp, err -} - -// DeleteIssueCommentReaction remove a reaction from a comment of an issue -func (c *Client) DeleteIssueCommentReaction(owner, repo string, commentID int64, reaction string) (*Response, error) { - if err := escapeValidatePathSegments(&owner, &repo); err != nil { - return nil, err - } - body, err := json.Marshal(&editReactionOption{Reaction: reaction}) - if err != nil { - return nil, err - } - _, resp, err := c.getResponse("DELETE", - fmt.Sprintf("/repos/%s/%s/issues/comments/%d/reactions", owner, repo, commentID), - jsonHeader, bytes.NewReader(body)) - return resp, err -} diff --git a/vendor/code.gitea.io/sdk/gitea/issue_stopwatch.go b/vendor/code.gitea.io/sdk/gitea/issue_stopwatch.go deleted file mode 100644 index ebb0b8ae40..0000000000 --- a/vendor/code.gitea.io/sdk/gitea/issue_stopwatch.go +++ /dev/null @@ -1,57 +0,0 @@ -// Copyright 2020 The Gitea Authors. All rights reserved. -// Use of this source code is governed by a MIT-style -// license that can be found in the LICENSE file. - -package gitea - -import ( - "fmt" - "time" -) - -// StopWatch represents a running stopwatch of an issue / pr -type StopWatch struct { - Created time.Time `json:"created"` - Seconds int64 `json:"seconds"` - Duration string `json:"duration"` - IssueIndex int64 `json:"issue_index"` - IssueTitle string `json:"issue_title"` - RepoOwnerName string `json:"repo_owner_name"` - RepoName string `json:"repo_name"` -} - -// GetMyStopwatches list all stopwatches -func (c *Client) GetMyStopwatches() ([]*StopWatch, *Response, error) { - stopwatches := make([]*StopWatch, 0, 1) - resp, err := c.getParsedResponse("GET", "/user/stopwatches", nil, nil, &stopwatches) - return stopwatches, resp, err -} - -// DeleteIssueStopwatch delete / cancel a specific stopwatch -func (c *Client) DeleteIssueStopwatch(owner, repo string, index int64) (*Response, error) { - if err := escapeValidatePathSegments(&owner, &repo); err != nil { - return nil, err - } - _, resp, err := c.getResponse("DELETE", fmt.Sprintf("/repos/%s/%s/issues/%d/stopwatch/delete", owner, repo, index), nil, nil) - return resp, err -} - -// StartIssueStopWatch starts a stopwatch for an existing issue for a given -// repository -func (c *Client) StartIssueStopWatch(owner, repo string, index int64) (*Response, error) { - if err := escapeValidatePathSegments(&owner, &repo); err != nil { - return nil, err - } - _, resp, err := c.getResponse("POST", fmt.Sprintf("/repos/%s/%s/issues/%d/stopwatch/start", owner, repo, index), nil, nil) - return resp, err -} - -// StopIssueStopWatch stops an existing stopwatch for an issue in a given -// repository -func (c *Client) StopIssueStopWatch(owner, repo string, index int64) (*Response, error) { - if err := escapeValidatePathSegments(&owner, &repo); err != nil { - return nil, err - } - _, resp, err := c.getResponse("POST", fmt.Sprintf("/repos/%s/%s/issues/%d/stopwatch/stop", owner, repo, index), nil, nil) - return resp, err -} diff --git a/vendor/code.gitea.io/sdk/gitea/issue_subscription.go b/vendor/code.gitea.io/sdk/gitea/issue_subscription.go deleted file mode 100644 index 86853c7186..0000000000 --- a/vendor/code.gitea.io/sdk/gitea/issue_subscription.go +++ /dev/null @@ -1,87 +0,0 @@ -// Copyright 2020 The Gitea Authors. All rights reserved. -// Use of this source code is governed by a MIT-style -// license that can be found in the LICENSE file. - -package gitea - -import ( - "fmt" - "net/http" -) - -// GetIssueSubscribers get list of users who subscribed on an issue -func (c *Client) GetIssueSubscribers(owner, repo string, index int64) ([]*User, *Response, error) { - if err := escapeValidatePathSegments(&owner, &repo); err != nil { - return nil, nil, err - } - subscribers := make([]*User, 0, 10) - resp, err := c.getParsedResponse("GET", fmt.Sprintf("/repos/%s/%s/issues/%d/subscriptions", owner, repo, index), nil, nil, &subscribers) - return subscribers, resp, err -} - -// AddIssueSubscription Subscribe user to issue -func (c *Client) AddIssueSubscription(owner, repo string, index int64, user string) (*Response, error) { - if err := escapeValidatePathSegments(&owner, &repo, &user); err != nil { - return nil, err - } - status, resp, err := c.getStatusCode("PUT", fmt.Sprintf("/repos/%s/%s/issues/%d/subscriptions/%s", owner, repo, index, user), nil, nil) - if err != nil { - return resp, err - } - if status == http.StatusCreated { - return resp, nil - } - if status == http.StatusOK { - return resp, fmt.Errorf("already subscribed") - } - return resp, fmt.Errorf("unexpected Status: %d", status) -} - -// DeleteIssueSubscription unsubscribe user from issue -func (c *Client) DeleteIssueSubscription(owner, repo string, index int64, user string) (*Response, error) { - if err := escapeValidatePathSegments(&owner, &repo, &user); err != nil { - return nil, err - } - status, resp, err := c.getStatusCode("DELETE", fmt.Sprintf("/repos/%s/%s/issues/%d/subscriptions/%s", owner, repo, index, user), nil, nil) - if err != nil { - return resp, err - } - if status == http.StatusCreated { - return resp, nil - } - if status == http.StatusOK { - return resp, fmt.Errorf("already unsubscribed") - } - return resp, fmt.Errorf("unexpected Status: %d", status) -} - -// CheckIssueSubscription check if current user is subscribed to an issue -func (c *Client) CheckIssueSubscription(owner, repo string, index int64) (*WatchInfo, *Response, error) { - if err := escapeValidatePathSegments(&owner, &repo); err != nil { - return nil, nil, err - } - if err := c.checkServerVersionGreaterThanOrEqual(version1_12_0); err != nil { - return nil, nil, err - } - wi := new(WatchInfo) - resp, err := c.getParsedResponse("GET", fmt.Sprintf("/repos/%s/%s/issues/%d/subscriptions/check", owner, repo, index), nil, nil, wi) - return wi, resp, err -} - -// IssueSubscribe subscribe current user to an issue -func (c *Client) IssueSubscribe(owner, repo string, index int64) (*Response, error) { - u, _, err := c.GetMyUserInfo() - if err != nil { - return nil, err - } - return c.AddIssueSubscription(owner, repo, index, u.UserName) -} - -// IssueUnSubscribe unsubscribe current user from an issue -func (c *Client) IssueUnSubscribe(owner, repo string, index int64) (*Response, error) { - u, _, err := c.GetMyUserInfo() - if err != nil { - return nil, err - } - return c.DeleteIssueSubscription(owner, repo, index, u.UserName) -} diff --git a/vendor/code.gitea.io/sdk/gitea/issue_tracked_time.go b/vendor/code.gitea.io/sdk/gitea/issue_tracked_time.go deleted file mode 100644 index c558516237..0000000000 --- a/vendor/code.gitea.io/sdk/gitea/issue_tracked_time.go +++ /dev/null @@ -1,142 +0,0 @@ -// Copyright 2017 The Gitea Authors. All rights reserved. -// Use of this source code is governed by a MIT-style -// license that can be found in the LICENSE file. - -package gitea - -import ( - "bytes" - "encoding/json" - "fmt" - "net/url" - "time" -) - -// TrackedTime worked time for an issue / pr -type TrackedTime struct { - ID int64 `json:"id"` - Created time.Time `json:"created"` - // Time in seconds - Time int64 `json:"time"` - // deprecated (only for backwards compatibility) - UserID int64 `json:"user_id"` - UserName string `json:"user_name"` - // deprecated (only for backwards compatibility) - IssueID int64 `json:"issue_id"` - Issue *Issue `json:"issue"` -} - -// ListTrackedTimesOptions options for listing repository's tracked times -type ListTrackedTimesOptions struct { - ListOptions - Since time.Time - Before time.Time - // User filter is only used by ListRepoTrackedTimes !!! - User string -} - -// QueryEncode turns options into querystring argument -func (opt *ListTrackedTimesOptions) QueryEncode() string { - query := opt.getURLQuery() - - if !opt.Since.IsZero() { - query.Add("since", opt.Since.Format(time.RFC3339)) - } - if !opt.Before.IsZero() { - query.Add("before", opt.Before.Format(time.RFC3339)) - } - - if len(opt.User) != 0 { - query.Add("user", opt.User) - } - - return query.Encode() -} - -// ListRepoTrackedTimes list tracked times of a repository -func (c *Client) ListRepoTrackedTimes(owner, repo string, opt ListTrackedTimesOptions) ([]*TrackedTime, *Response, error) { - if err := escapeValidatePathSegments(&owner, &repo); err != nil { - return nil, nil, err - } - link, _ := url.Parse(fmt.Sprintf("/repos/%s/%s/times", owner, repo)) - opt.setDefaults() - link.RawQuery = opt.QueryEncode() - times := make([]*TrackedTime, 0, opt.PageSize) - resp, err := c.getParsedResponse("GET", link.String(), jsonHeader, nil, ×) - return times, resp, err -} - -// GetMyTrackedTimes list tracked times of the current user -func (c *Client) GetMyTrackedTimes() ([]*TrackedTime, *Response, error) { - times := make([]*TrackedTime, 0, 10) - resp, err := c.getParsedResponse("GET", "/user/times", jsonHeader, nil, ×) - return times, resp, err -} - -// AddTimeOption options for adding time to an issue -type AddTimeOption struct { - // time in seconds - Time int64 `json:"time"` - // optional - Created time.Time `json:"created"` - // optional - User string `json:"user_name"` -} - -// Validate the AddTimeOption struct -func (opt AddTimeOption) Validate() error { - if opt.Time == 0 { - return fmt.Errorf("no time to add") - } - return nil -} - -// AddTime adds time to issue with the given index -func (c *Client) AddTime(owner, repo string, index int64, opt AddTimeOption) (*TrackedTime, *Response, error) { - if err := escapeValidatePathSegments(&owner, &repo); err != nil { - return nil, nil, err - } - if err := opt.Validate(); err != nil { - return nil, nil, err - } - body, err := json.Marshal(&opt) - if err != nil { - return nil, nil, err - } - t := new(TrackedTime) - resp, err := c.getParsedResponse("POST", - fmt.Sprintf("/repos/%s/%s/issues/%d/times", owner, repo, index), - jsonHeader, bytes.NewReader(body), t) - return t, resp, err -} - -// ListIssueTrackedTimes list tracked times of a single issue for a given repository -func (c *Client) ListIssueTrackedTimes(owner, repo string, index int64, opt ListTrackedTimesOptions) ([]*TrackedTime, *Response, error) { - if err := escapeValidatePathSegments(&owner, &repo); err != nil { - return nil, nil, err - } - link, _ := url.Parse(fmt.Sprintf("/repos/%s/%s/issues/%d/times", owner, repo, index)) - opt.setDefaults() - link.RawQuery = opt.QueryEncode() - times := make([]*TrackedTime, 0, opt.PageSize) - resp, err := c.getParsedResponse("GET", link.String(), jsonHeader, nil, ×) - return times, resp, err -} - -// ResetIssueTime reset tracked time of a single issue for a given repository -func (c *Client) ResetIssueTime(owner, repo string, index int64) (*Response, error) { - if err := escapeValidatePathSegments(&owner, &repo); err != nil { - return nil, err - } - _, resp, err := c.getResponse("DELETE", fmt.Sprintf("/repos/%s/%s/issues/%d/times", owner, repo, index), jsonHeader, nil) - return resp, err -} - -// DeleteTime delete a specific tracked time by id of a single issue for a given repository -func (c *Client) DeleteTime(owner, repo string, index, timeID int64) (*Response, error) { - if err := escapeValidatePathSegments(&owner, &repo); err != nil { - return nil, err - } - _, resp, err := c.getResponse("DELETE", fmt.Sprintf("/repos/%s/%s/issues/%d/times/%d", owner, repo, index, timeID), jsonHeader, nil) - return resp, err -} diff --git a/vendor/code.gitea.io/sdk/gitea/list_options.go b/vendor/code.gitea.io/sdk/gitea/list_options.go deleted file mode 100644 index 6f3ffb2313..0000000000 --- a/vendor/code.gitea.io/sdk/gitea/list_options.go +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright 2020 The Gitea Authors. All rights reserved. -// Use of this source code is governed by a MIT-style -// license that can be found in the LICENSE file. - -package gitea - -import ( - "fmt" - "net/url" -) - -const defaultPageSize = 10 -const maxPageSize = 50 - -// ListOptions options for using Gitea's API pagination -type ListOptions struct { - Page int - PageSize int -} - -func (o ListOptions) getURLQuery() url.Values { - query := make(url.Values) - query.Add("page", fmt.Sprintf("%d", o.Page)) - query.Add("limit", fmt.Sprintf("%d", o.PageSize)) - - return query -} - -// setDefaults set default pagination options if none or wrong are set -// if you set -1 as page it will set all to 0 -func (o *ListOptions) setDefaults() { - if o.Page < 0 { - o.Page, o.PageSize = 0, 0 - return - } else if o.Page == 0 { - o.Page = 1 - } - - if o.PageSize < 0 || o.PageSize > maxPageSize { - o.PageSize = defaultPageSize - } -} diff --git a/vendor/code.gitea.io/sdk/gitea/notifications.go b/vendor/code.gitea.io/sdk/gitea/notifications.go deleted file mode 100644 index 8b1ffa7ba2..0000000000 --- a/vendor/code.gitea.io/sdk/gitea/notifications.go +++ /dev/null @@ -1,241 +0,0 @@ -// Copyright 2020 The Gitea Authors. All rights reserved. -// Use of this source code is governed by a MIT-style -// license that can be found in the LICENSE file. - -package gitea - -import ( - "fmt" - "net/url" - "time" - - "github.com/hashicorp/go-version" -) - -var ( - version1_12_3, _ = version.NewVersion("1.12.3") -) - -// NotificationThread expose Notification on API -type NotificationThread struct { - ID int64 `json:"id"` - Repository *Repository `json:"repository"` - Subject *NotificationSubject `json:"subject"` - Unread bool `json:"unread"` - Pinned bool `json:"pinned"` - UpdatedAt time.Time `json:"updated_at"` - URL string `json:"url"` -} - -// NotificationSubject contains the notification subject (Issue/Pull/Commit) -type NotificationSubject struct { - Title string `json:"title"` - URL string `json:"url"` - LatestCommentURL string `json:"latest_comment_url"` - Type NotifySubjectType `json:"type"` - State NotifySubjectState `json:"state"` -} - -// NotifyStatus notification status type -type NotifyStatus string - -const ( - // NotifyStatusUnread was not read - NotifyStatusUnread NotifyStatus = "unread" - // NotifyStatusRead was already read by user - NotifyStatusRead NotifyStatus = "read" - // NotifyStatusPinned notification is pinned by user - NotifyStatusPinned NotifyStatus = "pinned" -) - -// NotifySubjectType represent type of notification subject -type NotifySubjectType string - -const ( - // NotifySubjectIssue an issue is subject of an notification - NotifySubjectIssue NotifySubjectType = "Issue" - // NotifySubjectPull an pull is subject of an notification - NotifySubjectPull NotifySubjectType = "Pull" - // NotifySubjectCommit an commit is subject of an notification - NotifySubjectCommit NotifySubjectType = "Commit" - // NotifySubjectRepository an repository is subject of an notification - NotifySubjectRepository NotifySubjectType = "Repository" -) - -// NotifySubjectState reflect state of notification subject -type NotifySubjectState string - -const ( - // NotifySubjectOpen if subject is a pull/issue and is open at the moment - NotifySubjectOpen NotifySubjectState = "open" - // NotifySubjectClosed if subject is a pull/issue and is closed at the moment - NotifySubjectClosed NotifySubjectState = "closed" - // NotifySubjectMerged if subject is a pull and got merged - NotifySubjectMerged NotifySubjectState = "merged" -) - -// ListNotificationOptions represents the filter options -type ListNotificationOptions struct { - ListOptions - Since time.Time - Before time.Time - Status []NotifyStatus - SubjectTypes []NotifySubjectType -} - -// MarkNotificationOptions represents the filter & modify options -type MarkNotificationOptions struct { - LastReadAt time.Time - Status []NotifyStatus - ToStatus NotifyStatus -} - -// QueryEncode encode options to url query -func (opt *ListNotificationOptions) QueryEncode() string { - query := opt.getURLQuery() - if !opt.Since.IsZero() { - query.Add("since", opt.Since.Format(time.RFC3339)) - } - if !opt.Before.IsZero() { - query.Add("before", opt.Before.Format(time.RFC3339)) - } - for _, s := range opt.Status { - query.Add("status-types", string(s)) - } - for _, s := range opt.SubjectTypes { - query.Add("subject-type", string(s)) - } - return query.Encode() -} - -// Validate the CreateUserOption struct -func (opt ListNotificationOptions) Validate(c *Client) error { - if len(opt.Status) != 0 { - return c.checkServerVersionGreaterThanOrEqual(version1_12_3) - } - return nil -} - -// QueryEncode encode options to url query -func (opt *MarkNotificationOptions) QueryEncode() string { - query := make(url.Values) - if !opt.LastReadAt.IsZero() { - query.Add("last_read_at", opt.LastReadAt.Format(time.RFC3339)) - } - for _, s := range opt.Status { - query.Add("status-types", string(s)) - } - if len(opt.ToStatus) != 0 { - query.Add("to-status", string(opt.ToStatus)) - } - return query.Encode() -} - -// Validate the CreateUserOption struct -func (opt MarkNotificationOptions) Validate(c *Client) error { - if len(opt.Status) != 0 || len(opt.ToStatus) != 0 { - return c.checkServerVersionGreaterThanOrEqual(version1_12_3) - } - return nil -} - -// CheckNotifications list users's notification threads -func (c *Client) CheckNotifications() (int64, *Response, error) { - if err := c.checkServerVersionGreaterThanOrEqual(version1_12_0); err != nil { - return 0, nil, err - } - new := struct { - New int64 `json:"new"` - }{} - - resp, err := c.getParsedResponse("GET", "/notifications/new", jsonHeader, nil, &new) - return new.New, resp, err -} - -// GetNotification get notification thread by ID -func (c *Client) GetNotification(id int64) (*NotificationThread, *Response, error) { - if err := c.checkServerVersionGreaterThanOrEqual(version1_12_0); err != nil { - return nil, nil, err - } - thread := new(NotificationThread) - resp, err := c.getParsedResponse("GET", fmt.Sprintf("/notifications/threads/%d", id), nil, nil, thread) - return thread, resp, err -} - -// ReadNotification mark notification thread as read by ID -// It optionally takes a second argument if status has to be set other than 'read' -func (c *Client) ReadNotification(id int64, status ...NotifyStatus) (*Response, error) { - if err := c.checkServerVersionGreaterThanOrEqual(version1_12_0); err != nil { - return nil, err - } - link := fmt.Sprintf("/notifications/threads/%d", id) - if len(status) != 0 { - link += fmt.Sprintf("?to-status=%s", status[0]) - } - _, resp, err := c.getResponse("PATCH", link, nil, nil) - return resp, err -} - -// ListNotifications list users's notification threads -func (c *Client) ListNotifications(opt ListNotificationOptions) ([]*NotificationThread, *Response, error) { - if err := c.checkServerVersionGreaterThanOrEqual(version1_12_0); err != nil { - return nil, nil, err - } - if err := opt.Validate(c); err != nil { - return nil, nil, err - } - link, _ := url.Parse("/notifications") - link.RawQuery = opt.QueryEncode() - threads := make([]*NotificationThread, 0, 10) - resp, err := c.getParsedResponse("GET", link.String(), nil, nil, &threads) - return threads, resp, err -} - -// ReadNotifications mark notification threads as read -func (c *Client) ReadNotifications(opt MarkNotificationOptions) (*Response, error) { - if err := c.checkServerVersionGreaterThanOrEqual(version1_12_0); err != nil { - return nil, err - } - if err := opt.Validate(c); err != nil { - return nil, err - } - link, _ := url.Parse("/notifications") - link.RawQuery = opt.QueryEncode() - _, resp, err := c.getResponse("PUT", link.String(), nil, nil) - return resp, err -} - -// ListRepoNotifications list users's notification threads on a specific repo -func (c *Client) ListRepoNotifications(owner, repo string, opt ListNotificationOptions) ([]*NotificationThread, *Response, error) { - if err := escapeValidatePathSegments(&owner, &repo); err != nil { - return nil, nil, err - } - if err := c.checkServerVersionGreaterThanOrEqual(version1_12_0); err != nil { - return nil, nil, err - } - if err := opt.Validate(c); err != nil { - return nil, nil, err - } - link, _ := url.Parse(fmt.Sprintf("/repos/%s/%s/notifications", owner, repo)) - link.RawQuery = opt.QueryEncode() - threads := make([]*NotificationThread, 0, 10) - resp, err := c.getParsedResponse("GET", link.String(), nil, nil, &threads) - return threads, resp, err -} - -// ReadRepoNotifications mark notification threads as read on a specific repo -func (c *Client) ReadRepoNotifications(owner, repo string, opt MarkNotificationOptions) (*Response, error) { - if err := escapeValidatePathSegments(&owner, &repo); err != nil { - return nil, err - } - if err := c.checkServerVersionGreaterThanOrEqual(version1_12_0); err != nil { - return nil, err - } - if err := opt.Validate(c); err != nil { - return nil, err - } - link, _ := url.Parse(fmt.Sprintf("/repos/%s/%s/notifications", owner, repo)) - link.RawQuery = opt.QueryEncode() - _, resp, err := c.getResponse("PUT", link.String(), nil, nil) - return resp, err -} diff --git a/vendor/code.gitea.io/sdk/gitea/oauth2.go b/vendor/code.gitea.io/sdk/gitea/oauth2.go deleted file mode 100644 index bbdfdafb67..0000000000 --- a/vendor/code.gitea.io/sdk/gitea/oauth2.go +++ /dev/null @@ -1,91 +0,0 @@ -// Copyright 2020 The Gitea Authors. All rights reserved. -// Use of this source code is governed by a MIT-style -// license that can be found in the LICENSE file. - -package gitea - -import ( - "bytes" - "encoding/json" - "fmt" - "time" -) - -// Oauth2 represents an Oauth2 Application -type Oauth2 struct { - ID int64 `json:"id"` - Name string `json:"name"` - ClientID string `json:"client_id"` - ClientSecret string `json:"client_secret"` - RedirectURIs []string `json:"redirect_uris"` - Created time.Time `json:"created"` -} - -// ListOauth2Option for listing Oauth2 Applications -type ListOauth2Option struct { - ListOptions -} - -// CreateOauth2Option required options for creating an Application -type CreateOauth2Option struct { - Name string `json:"name"` - RedirectURIs []string `json:"redirect_uris"` -} - -// CreateOauth2 create an Oauth2 Application and returns a completed Oauth2 object. -func (c *Client) CreateOauth2(opt CreateOauth2Option) (*Oauth2, *Response, error) { - if err := c.checkServerVersionGreaterThanOrEqual(version1_12_0); err != nil { - return nil, nil, err - } - body, err := json.Marshal(&opt) - if err != nil { - return nil, nil, err - } - oauth := new(Oauth2) - resp, err := c.getParsedResponse("POST", "/user/applications/oauth2", jsonHeader, bytes.NewReader(body), oauth) - return oauth, resp, err -} - -// UpdateOauth2 a specific Oauth2 Application by ID and return a completed Oauth2 object. -func (c *Client) UpdateOauth2(oauth2id int64, opt CreateOauth2Option) (*Oauth2, *Response, error) { - if err := c.checkServerVersionGreaterThanOrEqual(version1_12_0); err != nil { - return nil, nil, err - } - body, err := json.Marshal(&opt) - if err != nil { - return nil, nil, err - } - oauth := new(Oauth2) - resp, err := c.getParsedResponse("PATCH", fmt.Sprintf("/user/applications/oauth2/%d", oauth2id), jsonHeader, bytes.NewReader(body), oauth) - return oauth, resp, err -} - -// GetOauth2 a specific Oauth2 Application by ID. -func (c *Client) GetOauth2(oauth2id int64) (*Oauth2, *Response, error) { - if err := c.checkServerVersionGreaterThanOrEqual(version1_12_0); err != nil { - return nil, nil, err - } - oauth2s := &Oauth2{} - resp, err := c.getParsedResponse("GET", fmt.Sprintf("/user/applications/oauth2/%d", oauth2id), nil, nil, &oauth2s) - return oauth2s, resp, err -} - -// ListOauth2 all of your Oauth2 Applications. -func (c *Client) ListOauth2(opt ListOauth2Option) ([]*Oauth2, *Response, error) { - if err := c.checkServerVersionGreaterThanOrEqual(version1_12_0); err != nil { - return nil, nil, err - } - opt.setDefaults() - oauth2s := make([]*Oauth2, 0, opt.PageSize) - resp, err := c.getParsedResponse("GET", fmt.Sprintf("/user/applications/oauth2?%s", opt.getURLQuery().Encode()), nil, nil, &oauth2s) - return oauth2s, resp, err -} - -// DeleteOauth2 delete an Oauth2 application by ID -func (c *Client) DeleteOauth2(oauth2id int64) (*Response, error) { - if err := c.checkServerVersionGreaterThanOrEqual(version1_12_0); err != nil { - return nil, err - } - _, resp, err := c.getResponse("DELETE", fmt.Sprintf("/user/applications/oauth2/%d", oauth2id), nil, nil) - return resp, err -} diff --git a/vendor/code.gitea.io/sdk/gitea/org.go b/vendor/code.gitea.io/sdk/gitea/org.go deleted file mode 100644 index 82e1bf540d..0000000000 --- a/vendor/code.gitea.io/sdk/gitea/org.go +++ /dev/null @@ -1,155 +0,0 @@ -// Copyright 2015 The Gogs Authors. All rights reserved. -// Copyright 2019 The Gitea Authors. All rights reserved. -// Use of this source code is governed by a MIT-style -// license that can be found in the LICENSE file. - -package gitea - -import ( - "bytes" - "encoding/json" - "fmt" -) - -// Organization represents an organization -type Organization struct { - ID int64 `json:"id"` - UserName string `json:"username"` - FullName string `json:"full_name"` - AvatarURL string `json:"avatar_url"` - Description string `json:"description"` - Website string `json:"website"` - Location string `json:"location"` - Visibility string `json:"visibility"` -} - -// VisibleType defines the visibility -type VisibleType string - -const ( - // VisibleTypePublic Visible for everyone - VisibleTypePublic VisibleType = "public" - - // VisibleTypeLimited Visible for every connected user - VisibleTypeLimited VisibleType = "limited" - - // VisibleTypePrivate Visible only for organization's members - VisibleTypePrivate VisibleType = "private" -) - -// ListOrgsOptions options for listing organizations -type ListOrgsOptions struct { - ListOptions -} - -// ListMyOrgs list all of current user's organizations -func (c *Client) ListMyOrgs(opt ListOrgsOptions) ([]*Organization, *Response, error) { - opt.setDefaults() - orgs := make([]*Organization, 0, opt.PageSize) - resp, err := c.getParsedResponse("GET", fmt.Sprintf("/user/orgs?%s", opt.getURLQuery().Encode()), nil, nil, &orgs) - return orgs, resp, err -} - -// ListUserOrgs list all of some user's organizations -func (c *Client) ListUserOrgs(user string, opt ListOrgsOptions) ([]*Organization, *Response, error) { - if err := escapeValidatePathSegments(&user); err != nil { - return nil, nil, err - } - opt.setDefaults() - orgs := make([]*Organization, 0, opt.PageSize) - resp, err := c.getParsedResponse("GET", fmt.Sprintf("/users/%s/orgs?%s", user, opt.getURLQuery().Encode()), nil, nil, &orgs) - return orgs, resp, err -} - -// GetOrg get one organization by name -func (c *Client) GetOrg(orgname string) (*Organization, *Response, error) { - if err := escapeValidatePathSegments(&orgname); err != nil { - return nil, nil, err - } - org := new(Organization) - resp, err := c.getParsedResponse("GET", fmt.Sprintf("/orgs/%s", orgname), nil, nil, org) - return org, resp, err -} - -// CreateOrgOption options for creating an organization -type CreateOrgOption struct { - Name string `json:"username"` - FullName string `json:"full_name"` - Description string `json:"description"` - Website string `json:"website"` - Location string `json:"location"` - Visibility VisibleType `json:"visibility"` - RepoAdminChangeTeamAccess bool `json:"repo_admin_change_team_access"` -} - -// checkVisibilityOpt check if mode exist -func checkVisibilityOpt(v VisibleType) bool { - return v == VisibleTypePublic || v == VisibleTypeLimited || v == VisibleTypePrivate -} - -// Validate the CreateOrgOption struct -func (opt CreateOrgOption) Validate() error { - if len(opt.Name) == 0 { - return fmt.Errorf("empty org name") - } - if len(opt.Visibility) != 0 && !checkVisibilityOpt(opt.Visibility) { - return fmt.Errorf("infalid bisibility option") - } - return nil -} - -// CreateOrg creates an organization -func (c *Client) CreateOrg(opt CreateOrgOption) (*Organization, *Response, error) { - if err := opt.Validate(); err != nil { - return nil, nil, err - } - body, err := json.Marshal(&opt) - if err != nil { - return nil, nil, err - } - org := new(Organization) - resp, err := c.getParsedResponse("POST", "/orgs", jsonHeader, bytes.NewReader(body), org) - return org, resp, err -} - -// EditOrgOption options for editing an organization -type EditOrgOption struct { - FullName string `json:"full_name"` - Description string `json:"description"` - Website string `json:"website"` - Location string `json:"location"` - Visibility VisibleType `json:"visibility"` -} - -// Validate the EditOrgOption struct -func (opt EditOrgOption) Validate() error { - if len(opt.Visibility) != 0 && !checkVisibilityOpt(opt.Visibility) { - return fmt.Errorf("infalid bisibility option") - } - return nil -} - -// EditOrg modify one organization via options -func (c *Client) EditOrg(orgname string, opt EditOrgOption) (*Response, error) { - if err := escapeValidatePathSegments(&orgname); err != nil { - return nil, err - } - if err := opt.Validate(); err != nil { - return nil, err - } - body, err := json.Marshal(&opt) - if err != nil { - return nil, err - } - _, resp, err := c.getResponse("PATCH", fmt.Sprintf("/orgs/%s", orgname), jsonHeader, bytes.NewReader(body)) - return resp, err -} - -// DeleteOrg deletes an organization -func (c *Client) DeleteOrg(orgname string) (*Response, error) { - if err := escapeValidatePathSegments(&orgname); err != nil { - return nil, err - } - _, resp, err := c.getResponse("DELETE", fmt.Sprintf("/orgs/%s", orgname), jsonHeader, nil) - return resp, err -} diff --git a/vendor/code.gitea.io/sdk/gitea/org_member.go b/vendor/code.gitea.io/sdk/gitea/org_member.go deleted file mode 100644 index 1eed90f6b6..0000000000 --- a/vendor/code.gitea.io/sdk/gitea/org_member.go +++ /dev/null @@ -1,119 +0,0 @@ -// Copyright 2020 The Gitea Authors. All rights reserved. -// Use of this source code is governed by a MIT-style -// license that can be found in the LICENSE file. - -package gitea - -import ( - "fmt" - "net/http" - "net/url" -) - -// DeleteOrgMembership remove a member from an organization -func (c *Client) DeleteOrgMembership(org, user string) (*Response, error) { - if err := escapeValidatePathSegments(&org, &user); err != nil { - return nil, err - } - _, resp, err := c.getResponse("DELETE", fmt.Sprintf("/orgs/%s/members/%s", org, user), nil, nil) - return resp, err -} - -// ListOrgMembershipOption list OrgMembership options -type ListOrgMembershipOption struct { - ListOptions -} - -// ListOrgMembership list an organization's members -func (c *Client) ListOrgMembership(org string, opt ListOrgMembershipOption) ([]*User, *Response, error) { - if err := escapeValidatePathSegments(&org); err != nil { - return nil, nil, err - } - opt.setDefaults() - users := make([]*User, 0, opt.PageSize) - - link, _ := url.Parse(fmt.Sprintf("/orgs/%s/members", org)) - link.RawQuery = opt.getURLQuery().Encode() - resp, err := c.getParsedResponse("GET", link.String(), jsonHeader, nil, &users) - return users, resp, err -} - -// ListPublicOrgMembership list an organization's members -func (c *Client) ListPublicOrgMembership(org string, opt ListOrgMembershipOption) ([]*User, *Response, error) { - if err := escapeValidatePathSegments(&org); err != nil { - return nil, nil, err - } - opt.setDefaults() - users := make([]*User, 0, opt.PageSize) - - link, _ := url.Parse(fmt.Sprintf("/orgs/%s/public_members", org)) - link.RawQuery = opt.getURLQuery().Encode() - resp, err := c.getParsedResponse("GET", link.String(), jsonHeader, nil, &users) - return users, resp, err -} - -// CheckOrgMembership Check if a user is a member of an organization -func (c *Client) CheckOrgMembership(org, user string) (bool, *Response, error) { - if err := escapeValidatePathSegments(&org, &user); err != nil { - return false, nil, err - } - status, resp, err := c.getStatusCode("GET", fmt.Sprintf("/orgs/%s/members/%s", org, user), nil, nil) - if err != nil { - return false, resp, err - } - switch status { - case http.StatusNoContent: - return true, resp, nil - case http.StatusNotFound: - return false, resp, nil - default: - return false, resp, fmt.Errorf("unexpected Status: %d", status) - } -} - -// CheckPublicOrgMembership Check if a user is a member of an organization -func (c *Client) CheckPublicOrgMembership(org, user string) (bool, *Response, error) { - if err := escapeValidatePathSegments(&org, &user); err != nil { - return false, nil, err - } - status, resp, err := c.getStatusCode("GET", fmt.Sprintf("/orgs/%s/public_members/%s", org, user), nil, nil) - if err != nil { - return false, resp, err - } - switch status { - case http.StatusNoContent: - return true, resp, nil - case http.StatusNotFound: - return false, resp, nil - default: - return false, resp, fmt.Errorf("unexpected Status: %d", status) - } -} - -// SetPublicOrgMembership publicize/conceal a user's membership -func (c *Client) SetPublicOrgMembership(org, user string, visible bool) (*Response, error) { - if err := escapeValidatePathSegments(&org, &user); err != nil { - return nil, err - } - var ( - status int - err error - resp *Response - ) - if visible { - status, resp, err = c.getStatusCode("PUT", fmt.Sprintf("/orgs/%s/public_members/%s", org, user), nil, nil) - } else { - status, resp, err = c.getStatusCode("DELETE", fmt.Sprintf("/orgs/%s/public_members/%s", org, user), nil, nil) - } - if err != nil { - return resp, err - } - switch status { - case http.StatusNoContent: - return resp, nil - case http.StatusNotFound: - return resp, fmt.Errorf("forbidden") - default: - return resp, fmt.Errorf("unexpected Status: %d", status) - } -} diff --git a/vendor/code.gitea.io/sdk/gitea/org_team.go b/vendor/code.gitea.io/sdk/gitea/org_team.go deleted file mode 100644 index 4b1b27b4b7..0000000000 --- a/vendor/code.gitea.io/sdk/gitea/org_team.go +++ /dev/null @@ -1,242 +0,0 @@ -// Copyright 2019 The Gitea Authors. All rights reserved. -// Use of this source code is governed by a MIT-style -// license that can be found in the LICENSE file. - -package gitea - -import ( - "bytes" - "encoding/json" - "fmt" -) - -// Team represents a team in an organization -type Team struct { - ID int64 `json:"id"` - Name string `json:"name"` - Description string `json:"description"` - Organization *Organization `json:"organization"` - Permission AccessMode `json:"permission"` - CanCreateOrgRepo bool `json:"can_create_org_repo"` - IncludesAllRepositories bool `json:"includes_all_repositories"` - Units []RepoUnitType `json:"units"` -} - -// RepoUnitType represent all unit types of a repo gitea currently offer -type RepoUnitType string - -const ( - // RepoUnitCode represent file view of a repository - RepoUnitCode RepoUnitType = "repo.code" - // RepoUnitIssues represent issues of a repository - RepoUnitIssues RepoUnitType = "repo.issues" - // RepoUnitPulls represent pulls of a repository - RepoUnitPulls RepoUnitType = "repo.pulls" - // RepoUnitExtIssues represent external issues of a repository - RepoUnitExtIssues RepoUnitType = "repo.ext_issues" - // RepoUnitWiki represent wiki of a repository - RepoUnitWiki RepoUnitType = "repo.wiki" - // RepoUnitExtWiki represent external wiki of a repository - RepoUnitExtWiki RepoUnitType = "repo.ext_wiki" - // RepoUnitReleases represent releases of a repository - RepoUnitReleases RepoUnitType = "repo.releases" - // RepoUnitProjects represent projects of a repository - RepoUnitProjects RepoUnitType = "repo.projects" -) - -// ListTeamsOptions options for listing teams -type ListTeamsOptions struct { - ListOptions -} - -// ListOrgTeams lists all teams of an organization -func (c *Client) ListOrgTeams(org string, opt ListTeamsOptions) ([]*Team, *Response, error) { - if err := escapeValidatePathSegments(&org); err != nil { - return nil, nil, err - } - opt.setDefaults() - teams := make([]*Team, 0, opt.PageSize) - resp, err := c.getParsedResponse("GET", fmt.Sprintf("/orgs/%s/teams?%s", org, opt.getURLQuery().Encode()), nil, nil, &teams) - return teams, resp, err -} - -// ListMyTeams lists all the teams of the current user -func (c *Client) ListMyTeams(opt *ListTeamsOptions) ([]*Team, *Response, error) { - opt.setDefaults() - teams := make([]*Team, 0, opt.PageSize) - resp, err := c.getParsedResponse("GET", fmt.Sprintf("/user/teams?%s", opt.getURLQuery().Encode()), nil, nil, &teams) - return teams, resp, err -} - -// GetTeam gets a team by ID -func (c *Client) GetTeam(id int64) (*Team, *Response, error) { - t := new(Team) - resp, err := c.getParsedResponse("GET", fmt.Sprintf("/teams/%d", id), nil, nil, t) - return t, resp, err -} - -// CreateTeamOption options for creating a team -type CreateTeamOption struct { - Name string `json:"name"` - Description string `json:"description"` - Permission AccessMode `json:"permission"` - CanCreateOrgRepo bool `json:"can_create_org_repo"` - IncludesAllRepositories bool `json:"includes_all_repositories"` - Units []RepoUnitType `json:"units"` -} - -// Validate the CreateTeamOption struct -func (opt CreateTeamOption) Validate() error { - if opt.Permission == AccessModeOwner { - opt.Permission = AccessModeAdmin - } else if opt.Permission != AccessModeRead && opt.Permission != AccessModeWrite && opt.Permission != AccessModeAdmin { - return fmt.Errorf("permission mode invalid") - } - if len(opt.Name) == 0 { - return fmt.Errorf("name required") - } - if len(opt.Name) > 30 { - return fmt.Errorf("name to long") - } - if len(opt.Description) > 255 { - return fmt.Errorf("description to long") - } - return nil -} - -// CreateTeam creates a team for an organization -func (c *Client) CreateTeam(org string, opt CreateTeamOption) (*Team, *Response, error) { - if err := escapeValidatePathSegments(&org); err != nil { - return nil, nil, err - } - if err := opt.Validate(); err != nil { - return nil, nil, err - } - body, err := json.Marshal(&opt) - if err != nil { - return nil, nil, err - } - t := new(Team) - resp, err := c.getParsedResponse("POST", fmt.Sprintf("/orgs/%s/teams", org), jsonHeader, bytes.NewReader(body), t) - return t, resp, err -} - -// EditTeamOption options for editing a team -type EditTeamOption struct { - Name string `json:"name"` - Description *string `json:"description"` - Permission AccessMode `json:"permission"` - CanCreateOrgRepo *bool `json:"can_create_org_repo"` - IncludesAllRepositories *bool `json:"includes_all_repositories"` - Units []RepoUnitType `json:"units"` -} - -// Validate the EditTeamOption struct -func (opt EditTeamOption) Validate() error { - if opt.Permission == AccessModeOwner { - opt.Permission = AccessModeAdmin - } else if opt.Permission != AccessModeRead && opt.Permission != AccessModeWrite && opt.Permission != AccessModeAdmin { - return fmt.Errorf("permission mode invalid") - } - if len(opt.Name) == 0 { - return fmt.Errorf("name required") - } - if len(opt.Name) > 30 { - return fmt.Errorf("name to long") - } - if opt.Description != nil && len(*opt.Description) > 255 { - return fmt.Errorf("description to long") - } - return nil -} - -// EditTeam edits a team of an organization -func (c *Client) EditTeam(id int64, opt EditTeamOption) (*Response, error) { - if err := opt.Validate(); err != nil { - return nil, err - } - body, err := json.Marshal(&opt) - if err != nil { - return nil, err - } - _, resp, err := c.getResponse("PATCH", fmt.Sprintf("/teams/%d", id), jsonHeader, bytes.NewReader(body)) - return resp, err -} - -// DeleteTeam deletes a team of an organization -func (c *Client) DeleteTeam(id int64) (*Response, error) { - _, resp, err := c.getResponse("DELETE", fmt.Sprintf("/teams/%d", id), nil, nil) - return resp, err -} - -// ListTeamMembersOptions options for listing team's members -type ListTeamMembersOptions struct { - ListOptions -} - -// ListTeamMembers lists all members of a team -func (c *Client) ListTeamMembers(id int64, opt ListTeamMembersOptions) ([]*User, *Response, error) { - opt.setDefaults() - members := make([]*User, 0, opt.PageSize) - resp, err := c.getParsedResponse("GET", fmt.Sprintf("/teams/%d/members?%s", id, opt.getURLQuery().Encode()), nil, nil, &members) - return members, resp, err -} - -// GetTeamMember gets a member of a team -func (c *Client) GetTeamMember(id int64, user string) (*User, *Response, error) { - if err := escapeValidatePathSegments(&user); err != nil { - return nil, nil, err - } - m := new(User) - resp, err := c.getParsedResponse("GET", fmt.Sprintf("/teams/%d/members/%s", id, user), nil, nil, m) - return m, resp, err -} - -// AddTeamMember adds a member to a team -func (c *Client) AddTeamMember(id int64, user string) (*Response, error) { - if err := escapeValidatePathSegments(&user); err != nil { - return nil, err - } - _, resp, err := c.getResponse("PUT", fmt.Sprintf("/teams/%d/members/%s", id, user), nil, nil) - return resp, err -} - -// RemoveTeamMember removes a member from a team -func (c *Client) RemoveTeamMember(id int64, user string) (*Response, error) { - if err := escapeValidatePathSegments(&user); err != nil { - return nil, err - } - _, resp, err := c.getResponse("DELETE", fmt.Sprintf("/teams/%d/members/%s", id, user), nil, nil) - return resp, err -} - -// ListTeamRepositoriesOptions options for listing team's repositories -type ListTeamRepositoriesOptions struct { - ListOptions -} - -// ListTeamRepositories lists all repositories of a team -func (c *Client) ListTeamRepositories(id int64, opt ListTeamRepositoriesOptions) ([]*Repository, *Response, error) { - opt.setDefaults() - repos := make([]*Repository, 0, opt.PageSize) - resp, err := c.getParsedResponse("GET", fmt.Sprintf("/teams/%d/repos?%s", id, opt.getURLQuery().Encode()), nil, nil, &repos) - return repos, resp, err -} - -// AddTeamRepository adds a repository to a team -func (c *Client) AddTeamRepository(id int64, org, repo string) (*Response, error) { - if err := escapeValidatePathSegments(&org, &repo); err != nil { - return nil, err - } - _, resp, err := c.getResponse("PUT", fmt.Sprintf("/teams/%d/repos/%s/%s", id, org, repo), nil, nil) - return resp, err -} - -// RemoveTeamRepository removes a repository from a team -func (c *Client) RemoveTeamRepository(id int64, org, repo string) (*Response, error) { - if err := escapeValidatePathSegments(&org, &repo); err != nil { - return nil, err - } - _, resp, err := c.getResponse("DELETE", fmt.Sprintf("/teams/%d/repos/%s/%s", id, org, repo), nil, nil) - return resp, err -} diff --git a/vendor/code.gitea.io/sdk/gitea/pull.go b/vendor/code.gitea.io/sdk/gitea/pull.go deleted file mode 100644 index e0198c2890..0000000000 --- a/vendor/code.gitea.io/sdk/gitea/pull.go +++ /dev/null @@ -1,328 +0,0 @@ -// Copyright 2016 The Gogs Authors. All rights reserved. -// Copyright 2019 The Gitea Authors. All rights reserved. -// Use of this source code is governed by a MIT-style -// license that can be found in the LICENSE file. - -package gitea - -import ( - "bytes" - "encoding/json" - "fmt" - "net/url" - "strings" - "time" - - "github.com/hashicorp/go-version" -) - -// PRBranchInfo information about a branch -type PRBranchInfo struct { - Name string `json:"label"` - Ref string `json:"ref"` - Sha string `json:"sha"` - RepoID int64 `json:"repo_id"` - Repository *Repository `json:"repo"` -} - -// PullRequest represents a pull request -type PullRequest struct { - ID int64 `json:"id"` - URL string `json:"url"` - Index int64 `json:"number"` - Poster *User `json:"user"` - Title string `json:"title"` - Body string `json:"body"` - Labels []*Label `json:"labels"` - Milestone *Milestone `json:"milestone"` - Assignee *User `json:"assignee"` - Assignees []*User `json:"assignees"` - State StateType `json:"state"` - IsLocked bool `json:"is_locked"` - Comments int `json:"comments"` - - HTMLURL string `json:"html_url"` - DiffURL string `json:"diff_url"` - PatchURL string `json:"patch_url"` - - Mergeable bool `json:"mergeable"` - HasMerged bool `json:"merged"` - Merged *time.Time `json:"merged_at"` - MergedCommitID *string `json:"merge_commit_sha"` - MergedBy *User `json:"merged_by"` - - Base *PRBranchInfo `json:"base"` - Head *PRBranchInfo `json:"head"` - MergeBase string `json:"merge_base"` - - Deadline *time.Time `json:"due_date"` - Created *time.Time `json:"created_at"` - Updated *time.Time `json:"updated_at"` - Closed *time.Time `json:"closed_at"` -} - -// ListPullRequestsOptions options for listing pull requests -type ListPullRequestsOptions struct { - ListOptions - State StateType `json:"state"` - // oldest, recentupdate, leastupdate, mostcomment, leastcomment, priority - Sort string - Milestone int64 -} - -// MergeStyle is used specify how a pull is merged -type MergeStyle string - -const ( - // MergeStyleMerge merge pull as usual - MergeStyleMerge MergeStyle = "merge" - // MergeStyleRebase rebase pull - MergeStyleRebase MergeStyle = "rebase" - // MergeStyleRebaseMerge rebase and merge pull - MergeStyleRebaseMerge MergeStyle = "rebase-merge" - // MergeStyleSquash squash and merge pull - MergeStyleSquash MergeStyle = "squash" -) - -// QueryEncode turns options into querystring argument -func (opt *ListPullRequestsOptions) QueryEncode() string { - query := opt.getURLQuery() - if len(opt.State) > 0 { - query.Add("state", string(opt.State)) - } - if len(opt.Sort) > 0 { - query.Add("sort", opt.Sort) - } - if opt.Milestone > 0 { - query.Add("milestone", fmt.Sprintf("%d", opt.Milestone)) - } - return query.Encode() -} - -// ListRepoPullRequests list PRs of one repository -func (c *Client) ListRepoPullRequests(owner, repo string, opt ListPullRequestsOptions) ([]*PullRequest, *Response, error) { - if err := escapeValidatePathSegments(&owner, &repo); err != nil { - return nil, nil, err - } - opt.setDefaults() - prs := make([]*PullRequest, 0, opt.PageSize) - - link, _ := url.Parse(fmt.Sprintf("/repos/%s/%s/pulls", owner, repo)) - link.RawQuery = opt.QueryEncode() - resp, err := c.getParsedResponse("GET", link.String(), jsonHeader, nil, &prs) - if c.checkServerVersionGreaterThanOrEqual(version1_14_0) != nil { - for i := range prs { - if err := fixPullHeadSha(c, prs[i]); err != nil { - return prs, resp, err - } - } - } - return prs, resp, err -} - -// GetPullRequest get information of one PR -func (c *Client) GetPullRequest(owner, repo string, index int64) (*PullRequest, *Response, error) { - if err := escapeValidatePathSegments(&owner, &repo); err != nil { - return nil, nil, err - } - pr := new(PullRequest) - resp, err := c.getParsedResponse("GET", fmt.Sprintf("/repos/%s/%s/pulls/%d", owner, repo, index), nil, nil, pr) - if c.checkServerVersionGreaterThanOrEqual(version1_14_0) != nil { - if err := fixPullHeadSha(c, pr); err != nil { - return pr, resp, err - } - } - return pr, resp, err -} - -// CreatePullRequestOption options when creating a pull request -type CreatePullRequestOption struct { - Head string `json:"head"` - Base string `json:"base"` - Title string `json:"title"` - Body string `json:"body"` - Assignee string `json:"assignee"` - Assignees []string `json:"assignees"` - Milestone int64 `json:"milestone"` - Labels []int64 `json:"labels"` - Deadline *time.Time `json:"due_date"` -} - -// CreatePullRequest create pull request with options -func (c *Client) CreatePullRequest(owner, repo string, opt CreatePullRequestOption) (*PullRequest, *Response, error) { - if err := escapeValidatePathSegments(&owner, &repo); err != nil { - return nil, nil, err - } - body, err := json.Marshal(&opt) - if err != nil { - return nil, nil, err - } - pr := new(PullRequest) - resp, err := c.getParsedResponse("POST", - fmt.Sprintf("/repos/%s/%s/pulls", owner, repo), - jsonHeader, bytes.NewReader(body), pr) - return pr, resp, err -} - -// EditPullRequestOption options when modify pull request -type EditPullRequestOption struct { - Title string `json:"title"` - Body string `json:"body"` - Base string `json:"base"` - Assignee string `json:"assignee"` - Assignees []string `json:"assignees"` - Milestone int64 `json:"milestone"` - Labels []int64 `json:"labels"` - State *StateType `json:"state"` - Deadline *time.Time `json:"due_date"` -} - -// Validate the EditPullRequestOption struct -func (opt EditPullRequestOption) Validate(c *Client) error { - if len(opt.Title) != 0 && len(strings.TrimSpace(opt.Title)) == 0 { - return fmt.Errorf("title is empty") - } - if len(opt.Base) != 0 { - if err := c.checkServerVersionGreaterThanOrEqual(version1_12_0); err != nil { - return fmt.Errorf("can not change base gitea to old") - } - } - return nil -} - -// EditPullRequest modify pull request with PR id and options -func (c *Client) EditPullRequest(owner, repo string, index int64, opt EditPullRequestOption) (*PullRequest, *Response, error) { - if err := escapeValidatePathSegments(&owner, &repo); err != nil { - return nil, nil, err - } - if err := opt.Validate(c); err != nil { - return nil, nil, err - } - body, err := json.Marshal(&opt) - if err != nil { - return nil, nil, err - } - pr := new(PullRequest) - resp, err := c.getParsedResponse("PATCH", - fmt.Sprintf("/repos/%s/%s/pulls/%d", owner, repo, index), - jsonHeader, bytes.NewReader(body), pr) - return pr, resp, err -} - -// MergePullRequestOption options when merging a pull request -type MergePullRequestOption struct { - Style MergeStyle `json:"Do"` - Title string `json:"MergeTitleField"` - Message string `json:"MergeMessageField"` -} - -var version1_11_5, _ = version.NewVersion("1.11.5") - -// Validate the MergePullRequestOption struct -func (opt MergePullRequestOption) Validate(c *Client) error { - if opt.Style == MergeStyleSquash { - if err := c.checkServerVersionGreaterThanOrEqual(version1_11_5); err != nil { - return err - } - } - return nil -} - -// MergePullRequest merge a PR to repository by PR id -func (c *Client) MergePullRequest(owner, repo string, index int64, opt MergePullRequestOption) (bool, *Response, error) { - if err := escapeValidatePathSegments(&owner, &repo); err != nil { - return false, nil, err - } - if err := opt.Validate(c); err != nil { - return false, nil, err - } - body, err := json.Marshal(&opt) - if err != nil { - return false, nil, err - } - status, resp, err := c.getStatusCode("POST", fmt.Sprintf("/repos/%s/%s/pulls/%d/merge", owner, repo, index), jsonHeader, bytes.NewReader(body)) - if err != nil { - return false, resp, err - } - return status == 200, resp, nil -} - -// IsPullRequestMerged test if one PR is merged to one repository -func (c *Client) IsPullRequestMerged(owner, repo string, index int64) (bool, *Response, error) { - if err := escapeValidatePathSegments(&owner, &repo); err != nil { - return false, nil, err - } - status, resp, err := c.getStatusCode("GET", fmt.Sprintf("/repos/%s/%s/pulls/%d/merge", owner, repo, index), nil, nil) - - if err != nil { - return false, resp, err - } - - return status == 204, resp, nil -} - -// getPullRequestDiffOrPatch gets the patch or diff file as bytes for a PR -func (c *Client) getPullRequestDiffOrPatch(owner, repo, kind string, index int64) ([]byte, *Response, error) { - if err := escapeValidatePathSegments(&owner, &repo, &kind); err != nil { - return nil, nil, err - } - if err := c.checkServerVersionGreaterThanOrEqual(version1_13_0); err != nil { - r, _, err2 := c.GetRepo(owner, repo) - if err2 != nil { - return nil, nil, err - } - if r.Private { - return nil, nil, err - } - return c.getWebResponse("GET", fmt.Sprintf("/%s/%s/pulls/%d.%s", owner, repo, index, kind), nil) - } - return c.getResponse("GET", fmt.Sprintf("/repos/%s/%s/pulls/%d.%s", owner, repo, index, kind), nil, nil) -} - -// GetPullRequestPatch gets the .patch file as bytes for a PR -func (c *Client) GetPullRequestPatch(owner, repo string, index int64) ([]byte, *Response, error) { - return c.getPullRequestDiffOrPatch(owner, repo, "patch", index) -} - -// GetPullRequestDiff gets the .diff file as bytes for a PR -func (c *Client) GetPullRequestDiff(owner, repo string, index int64) ([]byte, *Response, error) { - return c.getPullRequestDiffOrPatch(owner, repo, "diff", index) -} - -// ListPullRequestCommitsOptions options for listing pull requests -type ListPullRequestCommitsOptions struct { - ListOptions -} - -// ListPullRequestCommits list commits for a pull request -func (c *Client) ListPullRequestCommits(owner, repo string, index int64, opt ListPullRequestCommitsOptions) ([]*Commit, *Response, error) { - if err := escapeValidatePathSegments(&owner, &repo); err != nil { - return nil, nil, err - } - link, _ := url.Parse(fmt.Sprintf("/repos/%s/%s/pulls/%d/commits", owner, repo, index)) - opt.setDefaults() - commits := make([]*Commit, 0, opt.PageSize) - link.RawQuery = opt.getURLQuery().Encode() - resp, err := c.getParsedResponse("GET", link.String(), nil, nil, &commits) - return commits, resp, err -} - -// fixPullHeadSha is a workaround for https://github.com/go-gitea/gitea/issues/12675 -// When no head sha is available, this is because the branch got deleted in the base repo. -// pr.Head.Ref points in this case not to the head repo branch name, but the base repo ref, -// which stays available to resolve the commit sha. This is fixed for gitea >= 1.14.0 -func fixPullHeadSha(client *Client, pr *PullRequest) error { - if pr.Base != nil && pr.Base.Repository != nil && pr.Base.Repository.Owner != nil && - pr.Head != nil && pr.Head.Ref != "" && pr.Head.Sha == "" { - owner := pr.Base.Repository.Owner.UserName - repo := pr.Base.Repository.Name - refs, _, err := client.GetRepoRefs(owner, repo, pr.Head.Ref) - if err != nil { - return err - } else if len(refs) == 0 { - return fmt.Errorf("unable to resolve PR ref '%s'", pr.Head.Ref) - } - pr.Head.Sha = refs[0].Object.SHA - } - return nil -} diff --git a/vendor/code.gitea.io/sdk/gitea/pull_review.go b/vendor/code.gitea.io/sdk/gitea/pull_review.go deleted file mode 100644 index a484dfdd9c..0000000000 --- a/vendor/code.gitea.io/sdk/gitea/pull_review.go +++ /dev/null @@ -1,325 +0,0 @@ -// Copyright 2020 The Gitea Authors. All rights reserved. -// Use of this source code is governed by a MIT-style -// license that can be found in the LICENSE file. - -package gitea - -import ( - "bytes" - "encoding/json" - "fmt" - "net/url" - "strings" - "time" -) - -// ReviewStateType review state type -type ReviewStateType string - -const ( - // ReviewStateApproved pr is approved - ReviewStateApproved ReviewStateType = "APPROVED" - // ReviewStatePending pr state is pending - ReviewStatePending ReviewStateType = "PENDING" - // ReviewStateComment is a comment review - ReviewStateComment ReviewStateType = "COMMENT" - // ReviewStateRequestChanges changes for pr are requested - ReviewStateRequestChanges ReviewStateType = "REQUEST_CHANGES" - // ReviewStateRequestReview review is requested from user - ReviewStateRequestReview ReviewStateType = "REQUEST_REVIEW" - // ReviewStateUnknown state of pr is unknown - ReviewStateUnknown ReviewStateType = "" -) - -// PullReview represents a pull request review -type PullReview struct { - ID int64 `json:"id"` - Reviewer *User `json:"user"` - ReviewerTeam *Team `json:"team"` - State ReviewStateType `json:"state"` - Body string `json:"body"` - CommitID string `json:"commit_id"` - // Stale indicates if the pull has changed since the review - Stale bool `json:"stale"` - // Official indicates if the review counts towards the required approval limit, if PR base is a protected branch - Official bool `json:"official"` - Dismissed bool `json:"dismissed"` - CodeCommentsCount int `json:"comments_count"` - Submitted time.Time `json:"submitted_at"` - - HTMLURL string `json:"html_url"` - HTMLPullURL string `json:"pull_request_url"` -} - -// PullReviewComment represents a comment on a pull request review -type PullReviewComment struct { - ID int64 `json:"id"` - Body string `json:"body"` - Reviewer *User `json:"user"` - ReviewID int64 `json:"pull_request_review_id"` - Resolver *User `json:"resolver"` - - Created time.Time `json:"created_at"` - Updated time.Time `json:"updated_at"` - - Path string `json:"path"` - CommitID string `json:"commit_id"` - OrigCommitID string `json:"original_commit_id"` - DiffHunk string `json:"diff_hunk"` - LineNum uint64 `json:"position"` - OldLineNum uint64 `json:"original_position"` - - HTMLURL string `json:"html_url"` - HTMLPullURL string `json:"pull_request_url"` -} - -// CreatePullReviewOptions are options to create a pull review -type CreatePullReviewOptions struct { - State ReviewStateType `json:"event"` - Body string `json:"body"` - CommitID string `json:"commit_id"` - Comments []CreatePullReviewComment `json:"comments"` -} - -// CreatePullReviewComment represent a review comment for creation api -type CreatePullReviewComment struct { - // the tree path - Path string `json:"path"` - Body string `json:"body"` - // if comment to old file line or 0 - OldLineNum int64 `json:"old_position"` - // if comment to new file line or 0 - NewLineNum int64 `json:"new_position"` -} - -// SubmitPullReviewOptions are options to submit a pending pull review -type SubmitPullReviewOptions struct { - State ReviewStateType `json:"event"` - Body string `json:"body"` -} - -// DismissPullReviewOptions are options to dismiss a pull review -type DismissPullReviewOptions struct { - Message string `json:"message"` -} - -// PullReviewRequestOptions are options to add or remove pull review requests -type PullReviewRequestOptions struct { - Reviewers []string `json:"reviewers"` - TeamReviewers []string `json:"team_reviewers"` -} - -// ListPullReviewsOptions options for listing PullReviews -type ListPullReviewsOptions struct { - ListOptions -} - -// Validate the CreatePullReviewOptions struct -func (opt CreatePullReviewOptions) Validate() error { - if opt.State != ReviewStateApproved && len(strings.TrimSpace(opt.Body)) == 0 { - return fmt.Errorf("body is empty") - } - for i := range opt.Comments { - if err := opt.Comments[i].Validate(); err != nil { - return err - } - } - return nil -} - -// Validate the SubmitPullReviewOptions struct -func (opt SubmitPullReviewOptions) Validate() error { - if opt.State != ReviewStateApproved && len(strings.TrimSpace(opt.Body)) == 0 { - return fmt.Errorf("body is empty") - } - return nil -} - -// Validate the CreatePullReviewComment struct -func (opt CreatePullReviewComment) Validate() error { - if len(strings.TrimSpace(opt.Body)) == 0 { - return fmt.Errorf("body is empty") - } - if opt.NewLineNum != 0 && opt.OldLineNum != 0 { - return fmt.Errorf("old and new line num are set, cant identify the code comment position") - } - return nil -} - -// ListPullReviews lists all reviews of a pull request -func (c *Client) ListPullReviews(owner, repo string, index int64, opt ListPullReviewsOptions) ([]*PullReview, *Response, error) { - if err := escapeValidatePathSegments(&owner, &repo); err != nil { - return nil, nil, err - } - if err := c.checkServerVersionGreaterThanOrEqual(version1_12_0); err != nil { - return nil, nil, err - } - opt.setDefaults() - rs := make([]*PullReview, 0, opt.PageSize) - - link, _ := url.Parse(fmt.Sprintf("/repos/%s/%s/pulls/%d/reviews", owner, repo, index)) - link.RawQuery = opt.ListOptions.getURLQuery().Encode() - - resp, err := c.getParsedResponse("GET", link.String(), jsonHeader, nil, &rs) - return rs, resp, err -} - -// GetPullReview gets a specific review of a pull request -func (c *Client) GetPullReview(owner, repo string, index, id int64) (*PullReview, *Response, error) { - if err := escapeValidatePathSegments(&owner, &repo); err != nil { - return nil, nil, err - } - if err := c.checkServerVersionGreaterThanOrEqual(version1_12_0); err != nil { - return nil, nil, err - } - - r := new(PullReview) - resp, err := c.getParsedResponse("GET", fmt.Sprintf("/repos/%s/%s/pulls/%d/reviews/%d", owner, repo, index, id), jsonHeader, nil, &r) - return r, resp, err -} - -// ListPullReviewComments lists all comments of a pull request review -func (c *Client) ListPullReviewComments(owner, repo string, index, id int64) ([]*PullReviewComment, *Response, error) { - if err := escapeValidatePathSegments(&owner, &repo); err != nil { - return nil, nil, err - } - if err := c.checkServerVersionGreaterThanOrEqual(version1_12_0); err != nil { - return nil, nil, err - } - rcl := make([]*PullReviewComment, 0, 4) - link, _ := url.Parse(fmt.Sprintf("/repos/%s/%s/pulls/%d/reviews/%d/comments", owner, repo, index, id)) - - resp, err := c.getParsedResponse("GET", link.String(), jsonHeader, nil, &rcl) - return rcl, resp, err -} - -// DeletePullReview delete a specific review from a pull request -func (c *Client) DeletePullReview(owner, repo string, index, id int64) (*Response, error) { - if err := escapeValidatePathSegments(&owner, &repo); err != nil { - return nil, err - } - if err := c.checkServerVersionGreaterThanOrEqual(version1_12_0); err != nil { - return nil, err - } - - _, resp, err := c.getResponse("DELETE", fmt.Sprintf("/repos/%s/%s/pulls/%d/reviews/%d", owner, repo, index, id), jsonHeader, nil) - return resp, err -} - -// CreatePullReview create a review to an pull request -func (c *Client) CreatePullReview(owner, repo string, index int64, opt CreatePullReviewOptions) (*PullReview, *Response, error) { - if err := escapeValidatePathSegments(&owner, &repo); err != nil { - return nil, nil, err - } - if err := c.checkServerVersionGreaterThanOrEqual(version1_12_0); err != nil { - return nil, nil, err - } - if err := opt.Validate(); err != nil { - return nil, nil, err - } - body, err := json.Marshal(&opt) - if err != nil { - return nil, nil, err - } - - r := new(PullReview) - resp, err := c.getParsedResponse("POST", - fmt.Sprintf("/repos/%s/%s/pulls/%d/reviews", owner, repo, index), - jsonHeader, bytes.NewReader(body), r) - return r, resp, err -} - -// SubmitPullReview submit a pending review to an pull request -func (c *Client) SubmitPullReview(owner, repo string, index, id int64, opt SubmitPullReviewOptions) (*PullReview, *Response, error) { - if err := escapeValidatePathSegments(&owner, &repo); err != nil { - return nil, nil, err - } - if err := c.checkServerVersionGreaterThanOrEqual(version1_12_0); err != nil { - return nil, nil, err - } - if err := opt.Validate(); err != nil { - return nil, nil, err - } - body, err := json.Marshal(&opt) - if err != nil { - return nil, nil, err - } - - r := new(PullReview) - resp, err := c.getParsedResponse("POST", - fmt.Sprintf("/repos/%s/%s/pulls/%d/reviews/%d", owner, repo, index, id), - jsonHeader, bytes.NewReader(body), r) - return r, resp, err -} - -// CreateReviewRequests create review requests to an pull request -func (c *Client) CreateReviewRequests(owner, repo string, index int64, opt PullReviewRequestOptions) (*Response, error) { - if err := escapeValidatePathSegments(&owner, &repo); err != nil { - return nil, err - } - if err := c.checkServerVersionGreaterThanOrEqual(version1_14_0); err != nil { - return nil, err - } - body, err := json.Marshal(&opt) - if err != nil { - return nil, err - } - - _, resp, err := c.getResponse("POST", - fmt.Sprintf("/repos/%s/%s/pulls/%d/requested_reviewers", owner, repo, index), - jsonHeader, bytes.NewReader(body)) - return resp, err -} - -// DeleteReviewRequests delete review requests to an pull request -func (c *Client) DeleteReviewRequests(owner, repo string, index int64, opt PullReviewRequestOptions) (*Response, error) { - if err := escapeValidatePathSegments(&owner, &repo); err != nil { - return nil, err - } - if err := c.checkServerVersionGreaterThanOrEqual(version1_14_0); err != nil { - return nil, err - } - body, err := json.Marshal(&opt) - if err != nil { - return nil, err - } - - _, resp, err := c.getResponse("DELETE", - fmt.Sprintf("/repos/%s/%s/pulls/%d/requested_reviewers", owner, repo, index), - jsonHeader, bytes.NewReader(body)) - return resp, err -} - -// DismissPullReview dismiss a review for a pull request -func (c *Client) DismissPullReview(owner, repo string, index, id int64, opt DismissPullReviewOptions) (*Response, error) { - if err := escapeValidatePathSegments(&owner, &repo); err != nil { - return nil, err - } - if err := c.checkServerVersionGreaterThanOrEqual(version1_14_0); err != nil { - return nil, err - } - body, err := json.Marshal(&opt) - if err != nil { - return nil, err - } - - _, resp, err := c.getResponse("POST", - fmt.Sprintf("/repos/%s/%s/pulls/%d/reviews/%d/dismissals", owner, repo, index, id), - jsonHeader, bytes.NewReader(body)) - return resp, err -} - -// UnDismissPullReview cancel to dismiss a review for a pull request -func (c *Client) UnDismissPullReview(owner, repo string, index, id int64) (*Response, error) { - if err := escapeValidatePathSegments(&owner, &repo); err != nil { - return nil, err - } - if err := c.checkServerVersionGreaterThanOrEqual(version1_14_0); err != nil { - return nil, err - } - - _, resp, err := c.getResponse("POST", - fmt.Sprintf("/repos/%s/%s/pulls/%d/reviews/%d/undismissals", owner, repo, index, id), - jsonHeader, nil) - return resp, err -} diff --git a/vendor/code.gitea.io/sdk/gitea/release.go b/vendor/code.gitea.io/sdk/gitea/release.go deleted file mode 100644 index c8e7681d02..0000000000 --- a/vendor/code.gitea.io/sdk/gitea/release.go +++ /dev/null @@ -1,202 +0,0 @@ -// Copyright 2016 The Gitea Authors. All rights reserved. -// Use of this source code is governed by a MIT-style -// license that can be found in the LICENSE file. - -package gitea - -import ( - "bytes" - "encoding/json" - "fmt" - "net/http" - "strings" - "time" -) - -// Release represents a repository release -type Release struct { - ID int64 `json:"id"` - TagName string `json:"tag_name"` - Target string `json:"target_commitish"` - Title string `json:"name"` - Note string `json:"body"` - URL string `json:"url"` - HTMLURL string `json:"html_url"` - TarURL string `json:"tarball_url"` - ZipURL string `json:"zipball_url"` - IsDraft bool `json:"draft"` - IsPrerelease bool `json:"prerelease"` - CreatedAt time.Time `json:"created_at"` - PublishedAt time.Time `json:"published_at"` - Publisher *User `json:"author"` - Attachments []*Attachment `json:"assets"` -} - -// ListReleasesOptions options for listing repository's releases -type ListReleasesOptions struct { - ListOptions - IsDraft *bool - IsPreRelease *bool -} - -// QueryEncode turns options into querystring argument -func (opt *ListReleasesOptions) QueryEncode() string { - query := opt.getURLQuery() - - if opt.IsDraft != nil { - query.Add("draft", fmt.Sprintf("%t", *opt.IsDraft)) - } - if opt.IsPreRelease != nil { - query.Add("draft", fmt.Sprintf("%t", *opt.IsPreRelease)) - } - - return query.Encode() -} - -// ListReleases list releases of a repository -func (c *Client) ListReleases(owner, repo string, opt ListReleasesOptions) ([]*Release, *Response, error) { - if err := escapeValidatePathSegments(&owner, &repo); err != nil { - return nil, nil, err - } - opt.setDefaults() - releases := make([]*Release, 0, opt.PageSize) - resp, err := c.getParsedResponse("GET", - fmt.Sprintf("/repos/%s/%s/releases?%s", owner, repo, opt.QueryEncode()), - nil, nil, &releases) - return releases, resp, err -} - -// GetRelease get a release of a repository by id -func (c *Client) GetRelease(owner, repo string, id int64) (*Release, *Response, error) { - if err := escapeValidatePathSegments(&owner, &repo); err != nil { - return nil, nil, err - } - r := new(Release) - resp, err := c.getParsedResponse("GET", - fmt.Sprintf("/repos/%s/%s/releases/%d", owner, repo, id), - jsonHeader, nil, &r) - return r, resp, err -} - -// GetReleaseByTag get a release of a repository by tag -func (c *Client) GetReleaseByTag(owner, repo string, tag string) (*Release, *Response, error) { - if c.checkServerVersionGreaterThanOrEqual(version1_13_0) != nil { - return c.fallbackGetReleaseByTag(owner, repo, tag) - } - if err := escapeValidatePathSegments(&owner, &repo, &tag); err != nil { - return nil, nil, err - } - r := new(Release) - resp, err := c.getParsedResponse("GET", - fmt.Sprintf("/repos/%s/%s/releases/tags/%s", owner, repo, tag), - nil, nil, &r) - return r, resp, err -} - -// CreateReleaseOption options when creating a release -type CreateReleaseOption struct { - TagName string `json:"tag_name"` - Target string `json:"target_commitish"` - Title string `json:"name"` - Note string `json:"body"` - IsDraft bool `json:"draft"` - IsPrerelease bool `json:"prerelease"` -} - -// Validate the CreateReleaseOption struct -func (opt CreateReleaseOption) Validate() error { - if len(strings.TrimSpace(opt.Title)) == 0 { - return fmt.Errorf("title is empty") - } - return nil -} - -// CreateRelease create a release -func (c *Client) CreateRelease(owner, repo string, opt CreateReleaseOption) (*Release, *Response, error) { - if err := escapeValidatePathSegments(&owner, &repo); err != nil { - return nil, nil, err - } - if err := opt.Validate(); err != nil { - return nil, nil, err - } - body, err := json.Marshal(opt) - if err != nil { - return nil, nil, err - } - r := new(Release) - resp, err := c.getParsedResponse("POST", - fmt.Sprintf("/repos/%s/%s/releases", owner, repo), - jsonHeader, bytes.NewReader(body), r) - return r, resp, err -} - -// EditReleaseOption options when editing a release -type EditReleaseOption struct { - TagName string `json:"tag_name"` - Target string `json:"target_commitish"` - Title string `json:"name"` - Note string `json:"body"` - IsDraft *bool `json:"draft"` - IsPrerelease *bool `json:"prerelease"` -} - -// EditRelease edit a release -func (c *Client) EditRelease(owner, repo string, id int64, form EditReleaseOption) (*Release, *Response, error) { - if err := escapeValidatePathSegments(&owner, &repo); err != nil { - return nil, nil, err - } - body, err := json.Marshal(form) - if err != nil { - return nil, nil, err - } - r := new(Release) - resp, err := c.getParsedResponse("PATCH", - fmt.Sprintf("/repos/%s/%s/releases/%d", owner, repo, id), - jsonHeader, bytes.NewReader(body), r) - return r, resp, err -} - -// DeleteRelease delete a release from a repository, keeping its tag -func (c *Client) DeleteRelease(user, repo string, id int64) (*Response, error) { - if err := escapeValidatePathSegments(&user, &repo); err != nil { - return nil, err - } - _, resp, err := c.getResponse("DELETE", - fmt.Sprintf("/repos/%s/%s/releases/%d", user, repo, id), - nil, nil) - return resp, err -} - -// DeleteReleaseByTag deletes a release frm a repository by tag -func (c *Client) DeleteReleaseByTag(user, repo string, tag string) (*Response, error) { - if err := escapeValidatePathSegments(&user, &repo, &tag); err != nil { - return nil, err - } - if err := c.checkServerVersionGreaterThanOrEqual(version1_14_0); err != nil { - return nil, err - } - _, resp, err := c.getResponse("DELETE", - fmt.Sprintf("/repos/%s/%s/releases/tags/%s", user, repo, tag), - nil, nil) - return resp, err -} - -// fallbackGetReleaseByTag is fallback for old gitea installations ( < 1.13.0 ) -func (c *Client) fallbackGetReleaseByTag(owner, repo string, tag string) (*Release, *Response, error) { - for i := 1; ; i++ { - rl, resp, err := c.ListReleases(owner, repo, ListReleasesOptions{ListOptions: ListOptions{Page: i}}) - if err != nil { - return nil, resp, err - } - if len(rl) == 0 { - return nil, - &Response{&http.Response{StatusCode: 404}}, - fmt.Errorf("release with tag '%s' not found", tag) - } - for _, r := range rl { - if r.TagName == tag { - return r, resp, nil - } - } - } -} diff --git a/vendor/code.gitea.io/sdk/gitea/repo.go b/vendor/code.gitea.io/sdk/gitea/repo.go deleted file mode 100644 index 62d13a3ab5..0000000000 --- a/vendor/code.gitea.io/sdk/gitea/repo.go +++ /dev/null @@ -1,534 +0,0 @@ -// Copyright 2014 The Gogs Authors. All rights reserved. -// Copyright 2020 The Gitea Authors. All rights reserved. -// Use of this source code is governed by a MIT-style -// license that can be found in the LICENSE file. - -package gitea - -import ( - "bytes" - "encoding/json" - "fmt" - "io" - "net/url" - "strings" - "time" -) - -// Permission represents a set of permissions -type Permission struct { - Admin bool `json:"admin"` - Push bool `json:"push"` - Pull bool `json:"pull"` -} - -// InternalTracker represents settings for internal tracker -type InternalTracker struct { - // Enable time tracking (Built-in issue tracker) - EnableTimeTracker bool `json:"enable_time_tracker"` - // Let only contributors track time (Built-in issue tracker) - AllowOnlyContributorsToTrackTime bool `json:"allow_only_contributors_to_track_time"` - // Enable dependencies for issues and pull requests (Built-in issue tracker) - EnableIssueDependencies bool `json:"enable_issue_dependencies"` -} - -// ExternalTracker represents settings for external tracker -type ExternalTracker struct { - // URL of external issue tracker. - ExternalTrackerURL string `json:"external_tracker_url"` - // External Issue Tracker URL Format. Use the placeholders {user}, {repo} and {index} for the username, repository name and issue index. - ExternalTrackerFormat string `json:"external_tracker_format"` - // External Issue Tracker Number Format, either `numeric` or `alphanumeric` - ExternalTrackerStyle string `json:"external_tracker_style"` -} - -// ExternalWiki represents setting for external wiki -type ExternalWiki struct { - // URL of external wiki. - ExternalWikiURL string `json:"external_wiki_url"` -} - -// Repository represents a repository -type Repository struct { - ID int64 `json:"id"` - Owner *User `json:"owner"` - Name string `json:"name"` - FullName string `json:"full_name"` - Description string `json:"description"` - Empty bool `json:"empty"` - Private bool `json:"private"` - Fork bool `json:"fork"` - Template bool `json:"template"` - Parent *Repository `json:"parent"` - Mirror bool `json:"mirror"` - Size int `json:"size"` - HTMLURL string `json:"html_url"` - SSHURL string `json:"ssh_url"` - CloneURL string `json:"clone_url"` - OriginalURL string `json:"original_url"` - Website string `json:"website"` - Stars int `json:"stars_count"` - Forks int `json:"forks_count"` - Watchers int `json:"watchers_count"` - OpenIssues int `json:"open_issues_count"` - OpenPulls int `json:"open_pr_counter"` - Releases int `json:"release_counter"` - DefaultBranch string `json:"default_branch"` - Archived bool `json:"archived"` - Created time.Time `json:"created_at"` - Updated time.Time `json:"updated_at"` - Permissions *Permission `json:"permissions,omitempty"` - HasIssues bool `json:"has_issues"` - InternalTracker *InternalTracker `json:"internal_tracker,omitempty"` - ExternalTracker *ExternalTracker `json:"external_tracker,omitempty"` - HasWiki bool `json:"has_wiki"` - ExternalWiki *ExternalWiki `json:"external_wiki,omitempty"` - HasPullRequests bool `json:"has_pull_requests"` - HasProjects bool `json:"has_projects"` - IgnoreWhitespaceConflicts bool `json:"ignore_whitespace_conflicts"` - AllowMerge bool `json:"allow_merge_commits"` - AllowRebase bool `json:"allow_rebase"` - AllowRebaseMerge bool `json:"allow_rebase_explicit"` - AllowSquash bool `json:"allow_squash_merge"` - AvatarURL string `json:"avatar_url"` - Internal bool `json:"internal"` - MirrorInterval string `json:"mirror_interval"` - DefaultMergeStyle MergeStyle `json:"default_merge_style"` -} - -// RepoType represent repo type -type RepoType string - -const ( - // RepoTypeNone dont specify a type - RepoTypeNone RepoType = "" - // RepoTypeSource is the default repo type - RepoTypeSource RepoType = "source" - // RepoTypeFork is a repo witch was forked from an other one - RepoTypeFork RepoType = "fork" - // RepoTypeMirror represents an mirror repo - RepoTypeMirror RepoType = "mirror" -) - -// TrustModel represent how git signatures are handled in a repository -type TrustModel string - -const ( - // TrustModelDefault use TM set by global config - TrustModelDefault TrustModel = "default" - // TrustModelCollaborator gpg signature has to be owned by a repo collaborator - TrustModelCollaborator TrustModel = "collaborator" - // TrustModelCommitter gpg signature has to match committer - TrustModelCommitter TrustModel = "committer" - // TrustModelCollaboratorCommitter gpg signature has to match committer and owned by a repo collaborator - TrustModelCollaboratorCommitter TrustModel = "collaboratorcommitter" -) - -// ListReposOptions options for listing repositories -type ListReposOptions struct { - ListOptions -} - -// ListMyRepos lists all repositories for the authenticated user that has access to. -func (c *Client) ListMyRepos(opt ListReposOptions) ([]*Repository, *Response, error) { - opt.setDefaults() - repos := make([]*Repository, 0, opt.PageSize) - resp, err := c.getParsedResponse("GET", fmt.Sprintf("/user/repos?%s", opt.getURLQuery().Encode()), nil, nil, &repos) - return repos, resp, err -} - -// ListUserRepos list all repositories of one user by user's name -func (c *Client) ListUserRepos(user string, opt ListReposOptions) ([]*Repository, *Response, error) { - if err := escapeValidatePathSegments(&user); err != nil { - return nil, nil, err - } - opt.setDefaults() - repos := make([]*Repository, 0, opt.PageSize) - resp, err := c.getParsedResponse("GET", fmt.Sprintf("/users/%s/repos?%s", user, opt.getURLQuery().Encode()), nil, nil, &repos) - return repos, resp, err -} - -// ListOrgReposOptions options for a organization's repositories -type ListOrgReposOptions struct { - ListOptions -} - -// ListOrgRepos list all repositories of one organization by organization's name -func (c *Client) ListOrgRepos(org string, opt ListOrgReposOptions) ([]*Repository, *Response, error) { - if err := escapeValidatePathSegments(&org); err != nil { - return nil, nil, err - } - opt.setDefaults() - repos := make([]*Repository, 0, opt.PageSize) - resp, err := c.getParsedResponse("GET", fmt.Sprintf("/orgs/%s/repos?%s", org, opt.getURLQuery().Encode()), nil, nil, &repos) - return repos, resp, err -} - -// SearchRepoOptions options for searching repositories -type SearchRepoOptions struct { - ListOptions - - // The keyword to query - Keyword string - // Limit search to repositories with keyword as topic - KeywordIsTopic bool - // Include search of keyword within repository description - KeywordInDescription bool - - /* - User Filter - */ - - // Repo Owner - OwnerID int64 - // Stared By UserID - StarredByUserID int64 - - /* - Repo Attributes - */ - - // pubic, private or all repositories (defaults to all) - IsPrivate *bool - // archived, non-archived or all repositories (defaults to all) - IsArchived *bool - // Exclude template repos from search - ExcludeTemplate bool - // Filter by "fork", "source", "mirror" - Type RepoType - - /* - Sort Filters - */ - - // sort repos by attribute. Supported values are "alpha", "created", "updated", "size", and "id". Default is "alpha" - Sort string - // sort order, either "asc" (ascending) or "desc" (descending). Default is "asc", ignored if "sort" is not specified. - Order string - // Repo owner to prioritize in the results - PrioritizedByOwnerID int64 - - /* - Cover EdgeCases - */ - // if set all other options are ignored and this string is used as query - RawQuery string -} - -// QueryEncode turns options into querystring argument -func (opt *SearchRepoOptions) QueryEncode() string { - query := opt.getURLQuery() - if opt.Keyword != "" { - query.Add("q", opt.Keyword) - } - if opt.KeywordIsTopic { - query.Add("topic", "true") - } - if opt.KeywordInDescription { - query.Add("includeDesc", "true") - } - - // User Filter - if opt.OwnerID > 0 { - query.Add("uid", fmt.Sprintf("%d", opt.OwnerID)) - query.Add("exclusive", "true") - } - if opt.StarredByUserID > 0 { - query.Add("starredBy", fmt.Sprintf("%d", opt.StarredByUserID)) - } - - // Repo Attributes - if opt.IsPrivate != nil { - query.Add("is_private", fmt.Sprintf("%v", opt.IsPrivate)) - } - if opt.IsArchived != nil { - query.Add("archived", fmt.Sprintf("%v", opt.IsArchived)) - } - if opt.ExcludeTemplate { - query.Add("template", "false") - } - if len(opt.Type) != 0 { - query.Add("mode", string(opt.Type)) - } - - // Sort Filters - if opt.Sort != "" { - query.Add("sort", opt.Sort) - } - if opt.PrioritizedByOwnerID > 0 { - query.Add("priority_owner_id", fmt.Sprintf("%d", opt.PrioritizedByOwnerID)) - } - if opt.Order != "" { - query.Add("order", opt.Order) - } - - return query.Encode() -} - -type searchRepoResponse struct { - Repos []*Repository `json:"data"` -} - -// SearchRepos searches for repositories matching the given filters -func (c *Client) SearchRepos(opt SearchRepoOptions) ([]*Repository, *Response, error) { - opt.setDefaults() - repos := new(searchRepoResponse) - - link, _ := url.Parse("/repos/search") - - if len(opt.RawQuery) != 0 { - link.RawQuery = opt.RawQuery - } else { - link.RawQuery = opt.QueryEncode() - // IsPrivate only works on gitea >= 1.12.0 - if err := c.checkServerVersionGreaterThanOrEqual(version1_12_0); err != nil && opt.IsPrivate != nil { - if *opt.IsPrivate { - // private repos only not supported on gitea <= 1.11.x - return nil, nil, err - } - link.Query().Add("private", "false") - } - } - - resp, err := c.getParsedResponse("GET", link.String(), nil, nil, &repos) - return repos.Repos, resp, err -} - -// CreateRepoOption options when creating repository -type CreateRepoOption struct { - // Name of the repository to create - Name string `json:"name"` - // Description of the repository to create - Description string `json:"description"` - // Whether the repository is private - Private bool `json:"private"` - // Issue Label set to use - IssueLabels string `json:"issue_labels"` - // Whether the repository should be auto-intialized? - AutoInit bool `json:"auto_init"` - // Whether the repository is template - Template bool `json:"template"` - // Gitignores to use - Gitignores string `json:"gitignores"` - // License to use - License string `json:"license"` - // Readme of the repository to create - Readme string `json:"readme"` - // DefaultBranch of the repository (used when initializes and in template) - DefaultBranch string `json:"default_branch"` - // TrustModel of the repository - TrustModel TrustModel `json:"trust_model"` -} - -// Validate the CreateRepoOption struct -func (opt CreateRepoOption) Validate(c *Client) error { - if len(strings.TrimSpace(opt.Name)) == 0 { - return fmt.Errorf("name is empty") - } - if len(opt.Name) > 100 { - return fmt.Errorf("name has more than 100 chars") - } - if len(opt.Description) > 255 { - return fmt.Errorf("name has more than 255 chars") - } - if len(opt.DefaultBranch) > 100 { - return fmt.Errorf("name has more than 100 chars") - } - if len(opt.TrustModel) != 0 { - if err := c.checkServerVersionGreaterThanOrEqual(version1_13_0); err != nil { - return err - } - } - return nil -} - -// CreateRepo creates a repository for authenticated user. -func (c *Client) CreateRepo(opt CreateRepoOption) (*Repository, *Response, error) { - if err := opt.Validate(c); err != nil { - return nil, nil, err - } - body, err := json.Marshal(&opt) - if err != nil { - return nil, nil, err - } - repo := new(Repository) - resp, err := c.getParsedResponse("POST", "/user/repos", jsonHeader, bytes.NewReader(body), repo) - return repo, resp, err -} - -// CreateOrgRepo creates an organization repository for authenticated user. -func (c *Client) CreateOrgRepo(org string, opt CreateRepoOption) (*Repository, *Response, error) { - if err := escapeValidatePathSegments(&org); err != nil { - return nil, nil, err - } - if err := opt.Validate(c); err != nil { - return nil, nil, err - } - body, err := json.Marshal(&opt) - if err != nil { - return nil, nil, err - } - repo := new(Repository) - resp, err := c.getParsedResponse("POST", fmt.Sprintf("/org/%s/repos", org), jsonHeader, bytes.NewReader(body), repo) - return repo, resp, err -} - -// GetRepo returns information of a repository of given owner. -func (c *Client) GetRepo(owner, reponame string) (*Repository, *Response, error) { - if err := escapeValidatePathSegments(&owner, &reponame); err != nil { - return nil, nil, err - } - repo := new(Repository) - resp, err := c.getParsedResponse("GET", fmt.Sprintf("/repos/%s/%s", owner, reponame), nil, nil, repo) - return repo, resp, err -} - -// GetRepoByID returns information of a repository by a giver repository ID. -func (c *Client) GetRepoByID(id int64) (*Repository, *Response, error) { - repo := new(Repository) - resp, err := c.getParsedResponse("GET", fmt.Sprintf("/repositories/%d", id), nil, nil, repo) - return repo, resp, err -} - -// EditRepoOption options when editing a repository's properties -type EditRepoOption struct { - // name of the repository - Name *string `json:"name,omitempty"` - // a short description of the repository. - Description *string `json:"description,omitempty"` - // a URL with more information about the repository. - Website *string `json:"website,omitempty"` - // either `true` to make the repository private or `false` to make it public. - // Note: you will get a 422 error if the organization restricts changing repository visibility to organization - // owners and a non-owner tries to change the value of private. - Private *bool `json:"private,omitempty"` - // either `true` to make this repository a template or `false` to make it a normal repository - Template *bool `json:"template,omitempty"` - // either `true` to enable issues for this repository or `false` to disable them. - HasIssues *bool `json:"has_issues,omitempty"` - // set this structure to configure internal issue tracker (requires has_issues) - InternalTracker *InternalTracker `json:"internal_tracker,omitempty"` - // set this structure to use external issue tracker (requires has_issues) - ExternalTracker *ExternalTracker `json:"external_tracker,omitempty"` - // either `true` to enable the wiki for this repository or `false` to disable it. - HasWiki *bool `json:"has_wiki,omitempty"` - // set this structure to use external wiki instead of internal (requires has_wiki) - ExternalWiki *ExternalWiki `json:"external_wiki,omitempty"` - // sets the default branch for this repository. - DefaultBranch *string `json:"default_branch,omitempty"` - // either `true` to allow pull requests, or `false` to prevent pull request. - HasPullRequests *bool `json:"has_pull_requests,omitempty"` - // either `true` to enable project unit, or `false` to disable them. - HasProjects *bool `json:"has_projects,omitempty"` - // either `true` to ignore whitespace for conflicts, or `false` to not ignore whitespace. `has_pull_requests` must be `true`. - IgnoreWhitespaceConflicts *bool `json:"ignore_whitespace_conflicts,omitempty"` - // either `true` to allow merging pull requests with a merge commit, or `false` to prevent merging pull requests with merge commits. `has_pull_requests` must be `true`. - AllowMerge *bool `json:"allow_merge_commits,omitempty"` - // either `true` to allow rebase-merging pull requests, or `false` to prevent rebase-merging. `has_pull_requests` must be `true`. - AllowRebase *bool `json:"allow_rebase,omitempty"` - // either `true` to allow rebase with explicit merge commits (--no-ff), or `false` to prevent rebase with explicit merge commits. `has_pull_requests` must be `true`. - AllowRebaseMerge *bool `json:"allow_rebase_explicit,omitempty"` - // either `true` to allow squash-merging pull requests, or `false` to prevent squash-merging. `has_pull_requests` must be `true`. - AllowSquash *bool `json:"allow_squash_merge,omitempty"` - // set to `true` to archive this repository. - Archived *bool `json:"archived,omitempty"` - // set to a string like `8h30m0s` to set the mirror interval time - MirrorInterval *string `json:"mirror_interval,omitempty"` - // either `true` to allow mark pr as merged manually, or `false` to prevent it. `has_pull_requests` must be `true`. - AllowManualMerge *bool `json:"allow_manual_merge,omitempty"` - // either `true` to enable AutodetectManualMerge, or `false` to prevent it. `has_pull_requests` must be `true`, Note: In some special cases, misjudgments can occur. - AutodetectManualMerge *bool `json:"autodetect_manual_merge,omitempty"` - // set to a merge style to be used by this repository: "merge", "rebase", "rebase-merge", or "squash". `has_pull_requests` must be `true`. - DefaultMergeStyle *MergeStyle `json:"default_merge_style,omitempty"` - // set to `true` to archive this repository. -} - -// EditRepo edit the properties of a repository -func (c *Client) EditRepo(owner, reponame string, opt EditRepoOption) (*Repository, *Response, error) { - if err := escapeValidatePathSegments(&owner, &reponame); err != nil { - return nil, nil, err - } - body, err := json.Marshal(&opt) - if err != nil { - return nil, nil, err - } - repo := new(Repository) - resp, err := c.getParsedResponse("PATCH", fmt.Sprintf("/repos/%s/%s", owner, reponame), jsonHeader, bytes.NewReader(body), repo) - return repo, resp, err -} - -// DeleteRepo deletes a repository of user or organization. -func (c *Client) DeleteRepo(owner, repo string) (*Response, error) { - if err := escapeValidatePathSegments(&owner, &repo); err != nil { - return nil, err - } - _, resp, err := c.getResponse("DELETE", fmt.Sprintf("/repos/%s/%s", owner, repo), nil, nil) - return resp, err -} - -// MirrorSync adds a mirrored repository to the mirror sync queue. -func (c *Client) MirrorSync(owner, repo string) (*Response, error) { - if err := escapeValidatePathSegments(&owner, &repo); err != nil { - return nil, err - } - _, resp, err := c.getResponse("POST", fmt.Sprintf("/repos/%s/%s/mirror-sync", owner, repo), nil, nil) - return resp, err -} - -// GetRepoLanguages return language stats of a repo -func (c *Client) GetRepoLanguages(owner, repo string) (map[string]int64, *Response, error) { - if err := escapeValidatePathSegments(&owner, &repo); err != nil { - return nil, nil, err - } - langMap := make(map[string]int64) - - data, resp, err := c.getResponse("GET", fmt.Sprintf("/repos/%s/%s/languages", owner, repo), jsonHeader, nil) - if err != nil { - return nil, resp, err - } - if err = json.Unmarshal(data, &langMap); err != nil { - return nil, resp, err - } - return langMap, resp, nil -} - -// ArchiveType represent supported archive formats by gitea -type ArchiveType string - -const ( - // ZipArchive represent zip format - ZipArchive ArchiveType = ".zip" - // TarGZArchive represent tar.gz format - TarGZArchive ArchiveType = ".tar.gz" -) - -// GetArchive get an archive of a repository by git reference -// e.g.: ref -> master, 70b7c74b33, v1.2.1, ... -func (c *Client) GetArchive(owner, repo, ref string, ext ArchiveType) ([]byte, *Response, error) { - if err := escapeValidatePathSegments(&owner, &repo); err != nil { - return nil, nil, err - } - ref = pathEscapeSegments(ref) - return c.getResponse("GET", fmt.Sprintf("/repos/%s/%s/archive/%s%s", owner, repo, ref, ext), nil, nil) -} - -// GetArchiveReader gets a `git archive` for a particular tree-ish git reference -// such as a branch name (`master`), a commit hash (`70b7c74b33`), a tag -// (`v1.2.1`). The archive is returned as a byte stream in a ReadCloser. It is -// the responsibility of the client to close the reader. -func (c *Client) GetArchiveReader(owner, repo, ref string, ext ArchiveType) (io.ReadCloser, *Response, error) { - if err := escapeValidatePathSegments(&owner, &repo); err != nil { - return nil, nil, err - } - ref = pathEscapeSegments(ref) - resp, err := c.doRequest("GET", fmt.Sprintf("/repos/%s/%s/archive/%s%s", owner, repo, ref, ext), nil, nil) - if err != nil { - return nil, resp, err - } - - if _, err := statusCodeToErr(resp); err != nil { - return nil, resp, err - } - - return resp.Body, resp, nil -} diff --git a/vendor/code.gitea.io/sdk/gitea/repo_branch.go b/vendor/code.gitea.io/sdk/gitea/repo_branch.go deleted file mode 100644 index 0b7e873c4f..0000000000 --- a/vendor/code.gitea.io/sdk/gitea/repo_branch.go +++ /dev/null @@ -1,143 +0,0 @@ -// Copyright 2016 The Gogs Authors. All rights reserved. -// Copyright 2020 The Gitea Authors. All rights reserved. -// Use of this source code is governed by a MIT-style -// license that can be found in the LICENSE file. - -package gitea - -import ( - "bytes" - "encoding/json" - "fmt" - "time" -) - -// PayloadUser represents the author or committer of a commit -type PayloadUser struct { - // Full name of the commit author - Name string `json:"name"` - Email string `json:"email"` - UserName string `json:"username"` -} - -// PayloadCommit represents a commit -type PayloadCommit struct { - // sha1 hash of the commit - ID string `json:"id"` - Message string `json:"message"` - URL string `json:"url"` - Author *PayloadUser `json:"author"` - Committer *PayloadUser `json:"committer"` - Verification *PayloadCommitVerification `json:"verification"` - Timestamp time.Time `json:"timestamp"` - Added []string `json:"added"` - Removed []string `json:"removed"` - Modified []string `json:"modified"` -} - -// PayloadCommitVerification represents the GPG verification of a commit -type PayloadCommitVerification struct { - Verified bool `json:"verified"` - Reason string `json:"reason"` - Signature string `json:"signature"` - Payload string `json:"payload"` -} - -// Branch represents a repository branch -type Branch struct { - Name string `json:"name"` - Commit *PayloadCommit `json:"commit"` - Protected bool `json:"protected"` - RequiredApprovals int64 `json:"required_approvals"` - EnableStatusCheck bool `json:"enable_status_check"` - StatusCheckContexts []string `json:"status_check_contexts"` - UserCanPush bool `json:"user_can_push"` - UserCanMerge bool `json:"user_can_merge"` - EffectiveBranchProtectionName string `json:"effective_branch_protection_name"` -} - -// ListRepoBranchesOptions options for listing a repository's branches -type ListRepoBranchesOptions struct { - ListOptions -} - -// ListRepoBranches list all the branches of one repository -func (c *Client) ListRepoBranches(user, repo string, opt ListRepoBranchesOptions) ([]*Branch, *Response, error) { - if err := escapeValidatePathSegments(&user, &repo); err != nil { - return nil, nil, err - } - opt.setDefaults() - branches := make([]*Branch, 0, opt.PageSize) - resp, err := c.getParsedResponse("GET", fmt.Sprintf("/repos/%s/%s/branches?%s", user, repo, opt.getURLQuery().Encode()), nil, nil, &branches) - return branches, resp, err -} - -// GetRepoBranch get one branch's information of one repository -func (c *Client) GetRepoBranch(user, repo, branch string) (*Branch, *Response, error) { - if err := escapeValidatePathSegments(&user, &repo, &branch); err != nil { - return nil, nil, err - } - b := new(Branch) - resp, err := c.getParsedResponse("GET", fmt.Sprintf("/repos/%s/%s/branches/%s", user, repo, branch), nil, nil, &b) - if err != nil { - return nil, resp, err - } - return b, resp, nil -} - -// DeleteRepoBranch delete a branch in a repository -func (c *Client) DeleteRepoBranch(user, repo, branch string) (bool, *Response, error) { - if err := escapeValidatePathSegments(&user, &repo, &branch); err != nil { - return false, nil, err - } - if err := c.checkServerVersionGreaterThanOrEqual(version1_12_0); err != nil { - return false, nil, err - } - status, resp, err := c.getStatusCode("DELETE", fmt.Sprintf("/repos/%s/%s/branches/%s", user, repo, branch), nil, nil) - if err != nil { - return false, resp, err - } - return status == 204, resp, nil -} - -// CreateBranchOption options when creating a branch in a repository -type CreateBranchOption struct { - // Name of the branch to create - BranchName string `json:"new_branch_name"` - // Name of the old branch to create from (optional) - OldBranchName string `json:"old_branch_name"` -} - -// Validate the CreateBranchOption struct -func (opt CreateBranchOption) Validate() error { - if len(opt.BranchName) == 0 { - return fmt.Errorf("BranchName is empty") - } - if len(opt.BranchName) > 100 { - return fmt.Errorf("BranchName to long") - } - if len(opt.OldBranchName) > 100 { - return fmt.Errorf("OldBranchName to long") - } - return nil -} - -// CreateBranch creates a branch for a user's repository -func (c *Client) CreateBranch(owner, repo string, opt CreateBranchOption) (*Branch, *Response, error) { - if err := escapeValidatePathSegments(&owner, &repo); err != nil { - return nil, nil, err - } - if err := c.checkServerVersionGreaterThanOrEqual(version1_13_0); err != nil { - return nil, nil, err - } - if err := opt.Validate(); err != nil { - return nil, nil, err - } - body, err := json.Marshal(&opt) - if err != nil { - return nil, nil, err - } - branch := new(Branch) - resp, err := c.getParsedResponse("POST", fmt.Sprintf("/repos/%s/%s/branches", owner, repo), jsonHeader, bytes.NewReader(body), branch) - return branch, resp, err -} diff --git a/vendor/code.gitea.io/sdk/gitea/repo_branch_protection.go b/vendor/code.gitea.io/sdk/gitea/repo_branch_protection.go deleted file mode 100644 index 22bd7b9629..0000000000 --- a/vendor/code.gitea.io/sdk/gitea/repo_branch_protection.go +++ /dev/null @@ -1,168 +0,0 @@ -// Copyright 2020 The Gitea Authors. All rights reserved. -// Use of this source code is governed by a MIT-style -// license that can be found in the LICENSE file. - -package gitea - -import ( - "bytes" - "encoding/json" - "fmt" - "net/url" - "time" -) - -// BranchProtection represents a branch protection for a repository -type BranchProtection struct { - BranchName string `json:"branch_name"` - EnablePush bool `json:"enable_push"` - EnablePushWhitelist bool `json:"enable_push_whitelist"` - PushWhitelistUsernames []string `json:"push_whitelist_usernames"` - PushWhitelistTeams []string `json:"push_whitelist_teams"` - PushWhitelistDeployKeys bool `json:"push_whitelist_deploy_keys"` - EnableMergeWhitelist bool `json:"enable_merge_whitelist"` - MergeWhitelistUsernames []string `json:"merge_whitelist_usernames"` - MergeWhitelistTeams []string `json:"merge_whitelist_teams"` - EnableStatusCheck bool `json:"enable_status_check"` - StatusCheckContexts []string `json:"status_check_contexts"` - RequiredApprovals int64 `json:"required_approvals"` - EnableApprovalsWhitelist bool `json:"enable_approvals_whitelist"` - ApprovalsWhitelistUsernames []string `json:"approvals_whitelist_username"` - ApprovalsWhitelistTeams []string `json:"approvals_whitelist_teams"` - BlockOnRejectedReviews bool `json:"block_on_rejected_reviews"` - BlockOnOfficialReviewRequests bool `json:"block_on_official_review_requests"` - BlockOnOutdatedBranch bool `json:"block_on_outdated_branch"` - DismissStaleApprovals bool `json:"dismiss_stale_approvals"` - RequireSignedCommits bool `json:"require_signed_commits"` - ProtectedFilePatterns string `json:"protected_file_patterns"` - Created time.Time `json:"created_at"` - Updated time.Time `json:"updated_at"` -} - -// CreateBranchProtectionOption options for creating a branch protection -type CreateBranchProtectionOption struct { - BranchName string `json:"branch_name"` - EnablePush bool `json:"enable_push"` - EnablePushWhitelist bool `json:"enable_push_whitelist"` - PushWhitelistUsernames []string `json:"push_whitelist_usernames"` - PushWhitelistTeams []string `json:"push_whitelist_teams"` - PushWhitelistDeployKeys bool `json:"push_whitelist_deploy_keys"` - EnableMergeWhitelist bool `json:"enable_merge_whitelist"` - MergeWhitelistUsernames []string `json:"merge_whitelist_usernames"` - MergeWhitelistTeams []string `json:"merge_whitelist_teams"` - EnableStatusCheck bool `json:"enable_status_check"` - StatusCheckContexts []string `json:"status_check_contexts"` - RequiredApprovals int64 `json:"required_approvals"` - EnableApprovalsWhitelist bool `json:"enable_approvals_whitelist"` - ApprovalsWhitelistUsernames []string `json:"approvals_whitelist_username"` - ApprovalsWhitelistTeams []string `json:"approvals_whitelist_teams"` - BlockOnRejectedReviews bool `json:"block_on_rejected_reviews"` - BlockOnOfficialReviewRequests bool `json:"block_on_official_review_requests"` - BlockOnOutdatedBranch bool `json:"block_on_outdated_branch"` - DismissStaleApprovals bool `json:"dismiss_stale_approvals"` - RequireSignedCommits bool `json:"require_signed_commits"` - ProtectedFilePatterns string `json:"protected_file_patterns"` -} - -// EditBranchProtectionOption options for editing a branch protection -type EditBranchProtectionOption struct { - EnablePush *bool `json:"enable_push"` - EnablePushWhitelist *bool `json:"enable_push_whitelist"` - PushWhitelistUsernames []string `json:"push_whitelist_usernames"` - PushWhitelistTeams []string `json:"push_whitelist_teams"` - PushWhitelistDeployKeys *bool `json:"push_whitelist_deploy_keys"` - EnableMergeWhitelist *bool `json:"enable_merge_whitelist"` - MergeWhitelistUsernames []string `json:"merge_whitelist_usernames"` - MergeWhitelistTeams []string `json:"merge_whitelist_teams"` - EnableStatusCheck *bool `json:"enable_status_check"` - StatusCheckContexts []string `json:"status_check_contexts"` - RequiredApprovals *int64 `json:"required_approvals"` - EnableApprovalsWhitelist *bool `json:"enable_approvals_whitelist"` - ApprovalsWhitelistUsernames []string `json:"approvals_whitelist_username"` - ApprovalsWhitelistTeams []string `json:"approvals_whitelist_teams"` - BlockOnRejectedReviews *bool `json:"block_on_rejected_reviews"` - BlockOnOfficialReviewRequests *bool `json:"block_on_official_review_requests"` - BlockOnOutdatedBranch *bool `json:"block_on_outdated_branch"` - DismissStaleApprovals *bool `json:"dismiss_stale_approvals"` - RequireSignedCommits *bool `json:"require_signed_commits"` - ProtectedFilePatterns *string `json:"protected_file_patterns"` -} - -// ListBranchProtectionsOptions list branch protection options -type ListBranchProtectionsOptions struct { - ListOptions -} - -// ListBranchProtections list branch protections for a repo -func (c *Client) ListBranchProtections(owner, repo string, opt ListBranchProtectionsOptions) ([]*BranchProtection, *Response, error) { - if err := escapeValidatePathSegments(&owner, &repo); err != nil { - return nil, nil, err - } - if err := c.checkServerVersionGreaterThanOrEqual(version1_12_0); err != nil { - return nil, nil, err - } - bps := make([]*BranchProtection, 0, opt.PageSize) - link, _ := url.Parse(fmt.Sprintf("/repos/%s/%s/branch_protections", owner, repo)) - link.RawQuery = opt.getURLQuery().Encode() - resp, err := c.getParsedResponse("GET", link.String(), jsonHeader, nil, &bps) - return bps, resp, err -} - -// GetBranchProtection gets a branch protection -func (c *Client) GetBranchProtection(owner, repo, name string) (*BranchProtection, *Response, error) { - if err := escapeValidatePathSegments(&owner, &repo, &name); err != nil { - return nil, nil, err - } - if err := c.checkServerVersionGreaterThanOrEqual(version1_12_0); err != nil { - return nil, nil, err - } - bp := new(BranchProtection) - resp, err := c.getParsedResponse("GET", fmt.Sprintf("/repos/%s/%s/branch_protections/%s", owner, repo, name), jsonHeader, nil, bp) - return bp, resp, err -} - -// CreateBranchProtection creates a branch protection for a repo -func (c *Client) CreateBranchProtection(owner, repo string, opt CreateBranchProtectionOption) (*BranchProtection, *Response, error) { - if err := escapeValidatePathSegments(&owner, &repo); err != nil { - return nil, nil, err - } - if err := c.checkServerVersionGreaterThanOrEqual(version1_12_0); err != nil { - return nil, nil, err - } - bp := new(BranchProtection) - body, err := json.Marshal(&opt) - if err != nil { - return nil, nil, err - } - resp, err := c.getParsedResponse("POST", fmt.Sprintf("/repos/%s/%s/branch_protections", owner, repo), jsonHeader, bytes.NewReader(body), bp) - return bp, resp, err -} - -// EditBranchProtection edits a branch protection for a repo -func (c *Client) EditBranchProtection(owner, repo, name string, opt EditBranchProtectionOption) (*BranchProtection, *Response, error) { - if err := escapeValidatePathSegments(&owner, &repo, &name); err != nil { - return nil, nil, err - } - if err := c.checkServerVersionGreaterThanOrEqual(version1_12_0); err != nil { - return nil, nil, err - } - bp := new(BranchProtection) - body, err := json.Marshal(&opt) - if err != nil { - return nil, nil, err - } - resp, err := c.getParsedResponse("PATCH", fmt.Sprintf("/repos/%s/%s/branch_protections/%s", owner, repo, name), jsonHeader, bytes.NewReader(body), bp) - return bp, resp, err -} - -// DeleteBranchProtection deletes a branch protection for a repo -func (c *Client) DeleteBranchProtection(owner, repo, name string) (*Response, error) { - if err := escapeValidatePathSegments(&owner, &repo, &name); err != nil { - return nil, err - } - if err := c.checkServerVersionGreaterThanOrEqual(version1_12_0); err != nil { - return nil, err - } - _, resp, err := c.getResponse("DELETE", fmt.Sprintf("/repos/%s/%s/branch_protections/%s", owner, repo, name), jsonHeader, nil) - return resp, err -} diff --git a/vendor/code.gitea.io/sdk/gitea/repo_collaborator.go b/vendor/code.gitea.io/sdk/gitea/repo_collaborator.go deleted file mode 100644 index c766250f42..0000000000 --- a/vendor/code.gitea.io/sdk/gitea/repo_collaborator.go +++ /dev/null @@ -1,136 +0,0 @@ -// Copyright 2021 The Gitea Authors. All rights reserved. -// Copyright 2016 The Gogs Authors. All rights reserved. -// Use of this source code is governed by a MIT-style -// license that can be found in the LICENSE file. - -package gitea - -import ( - "bytes" - "encoding/json" - "fmt" -) - -// ListCollaboratorsOptions options for listing a repository's collaborators -type ListCollaboratorsOptions struct { - ListOptions -} - -// ListCollaborators list a repository's collaborators -func (c *Client) ListCollaborators(user, repo string, opt ListCollaboratorsOptions) ([]*User, *Response, error) { - if err := escapeValidatePathSegments(&user, &repo); err != nil { - return nil, nil, err - } - opt.setDefaults() - collaborators := make([]*User, 0, opt.PageSize) - resp, err := c.getParsedResponse("GET", - fmt.Sprintf("/repos/%s/%s/collaborators?%s", user, repo, opt.getURLQuery().Encode()), - nil, nil, &collaborators) - return collaborators, resp, err -} - -// IsCollaborator check if a user is a collaborator of a repository -func (c *Client) IsCollaborator(user, repo, collaborator string) (bool, *Response, error) { - if err := escapeValidatePathSegments(&user, &repo, &collaborator); err != nil { - return false, nil, err - } - status, resp, err := c.getStatusCode("GET", fmt.Sprintf("/repos/%s/%s/collaborators/%s", user, repo, collaborator), nil, nil) - if err != nil { - return false, resp, err - } - if status == 204 { - return true, resp, nil - } - return false, resp, nil -} - -// AddCollaboratorOption options when adding a user as a collaborator of a repository -type AddCollaboratorOption struct { - Permission *AccessMode `json:"permission"` -} - -// AccessMode represent the grade of access you have to something -type AccessMode string - -const ( - // AccessModeNone no access - AccessModeNone AccessMode = "none" - // AccessModeRead read access - AccessModeRead AccessMode = "read" - // AccessModeWrite write access - AccessModeWrite AccessMode = "write" - // AccessModeAdmin admin access - AccessModeAdmin AccessMode = "admin" - // AccessModeOwner owner - AccessModeOwner AccessMode = "owner" -) - -// Validate the AddCollaboratorOption struct -func (opt AddCollaboratorOption) Validate() error { - if opt.Permission != nil { - if *opt.Permission == AccessModeOwner { - *opt.Permission = AccessModeAdmin - return nil - } - if *opt.Permission == AccessModeNone { - opt.Permission = nil - return nil - } - if *opt.Permission != AccessModeRead && *opt.Permission != AccessModeWrite && *opt.Permission != AccessModeAdmin { - return fmt.Errorf("permission mode invalid") - } - } - return nil -} - -// AddCollaborator add some user as a collaborator of a repository -func (c *Client) AddCollaborator(user, repo, collaborator string, opt AddCollaboratorOption) (*Response, error) { - if err := escapeValidatePathSegments(&user, &repo, &collaborator); err != nil { - return nil, err - } - if err := opt.Validate(); err != nil { - return nil, err - } - body, err := json.Marshal(&opt) - if err != nil { - return nil, err - } - _, resp, err := c.getResponse("PUT", fmt.Sprintf("/repos/%s/%s/collaborators/%s", user, repo, collaborator), jsonHeader, bytes.NewReader(body)) - return resp, err -} - -// DeleteCollaborator remove a collaborator from a repository -func (c *Client) DeleteCollaborator(user, repo, collaborator string) (*Response, error) { - if err := escapeValidatePathSegments(&user, &repo, &collaborator); err != nil { - return nil, err - } - _, resp, err := c.getResponse("DELETE", - fmt.Sprintf("/repos/%s/%s/collaborators/%s", user, repo, collaborator), nil, nil) - return resp, err -} - -// GetReviewers return all users that can be requested to review in this repo -func (c *Client) GetReviewers(user, repo string) ([]*User, *Response, error) { - if err := c.checkServerVersionGreaterThanOrEqual(version1_15_0); err != nil { - return nil, nil, err - } - if err := escapeValidatePathSegments(&user, &repo); err != nil { - return nil, nil, err - } - reviewers := make([]*User, 0, 5) - resp, err := c.getParsedResponse("GET", fmt.Sprintf("/repos/%s/%s/reviewers", user, repo), nil, nil, &reviewers) - return reviewers, resp, err -} - -// GetAssignees return all users that have write access and can be assigned to issues -func (c *Client) GetAssignees(user, repo string) ([]*User, *Response, error) { - if err := c.checkServerVersionGreaterThanOrEqual(version1_15_0); err != nil { - return nil, nil, err - } - if err := escapeValidatePathSegments(&user, &repo); err != nil { - return nil, nil, err - } - assignees := make([]*User, 0, 5) - resp, err := c.getParsedResponse("GET", fmt.Sprintf("/repos/%s/%s/assignees", user, repo), nil, nil, &assignees) - return assignees, resp, err -} diff --git a/vendor/code.gitea.io/sdk/gitea/repo_commit.go b/vendor/code.gitea.io/sdk/gitea/repo_commit.go deleted file mode 100644 index 9bb65b3b11..0000000000 --- a/vendor/code.gitea.io/sdk/gitea/repo_commit.go +++ /dev/null @@ -1,101 +0,0 @@ -// Copyright 2018 The Gogs Authors. All rights reserved. -// Copyright 2019 The Gitea Authors. All rights reserved. -// Use of this source code is governed by a MIT-style -// license that can be found in the LICENSE file. - -package gitea - -import ( - "fmt" - "net/url" - "time" -) - -// Identity for a person's identity like an author or committer -type Identity struct { - Name string `json:"name"` - Email string `json:"email"` -} - -// CommitMeta contains meta information of a commit in terms of API. -type CommitMeta struct { - URL string `json:"url"` - SHA string `json:"sha"` - Created time.Time `json:"created"` -} - -// CommitUser contains information of a user in the context of a commit. -type CommitUser struct { - Identity - Date string `json:"date"` -} - -// RepoCommit contains information of a commit in the context of a repository. -type RepoCommit struct { - URL string `json:"url"` - Author *CommitUser `json:"author"` - Committer *CommitUser `json:"committer"` - Message string `json:"message"` - Tree *CommitMeta `json:"tree"` -} - -// Commit contains information generated from a Git commit. -type Commit struct { - *CommitMeta - HTMLURL string `json:"html_url"` - RepoCommit *RepoCommit `json:"commit"` - Author *User `json:"author"` - Committer *User `json:"committer"` - Parents []*CommitMeta `json:"parents"` - Files []*CommitAffectedFiles `json:"files"` -} - -// CommitDateOptions store dates for GIT_AUTHOR_DATE and GIT_COMMITTER_DATE -type CommitDateOptions struct { - Author time.Time `json:"author"` - Committer time.Time `json:"committer"` -} - -// CommitAffectedFiles store information about files affected by the commit -type CommitAffectedFiles struct { - Filename string `json:"filename"` -} - -// GetSingleCommit returns a single commit -func (c *Client) GetSingleCommit(user, repo, commitID string) (*Commit, *Response, error) { - if err := escapeValidatePathSegments(&user, &repo, &commitID); err != nil { - return nil, nil, err - } - commit := new(Commit) - resp, err := c.getParsedResponse("GET", fmt.Sprintf("/repos/%s/%s/git/commits/%s", user, repo, commitID), nil, nil, &commit) - return commit, resp, err -} - -// ListCommitOptions list commit options -type ListCommitOptions struct { - ListOptions - //SHA or branch to start listing commits from (usually 'master') - SHA string -} - -// QueryEncode turns options into querystring argument -func (opt *ListCommitOptions) QueryEncode() string { - query := opt.ListOptions.getURLQuery() - if opt.SHA != "" { - query.Add("sha", opt.SHA) - } - return query.Encode() -} - -// ListRepoCommits return list of commits from a repo -func (c *Client) ListRepoCommits(user, repo string, opt ListCommitOptions) ([]*Commit, *Response, error) { - if err := escapeValidatePathSegments(&user, &repo); err != nil { - return nil, nil, err - } - link, _ := url.Parse(fmt.Sprintf("/repos/%s/%s/commits", user, repo)) - opt.setDefaults() - commits := make([]*Commit, 0, opt.PageSize) - link.RawQuery = opt.QueryEncode() - resp, err := c.getParsedResponse("GET", link.String(), nil, nil, &commits) - return commits, resp, err -} diff --git a/vendor/code.gitea.io/sdk/gitea/repo_file.go b/vendor/code.gitea.io/sdk/gitea/repo_file.go deleted file mode 100644 index 6f99ea06bf..0000000000 --- a/vendor/code.gitea.io/sdk/gitea/repo_file.go +++ /dev/null @@ -1,247 +0,0 @@ -// Copyright 2014 The Gogs Authors. All rights reserved. -// Copyright 2019 The Gitea Authors. All rights reserved. -// Use of this source code is governed by a MIT-style -// license that can be found in the LICENSE file. - -package gitea - -import ( - "bytes" - "encoding/json" - "fmt" - "net/url" - "strings" -) - -// FileOptions options for all file APIs -type FileOptions struct { - // message (optional) for the commit of this file. if not supplied, a default message will be used - Message string `json:"message"` - // branch (optional) to base this file from. if not given, the default branch is used - BranchName string `json:"branch"` - // new_branch (optional) will make a new branch from `branch` before creating the file - NewBranchName string `json:"new_branch"` - // `author` and `committer` are optional (if only one is given, it will be used for the other, otherwise the authenticated user will be used) - Author Identity `json:"author"` - Committer Identity `json:"committer"` - Dates CommitDateOptions `json:"dates"` - // Add a Signed-off-by trailer by the committer at the end of the commit log message. - Signoff bool `json:"signoff"` -} - -// CreateFileOptions options for creating files -// Note: `author` and `committer` are optional (if only one is given, it will be used for the other, otherwise the authenticated user will be used) -type CreateFileOptions struct { - FileOptions - // content must be base64 encoded - // required: true - Content string `json:"content"` -} - -// DeleteFileOptions options for deleting files (used for other File structs below) -// Note: `author` and `committer` are optional (if only one is given, it will be used for the other, otherwise the authenticated user will be used) -type DeleteFileOptions struct { - FileOptions - // sha is the SHA for the file that already exists - // required: true - SHA string `json:"sha"` -} - -// UpdateFileOptions options for updating files -// Note: `author` and `committer` are optional (if only one is given, it will be used for the other, otherwise the authenticated user will be used) -type UpdateFileOptions struct { - FileOptions - // sha is the SHA for the file that already exists - // required: true - SHA string `json:"sha"` - // content must be base64 encoded - // required: true - Content string `json:"content"` - // from_path (optional) is the path of the original file which will be moved/renamed to the path in the URL - FromPath string `json:"from_path"` -} - -// FileLinksResponse contains the links for a repo's file -type FileLinksResponse struct { - Self *string `json:"self"` - GitURL *string `json:"git"` - HTMLURL *string `json:"html"` -} - -// ContentsResponse contains information about a repo's entry's (dir, file, symlink, submodule) metadata and content -type ContentsResponse struct { - Name string `json:"name"` - Path string `json:"path"` - SHA string `json:"sha"` - // `type` will be `file`, `dir`, `symlink`, or `submodule` - Type string `json:"type"` - Size int64 `json:"size"` - // `encoding` is populated when `type` is `file`, otherwise null - Encoding *string `json:"encoding"` - // `content` is populated when `type` is `file`, otherwise null - Content *string `json:"content"` - // `target` is populated when `type` is `symlink`, otherwise null - Target *string `json:"target"` - URL *string `json:"url"` - HTMLURL *string `json:"html_url"` - GitURL *string `json:"git_url"` - DownloadURL *string `json:"download_url"` - // `submodule_git_url` is populated when `type` is `submodule`, otherwise null - SubmoduleGitURL *string `json:"submodule_git_url"` - Links *FileLinksResponse `json:"_links"` -} - -// FileCommitResponse contains information generated from a Git commit for a repo's file. -type FileCommitResponse struct { - CommitMeta - HTMLURL string `json:"html_url"` - Author *CommitUser `json:"author"` - Committer *CommitUser `json:"committer"` - Parents []*CommitMeta `json:"parents"` - Message string `json:"message"` - Tree *CommitMeta `json:"tree"` -} - -// FileResponse contains information about a repo's file -type FileResponse struct { - Content *ContentsResponse `json:"content"` - Commit *FileCommitResponse `json:"commit"` - Verification *PayloadCommitVerification `json:"verification"` -} - -// FileDeleteResponse contains information about a repo's file that was deleted -type FileDeleteResponse struct { - Content interface{} `json:"content"` // to be set to nil - Commit *FileCommitResponse `json:"commit"` - Verification *PayloadCommitVerification `json:"verification"` -} - -// GetFile downloads a file of repository, ref can be branch/tag/commit. -// e.g.: ref -> master, filepath -> README.md (no leading slash) -func (c *Client) GetFile(owner, repo, ref, filepath string) ([]byte, *Response, error) { - if err := escapeValidatePathSegments(&owner, &repo); err != nil { - return nil, nil, err - } - filepath = pathEscapeSegments(filepath) - if c.checkServerVersionGreaterThanOrEqual(version1_14_0) != nil { - ref = pathEscapeSegments(ref) - return c.getResponse("GET", fmt.Sprintf("/repos/%s/%s/raw/%s/%s", owner, repo, ref, filepath), nil, nil) - } - return c.getResponse("GET", fmt.Sprintf("/repos/%s/%s/raw/%s?ref=%s", owner, repo, filepath, url.QueryEscape(ref)), nil, nil) -} - -// GetContents get the metadata and contents of a file in a repository -// ref is optional -func (c *Client) GetContents(owner, repo, ref, filepath string) (*ContentsResponse, *Response, error) { - data, resp, err := c.getDirOrFileContents(owner, repo, ref, filepath) - if err != nil { - return nil, resp, err - } - cr := new(ContentsResponse) - if json.Unmarshal(data, &cr) != nil { - return nil, resp, fmt.Errorf("expect file, got directory") - } - return cr, resp, err -} - -// ListContents gets a list of entries in a dir -// ref is optional -func (c *Client) ListContents(owner, repo, ref, filepath string) ([]*ContentsResponse, *Response, error) { - data, resp, err := c.getDirOrFileContents(owner, repo, ref, filepath) - if err != nil { - return nil, resp, err - } - crl := make([]*ContentsResponse, 0) - if json.Unmarshal(data, &crl) != nil { - return nil, resp, fmt.Errorf("expect directory, got file") - } - return crl, resp, err -} - -func (c *Client) getDirOrFileContents(owner, repo, ref, filepath string) ([]byte, *Response, error) { - if err := escapeValidatePathSegments(&owner, &repo); err != nil { - return nil, nil, err - } - filepath = pathEscapeSegments(strings.TrimPrefix(filepath, "/")) - return c.getResponse("GET", fmt.Sprintf("/repos/%s/%s/contents/%s?ref=%s", owner, repo, filepath, url.QueryEscape(ref)), jsonHeader, nil) -} - -// CreateFile create a file in a repository -func (c *Client) CreateFile(owner, repo, filepath string, opt CreateFileOptions) (*FileResponse, *Response, error) { - var err error - if opt.BranchName, err = c.setDefaultBranchForOldVersions(owner, repo, opt.BranchName); err != nil { - return nil, nil, err - } - if err := escapeValidatePathSegments(&owner, &repo); err != nil { - return nil, nil, err - } - filepath = pathEscapeSegments(filepath) - - body, err := json.Marshal(&opt) - if err != nil { - return nil, nil, err - } - fr := new(FileResponse) - resp, err := c.getParsedResponse("POST", fmt.Sprintf("/repos/%s/%s/contents/%s", owner, repo, filepath), jsonHeader, bytes.NewReader(body), fr) - return fr, resp, err -} - -// UpdateFile update a file in a repository -func (c *Client) UpdateFile(owner, repo, filepath string, opt UpdateFileOptions) (*FileResponse, *Response, error) { - var err error - if opt.BranchName, err = c.setDefaultBranchForOldVersions(owner, repo, opt.BranchName); err != nil { - return nil, nil, err - } - - if err := escapeValidatePathSegments(&owner, &repo); err != nil { - return nil, nil, err - } - filepath = pathEscapeSegments(filepath) - - body, err := json.Marshal(&opt) - if err != nil { - return nil, nil, err - } - fr := new(FileResponse) - resp, err := c.getParsedResponse("PUT", fmt.Sprintf("/repos/%s/%s/contents/%s", owner, repo, filepath), jsonHeader, bytes.NewReader(body), fr) - return fr, resp, err -} - -// DeleteFile delete a file from repository -func (c *Client) DeleteFile(owner, repo, filepath string, opt DeleteFileOptions) (*Response, error) { - var err error - if opt.BranchName, err = c.setDefaultBranchForOldVersions(owner, repo, opt.BranchName); err != nil { - return nil, err - } - if err := escapeValidatePathSegments(&owner, &repo); err != nil { - return nil, err - } - filepath = pathEscapeSegments(filepath) - - body, err := json.Marshal(&opt) - if err != nil { - return nil, err - } - status, resp, err := c.getStatusCode("DELETE", fmt.Sprintf("/repos/%s/%s/contents/%s", owner, repo, filepath), jsonHeader, bytes.NewReader(body)) - if err != nil { - return resp, err - } - if status != 200 && status != 204 { - return resp, fmt.Errorf("unexpected Status: %d", status) - } - return resp, nil -} - -func (c *Client) setDefaultBranchForOldVersions(owner, repo, branch string) (string, error) { - if len(branch) == 0 { - // Gitea >= 1.12.0 Use DefaultBranch on "", mimic this for older versions - if c.checkServerVersionGreaterThanOrEqual(version1_12_0) != nil { - r, _, err := c.GetRepo(owner, repo) - if err != nil { - return "", err - } - return r.DefaultBranch, nil - } - } - return branch, nil -} diff --git a/vendor/code.gitea.io/sdk/gitea/repo_key.go b/vendor/code.gitea.io/sdk/gitea/repo_key.go deleted file mode 100644 index ee2ff4084e..0000000000 --- a/vendor/code.gitea.io/sdk/gitea/repo_key.go +++ /dev/null @@ -1,91 +0,0 @@ -// Copyright 2015 The Gogs Authors. All rights reserved. -// Use of this source code is governed by a MIT-style -// license that can be found in the LICENSE file. - -package gitea - -import ( - "bytes" - "encoding/json" - "fmt" - "net/url" - "time" -) - -// DeployKey a deploy key -type DeployKey struct { - ID int64 `json:"id"` - KeyID int64 `json:"key_id"` - Key string `json:"key"` - URL string `json:"url"` - Title string `json:"title"` - Fingerprint string `json:"fingerprint"` - Created time.Time `json:"created_at"` - ReadOnly bool `json:"read_only"` - Repository *Repository `json:"repository,omitempty"` -} - -// ListDeployKeysOptions options for listing a repository's deploy keys -type ListDeployKeysOptions struct { - ListOptions - KeyID int64 - Fingerprint string -} - -// QueryEncode turns options into querystring argument -func (opt *ListDeployKeysOptions) QueryEncode() string { - query := opt.getURLQuery() - if opt.KeyID > 0 { - query.Add("key_id", fmt.Sprintf("%d", opt.KeyID)) - } - if len(opt.Fingerprint) > 0 { - query.Add("fingerprint", opt.Fingerprint) - } - return query.Encode() -} - -// ListDeployKeys list all the deploy keys of one repository -func (c *Client) ListDeployKeys(user, repo string, opt ListDeployKeysOptions) ([]*DeployKey, *Response, error) { - if err := escapeValidatePathSegments(&user, &repo); err != nil { - return nil, nil, err - } - link, _ := url.Parse(fmt.Sprintf("/repos/%s/%s/keys", user, repo)) - opt.setDefaults() - link.RawQuery = opt.QueryEncode() - keys := make([]*DeployKey, 0, opt.PageSize) - resp, err := c.getParsedResponse("GET", link.String(), nil, nil, &keys) - return keys, resp, err -} - -// GetDeployKey get one deploy key with key id -func (c *Client) GetDeployKey(user, repo string, keyID int64) (*DeployKey, *Response, error) { - if err := escapeValidatePathSegments(&user, &repo); err != nil { - return nil, nil, err - } - key := new(DeployKey) - resp, err := c.getParsedResponse("GET", fmt.Sprintf("/repos/%s/%s/keys/%d", user, repo, keyID), nil, nil, &key) - return key, resp, err -} - -// CreateDeployKey options when create one deploy key -func (c *Client) CreateDeployKey(user, repo string, opt CreateKeyOption) (*DeployKey, *Response, error) { - if err := escapeValidatePathSegments(&user, &repo); err != nil { - return nil, nil, err - } - body, err := json.Marshal(&opt) - if err != nil { - return nil, nil, err - } - key := new(DeployKey) - resp, err := c.getParsedResponse("POST", fmt.Sprintf("/repos/%s/%s/keys", user, repo), jsonHeader, bytes.NewReader(body), key) - return key, resp, err -} - -// DeleteDeployKey delete deploy key with key id -func (c *Client) DeleteDeployKey(owner, repo string, keyID int64) (*Response, error) { - if err := escapeValidatePathSegments(&owner, &repo); err != nil { - return nil, err - } - _, resp, err := c.getResponse("DELETE", fmt.Sprintf("/repos/%s/%s/keys/%d", owner, repo, keyID), nil, nil) - return resp, err -} diff --git a/vendor/code.gitea.io/sdk/gitea/repo_migrate.go b/vendor/code.gitea.io/sdk/gitea/repo_migrate.go deleted file mode 100644 index cd0fe44c80..0000000000 --- a/vendor/code.gitea.io/sdk/gitea/repo_migrate.go +++ /dev/null @@ -1,132 +0,0 @@ -// Copyright 2020 The Gitea Authors. All rights reserved. -// Use of this source code is governed by a MIT-style -// license that can be found in the LICENSE file. - -package gitea - -import ( - "bytes" - "encoding/json" - "fmt" -) - -// GitServiceType represents a git service -type GitServiceType string - -const ( - // GitServicePlain represents a plain git service - GitServicePlain GitServiceType = "git" - //GitServiceGithub represents github.com - GitServiceGithub GitServiceType = "github" - // GitServiceGitlab represents a gitlab service - GitServiceGitlab GitServiceType = "gitlab" - // GitServiceGitea represents a gitea service - GitServiceGitea GitServiceType = "gitea" - // GitServiceGogs represents a gogs service - GitServiceGogs GitServiceType = "gogs" -) - -// MigrateRepoOption options for migrating a repository from an external service -type MigrateRepoOption struct { - RepoName string `json:"repo_name"` - RepoOwner string `json:"repo_owner"` - // deprecated use RepoOwner - RepoOwnerID int64 `json:"uid"` - CloneAddr string `json:"clone_addr"` - Service GitServiceType `json:"service"` - AuthUsername string `json:"auth_username"` - AuthPassword string `json:"auth_password"` - AuthToken string `json:"auth_token"` - Mirror bool `json:"mirror"` - Private bool `json:"private"` - Description string `json:"description"` - Wiki bool `json:"wiki"` - Milestones bool `json:"milestones"` - Labels bool `json:"labels"` - Issues bool `json:"issues"` - PullRequests bool `json:"pull_requests"` - Releases bool `json:"releases"` - MirrorInterval string `json:"mirror_interval"` - LFS bool `json:"lfs"` - LFSEndpoint string `json:"lfs_endpoint"` -} - -// Validate the MigrateRepoOption struct -func (opt *MigrateRepoOption) Validate(c *Client) error { - // check user options - if len(opt.CloneAddr) == 0 { - return fmt.Errorf("CloneAddr required") - } - if len(opt.RepoName) == 0 { - return fmt.Errorf("RepoName required") - } else if len(opt.RepoName) > 100 { - return fmt.Errorf("RepoName to long") - } - if len(opt.Description) > 255 { - return fmt.Errorf("Description to long") - } - switch opt.Service { - case GitServiceGithub: - if len(opt.AuthToken) == 0 { - return fmt.Errorf("github requires token authentication") - } - case GitServiceGitlab, GitServiceGitea: - if len(opt.AuthToken) == 0 { - return fmt.Errorf("%s requires token authentication", opt.Service) - } - // Gitlab is supported since 1.12.0 but api cant handle it until 1.13.0 - // https://github.com/go-gitea/gitea/pull/12672 - if c.checkServerVersionGreaterThanOrEqual(version1_13_0) != nil { - return fmt.Errorf("migrate from service %s need gitea >= 1.13.0", opt.Service) - } - case GitServiceGogs: - if len(opt.AuthToken) == 0 { - return fmt.Errorf("gogs requires token authentication") - } - if c.checkServerVersionGreaterThanOrEqual(version1_14_0) != nil { - return fmt.Errorf("migrate from service gogs need gitea >= 1.14.0") - } - } - return nil -} - -// MigrateRepo migrates a repository from other Git hosting sources for the authenticated user. -// -// To migrate a repository for a organization, the authenticated user must be a -// owner of the specified organization. -func (c *Client) MigrateRepo(opt MigrateRepoOption) (*Repository, *Response, error) { - if err := opt.Validate(c); err != nil { - return nil, nil, err - } - - if err := c.checkServerVersionGreaterThanOrEqual(version1_13_0); err != nil { - if len(opt.AuthToken) != 0 { - // gitea <= 1.12 dont understand AuthToken - opt.AuthUsername = opt.AuthToken - opt.AuthPassword, opt.AuthToken = "", "" - } - if len(opt.RepoOwner) != 0 { - // gitea <= 1.12 dont understand RepoOwner - u, _, err := c.GetUserInfo(opt.RepoOwner) - if err != nil { - return nil, nil, err - } - opt.RepoOwnerID = u.ID - } else if opt.RepoOwnerID == 0 { - // gitea <= 1.12 require RepoOwnerID - u, _, err := c.GetMyUserInfo() - if err != nil { - return nil, nil, err - } - opt.RepoOwnerID = u.ID - } - } - - body, err := json.Marshal(&opt) - if err != nil { - return nil, nil, err - } - repo := new(Repository) - resp, err := c.getParsedResponse("POST", "/repos/migrate", jsonHeader, bytes.NewReader(body), repo) - return repo, resp, err -} diff --git a/vendor/code.gitea.io/sdk/gitea/repo_refs.go b/vendor/code.gitea.io/sdk/gitea/repo_refs.go deleted file mode 100644 index c954a80ef2..0000000000 --- a/vendor/code.gitea.io/sdk/gitea/repo_refs.go +++ /dev/null @@ -1,78 +0,0 @@ -// Copyright 2018 The Gitea Authors. All rights reserved. -// Use of this source code is governed by a MIT-style -// license that can be found in the LICENSE file. - -package gitea - -import ( - "encoding/json" - "errors" - "fmt" - "strings" -) - -// Reference represents a Git reference. -type Reference struct { - Ref string `json:"ref"` - URL string `json:"url"` - Object *GitObject `json:"object"` -} - -// GitObject represents a Git object. -type GitObject struct { - Type string `json:"type"` - SHA string `json:"sha"` - URL string `json:"url"` -} - -// GetRepoRef get one ref's information of one repository -func (c *Client) GetRepoRef(user, repo, ref string) (*Reference, *Response, error) { - if err := escapeValidatePathSegments(&user, &repo); err != nil { - return nil, nil, err - } - ref = strings.TrimPrefix(ref, "refs/") - ref = pathEscapeSegments(ref) - r := new(Reference) - resp, err := c.getParsedResponse("GET", fmt.Sprintf("/repos/%s/%s/git/refs/%s", user, repo, ref), nil, nil, &r) - if _, ok := err.(*json.UnmarshalTypeError); ok { - // Multiple refs - return nil, resp, errors.New("no exact match found for this ref") - } else if err != nil { - return nil, resp, err - } - - return r, resp, nil -} - -// GetRepoRefs get list of ref's information of one repository -func (c *Client) GetRepoRefs(user, repo, ref string) ([]*Reference, *Response, error) { - if err := escapeValidatePathSegments(&user, &repo); err != nil { - return nil, nil, err - } - ref = strings.TrimPrefix(ref, "refs/") - ref = pathEscapeSegments(ref) - - data, resp, err := c.getResponse("GET", fmt.Sprintf("/repos/%s/%s/git/refs/%s", user, repo, ref), nil, nil) - if err != nil { - return nil, resp, err - } - - // Attempt to unmarshal single returned ref. - r := new(Reference) - refErr := json.Unmarshal(data, r) - if refErr == nil { - return []*Reference{r}, resp, nil - } - - // Attempt to unmarshal multiple refs. - var rs []*Reference - refsErr := json.Unmarshal(data, &rs) - if refsErr == nil { - if len(rs) == 0 { - return nil, resp, errors.New("unexpected response: an array of refs with length 0") - } - return rs, resp, nil - } - - return nil, resp, fmt.Errorf("unmarshalling failed for both single and multiple refs: %s and %s", refErr, refsErr) -} diff --git a/vendor/code.gitea.io/sdk/gitea/repo_stars.go b/vendor/code.gitea.io/sdk/gitea/repo_stars.go deleted file mode 100644 index 01243c2505..0000000000 --- a/vendor/code.gitea.io/sdk/gitea/repo_stars.go +++ /dev/null @@ -1,96 +0,0 @@ -// Copyright 2021 The Gitea Authors. All rights reserved. -// Use of this source code is governed by a MIT-style -// license that can be found in the LICENSE file. - -package gitea - -import ( - "fmt" - "net/http" -) - -// ListStargazersOptions options for listing a repository's stargazers -type ListStargazersOptions struct { - ListOptions -} - -// ListRepoStargazers list a repository's stargazers -func (c *Client) ListRepoStargazers(user, repo string, opt ListStargazersOptions) ([]*User, *Response, error) { - if err := escapeValidatePathSegments(&user, &repo); err != nil { - return nil, nil, err - } - opt.setDefaults() - stargazers := make([]*User, 0, opt.PageSize) - resp, err := c.getParsedResponse("GET", fmt.Sprintf("/repos/%s/%s/stargazers?%s", user, repo, opt.getURLQuery().Encode()), nil, nil, &stargazers) - return stargazers, resp, err -} - -// GetStarredRepos returns the repos that the given user has starred -func (c *Client) GetStarredRepos(user string) ([]*Repository, *Response, error) { - if err := escapeValidatePathSegments(&user); err != nil { - return nil, nil, err - } - repos := make([]*Repository, 0, 10) - resp, err := c.getParsedResponse("GET", fmt.Sprintf("/users/%s/starred", user), jsonHeader, nil, &repos) - return repos, resp, err -} - -// GetMyStarredRepos returns the repos that the authenticated user has starred -func (c *Client) GetMyStarredRepos() ([]*Repository, *Response, error) { - repos := make([]*Repository, 0, 10) - resp, err := c.getParsedResponse("GET", "/user/starred", jsonHeader, nil, &repos) - return repos, resp, err -} - -// IsRepoStarring returns whether the authenticated user has starred the repo or not -func (c *Client) IsRepoStarring(user, repo string) (bool, *Response, error) { - if err := escapeValidatePathSegments(&user, &repo); err != nil { - return false, nil, err - } - _, resp, err := c.getResponse("GET", fmt.Sprintf("/user/starred/%s/%s", user, repo), jsonHeader, nil) - if resp != nil { - switch resp.StatusCode { - case http.StatusNotFound: - return false, resp, nil - case http.StatusNoContent: - return true, resp, nil - default: - return false, resp, fmt.Errorf("unexpected status code '%d'", resp.StatusCode) - } - } - return false, nil, err -} - -// StarRepo star specified repo as the authenticated user -func (c *Client) StarRepo(user, repo string) (*Response, error) { - if err := escapeValidatePathSegments(&user, &repo); err != nil { - return nil, err - } - _, resp, err := c.getResponse("PUT", fmt.Sprintf("/user/starred/%s/%s", user, repo), jsonHeader, nil) - if resp != nil { - switch resp.StatusCode { - case http.StatusNoContent: - return resp, nil - default: - return resp, fmt.Errorf("unexpected status code '%d'", resp.StatusCode) - } - } - return nil, err -} - -// UnStarRepo remove star to specified repo as the authenticated user -func (c *Client) UnStarRepo(user, repo string) (*Response, error) { - if err := escapeValidatePathSegments(&user, &repo); err != nil { - return nil, err - } - _, resp, err := c.getResponse("DELETE", fmt.Sprintf("/user/starred/%s/%s", user, repo), jsonHeader, nil) - if resp != nil { - switch resp.StatusCode { - case http.StatusNoContent: - return resp, nil - default: - return resp, fmt.Errorf("unexpected status code '%d'", resp.StatusCode) - } - } - return nil, err -} diff --git a/vendor/code.gitea.io/sdk/gitea/repo_tag.go b/vendor/code.gitea.io/sdk/gitea/repo_tag.go deleted file mode 100644 index 7317d3f393..0000000000 --- a/vendor/code.gitea.io/sdk/gitea/repo_tag.go +++ /dev/null @@ -1,130 +0,0 @@ -// Copyright 2019 The Gitea Authors. All rights reserved. -// Use of this source code is governed by a MIT-style -// license that can be found in the LICENSE file. - -package gitea - -import ( - "bytes" - "encoding/json" - "fmt" -) - -// Tag represents a repository tag -type Tag struct { - Name string `json:"name"` - Message string `json:"message"` - ID string `json:"id"` - Commit *CommitMeta `json:"commit"` - ZipballURL string `json:"zipball_url"` - TarballURL string `json:"tarball_url"` -} - -// AnnotatedTag represents an annotated tag -type AnnotatedTag struct { - Tag string `json:"tag"` - SHA string `json:"sha"` - URL string `json:"url"` - Message string `json:"message"` - Tagger *CommitUser `json:"tagger"` - Object *AnnotatedTagObject `json:"object"` - Verification *PayloadCommitVerification `json:"verification"` -} - -// AnnotatedTagObject contains meta information of the tag object -type AnnotatedTagObject struct { - Type string `json:"type"` - URL string `json:"url"` - SHA string `json:"sha"` -} - -// ListRepoTagsOptions options for listing a repository's tags -type ListRepoTagsOptions struct { - ListOptions -} - -// ListRepoTags list all the branches of one repository -func (c *Client) ListRepoTags(user, repo string, opt ListRepoTagsOptions) ([]*Tag, *Response, error) { - if err := escapeValidatePathSegments(&user, &repo); err != nil { - return nil, nil, err - } - opt.setDefaults() - tags := make([]*Tag, 0, opt.PageSize) - resp, err := c.getParsedResponse("GET", fmt.Sprintf("/repos/%s/%s/tags?%s", user, repo, opt.getURLQuery().Encode()), nil, nil, &tags) - return tags, resp, err -} - -// GetTag get the tag of a repository -func (c *Client) GetTag(user, repo, tag string) (*Tag, *Response, error) { - if err := c.checkServerVersionGreaterThanOrEqual(version1_15_0); err != nil { - return nil, nil, err - } - if err := escapeValidatePathSegments(&user, &repo, &tag); err != nil { - return nil, nil, err - } - t := new(Tag) - resp, err := c.getParsedResponse("GET", fmt.Sprintf("/repos/%s/%s/tags/%s", user, repo, tag), nil, nil, &t) - return t, resp, err -} - -// GetAnnotatedTag get the tag object of an annotated tag (not lightweight tags) of a repository -func (c *Client) GetAnnotatedTag(user, repo, sha string) (*AnnotatedTag, *Response, error) { - if err := c.checkServerVersionGreaterThanOrEqual(version1_15_0); err != nil { - return nil, nil, err - } - if err := escapeValidatePathSegments(&user, &repo, &sha); err != nil { - return nil, nil, err - } - t := new(AnnotatedTag) - resp, err := c.getParsedResponse("GET", fmt.Sprintf("/repos/%s/%s/git/tags/%s", user, repo, sha), nil, nil, &t) - return t, resp, err -} - -// CreateTagOption options when creating a tag -type CreateTagOption struct { - TagName string `json:"tag_name"` - Message string `json:"message"` - Target string `json:"target"` -} - -// Validate validates CreateTagOption -func (opt CreateTagOption) Validate() error { - if len(opt.TagName) == 0 { - return fmt.Errorf("TagName is required") - } - return nil -} - -// CreateTag create a new git tag in a repository -func (c *Client) CreateTag(user, repo string, opt CreateTagOption) (*Tag, *Response, error) { - if err := c.checkServerVersionGreaterThanOrEqual(version1_15_0); err != nil { - return nil, nil, err - } - if err := escapeValidatePathSegments(&user, &repo); err != nil { - return nil, nil, err - } - if err := opt.Validate(); err != nil { - return nil, nil, err - } - body, err := json.Marshal(opt) - if err != nil { - return nil, nil, err - } - t := new(Tag) - resp, err := c.getParsedResponse("POST", fmt.Sprintf("/repos/%s/%s/tags", user, repo), jsonHeader, bytes.NewReader(body), &t) - return t, resp, err -} - -// DeleteTag deletes a tag from a repository, if no release refers to it -func (c *Client) DeleteTag(user, repo, tag string) (*Response, error) { - if err := escapeValidatePathSegments(&user, &repo, &tag); err != nil { - return nil, err - } - if err := c.checkServerVersionGreaterThanOrEqual(version1_14_0); err != nil { - return nil, err - } - _, resp, err := c.getResponse("DELETE", - fmt.Sprintf("/repos/%s/%s/tags/%s", user, repo, tag), - nil, nil) - return resp, err -} diff --git a/vendor/code.gitea.io/sdk/gitea/repo_team.go b/vendor/code.gitea.io/sdk/gitea/repo_team.go deleted file mode 100644 index b983d8748a..0000000000 --- a/vendor/code.gitea.io/sdk/gitea/repo_team.go +++ /dev/null @@ -1,65 +0,0 @@ -// Copyright 2021 The Gitea Authors. All rights reserved. -// Use of this source code is governed by a MIT-style -// license that can be found in the LICENSE file. - -package gitea - -import ( - "fmt" - "net/http" -) - -// GetRepoTeams return teams from a repository -func (c *Client) GetRepoTeams(user, repo string) ([]*Team, *Response, error) { - if err := c.checkServerVersionGreaterThanOrEqual(version1_15_0); err != nil { - return nil, nil, err - } - if err := escapeValidatePathSegments(&user, &repo); err != nil { - return nil, nil, err - } - teams := make([]*Team, 0, 5) - resp, err := c.getParsedResponse("GET", fmt.Sprintf("/repos/%s/%s/teams", user, repo), nil, nil, &teams) - return teams, resp, err -} - -// AddRepoTeam add a team to a repository -func (c *Client) AddRepoTeam(user, repo, team string) (*Response, error) { - if err := c.checkServerVersionGreaterThanOrEqual(version1_15_0); err != nil { - return nil, err - } - if err := escapeValidatePathSegments(&user, &repo, &team); err != nil { - return nil, err - } - _, resp, err := c.getResponse("PUT", fmt.Sprintf("/repos/%s/%s/teams/%s", user, repo, team), nil, nil) - return resp, err -} - -// RemoveRepoTeam delete a team from a repository -func (c *Client) RemoveRepoTeam(user, repo, team string) (*Response, error) { - if err := c.checkServerVersionGreaterThanOrEqual(version1_15_0); err != nil { - return nil, err - } - if err := escapeValidatePathSegments(&user, &repo, &team); err != nil { - return nil, err - } - _, resp, err := c.getResponse("DELETE", fmt.Sprintf("/repos/%s/%s/teams/%s", user, repo, team), nil, nil) - return resp, err -} - -// CheckRepoTeam check if team is assigned to repo by name and return it. -// If not assigned, it will return nil. -func (c *Client) CheckRepoTeam(user, repo, team string) (*Team, *Response, error) { - if err := c.checkServerVersionGreaterThanOrEqual(version1_15_0); err != nil { - return nil, nil, err - } - if err := escapeValidatePathSegments(&user, &repo, &team); err != nil { - return nil, nil, err - } - t := new(Team) - resp, err := c.getParsedResponse("GET", fmt.Sprintf("/repos/%s/%s/teams/%s", user, repo, team), nil, nil, &t) - if resp != nil && resp.StatusCode == http.StatusNotFound { - // if not found it's not an error, it indicates it's not assigned - return nil, resp, nil - } - return t, resp, err -} diff --git a/vendor/code.gitea.io/sdk/gitea/repo_template.go b/vendor/code.gitea.io/sdk/gitea/repo_template.go deleted file mode 100644 index 8b689bea49..0000000000 --- a/vendor/code.gitea.io/sdk/gitea/repo_template.go +++ /dev/null @@ -1,65 +0,0 @@ -// Copyright 2021 The Gitea Authors. All rights reserved. -// Use of this source code is governed by a MIT-style -// license that can be found in the LICENSE file. - -package gitea - -import ( - "bytes" - "encoding/json" - "fmt" -) - -// CreateRepoFromTemplateOption options when creating repository using a template -type CreateRepoFromTemplateOption struct { - // Owner is the organization or person who will own the new repository - Owner string `json:"owner"` - // Name of the repository to create - Name string `json:"name"` - // Description of the repository to create - Description string `json:"description"` - // Private is whether the repository is private - Private bool `json:"private"` - // GitContent include git content of default branch in template repo - GitContent bool `json:"git_content"` - // Topics include topics of template repo - Topics bool `json:"topics"` - // GitHooks include git hooks of template repo - GitHooks bool `json:"git_hooks"` - // Webhooks include webhooks of template repo - Webhooks bool `json:"webhooks"` - // Avatar include avatar of the template repo - Avatar bool `json:"avatar"` - // Labels include labels of template repo - Labels bool `json:"labels"` -} - -// Validate validates CreateRepoFromTemplateOption -func (opt CreateRepoFromTemplateOption) Validate() error { - if len(opt.Owner) == 0 { - return fmt.Errorf("field Owner is required") - } - if len(opt.Name) == 0 { - return fmt.Errorf("field Name is required") - } - return nil -} - -// CreateRepoFromTemplate create a repository using a template -func (c *Client) CreateRepoFromTemplate(templateOwner, templateRepo string, opt CreateRepoFromTemplateOption) (*Repository, *Response, error) { - if err := escapeValidatePathSegments(&templateOwner, &templateRepo); err != nil { - return nil, nil, err - } - - if err := opt.Validate(); err != nil { - return nil, nil, err - } - body, err := json.Marshal(&opt) - if err != nil { - return nil, nil, err - } - - repo := new(Repository) - resp, err := c.getParsedResponse("POST", fmt.Sprintf("/repos/%s/%s/generate", templateOwner, templateRepo), jsonHeader, bytes.NewReader(body), &repo) - return repo, resp, err -} diff --git a/vendor/code.gitea.io/sdk/gitea/repo_topics.go b/vendor/code.gitea.io/sdk/gitea/repo_topics.go deleted file mode 100644 index 92f2228cd9..0000000000 --- a/vendor/code.gitea.io/sdk/gitea/repo_topics.go +++ /dev/null @@ -1,68 +0,0 @@ -// Copyright 2019 The Gitea Authors. All rights reserved. -// Use of this source code is governed by a MIT-style -// license that can be found in the LICENSE file. - -package gitea - -import ( - "bytes" - "encoding/json" - "fmt" -) - -// ListRepoTopicsOptions options for listing repo's topics -type ListRepoTopicsOptions struct { - ListOptions -} - -// topicsList represents a list of repo's topics -type topicsList struct { - Topics []string `json:"topics"` -} - -// ListRepoTopics list all repository's topics -func (c *Client) ListRepoTopics(user, repo string, opt ListRepoTopicsOptions) ([]string, *Response, error) { - if err := escapeValidatePathSegments(&user, &repo); err != nil { - return nil, nil, err - } - opt.setDefaults() - - list := new(topicsList) - resp, err := c.getParsedResponse("GET", fmt.Sprintf("/repos/%s/%s/topics?%s", user, repo, opt.getURLQuery().Encode()), nil, nil, list) - if err != nil { - return nil, resp, err - } - return list.Topics, resp, nil -} - -// SetRepoTopics replaces the list of repo's topics -func (c *Client) SetRepoTopics(user, repo string, list []string) (*Response, error) { - if err := escapeValidatePathSegments(&user, &repo); err != nil { - return nil, err - } - l := topicsList{Topics: list} - body, err := json.Marshal(&l) - if err != nil { - return nil, err - } - _, resp, err := c.getResponse("PUT", fmt.Sprintf("/repos/%s/%s/topics", user, repo), jsonHeader, bytes.NewReader(body)) - return resp, err -} - -// AddRepoTopic adds a topic to a repo's topics list -func (c *Client) AddRepoTopic(user, repo, topic string) (*Response, error) { - if err := escapeValidatePathSegments(&user, &repo, &topic); err != nil { - return nil, err - } - _, resp, err := c.getResponse("PUT", fmt.Sprintf("/repos/%s/%s/topics/%s", user, repo, topic), nil, nil) - return resp, err -} - -// DeleteRepoTopic deletes a topic from repo's topics list -func (c *Client) DeleteRepoTopic(user, repo, topic string) (*Response, error) { - if err := escapeValidatePathSegments(&user, &repo, &topic); err != nil { - return nil, err - } - _, resp, err := c.getResponse("DELETE", fmt.Sprintf("/repos/%s/%s/topics/%s", user, repo, topic), nil, nil) - return resp, err -} diff --git a/vendor/code.gitea.io/sdk/gitea/repo_transfer.go b/vendor/code.gitea.io/sdk/gitea/repo_transfer.go deleted file mode 100644 index be06010a78..0000000000 --- a/vendor/code.gitea.io/sdk/gitea/repo_transfer.go +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright 2020 The Gitea Authors. All rights reserved. -// Use of this source code is governed by a MIT-style -// license that can be found in the LICENSE file. - -package gitea - -import ( - "bytes" - "encoding/json" - "fmt" -) - -// TransferRepoOption options when transfer a repository's ownership -type TransferRepoOption struct { - // required: true - NewOwner string `json:"new_owner"` - // ID of the team or teams to add to the repository. Teams can only be added to organization-owned repositories. - TeamIDs *[]int64 `json:"team_ids"` -} - -// TransferRepo transfers the ownership of a repository -func (c *Client) TransferRepo(owner, reponame string, opt TransferRepoOption) (*Repository, *Response, error) { - if err := escapeValidatePathSegments(&owner, &reponame); err != nil { - return nil, nil, err - } - if err := c.checkServerVersionGreaterThanOrEqual(version1_12_0); err != nil { - return nil, nil, err - } - body, err := json.Marshal(&opt) - if err != nil { - return nil, nil, err - } - repo := new(Repository) - resp, err := c.getParsedResponse("POST", fmt.Sprintf("/repos/%s/%s/transfer", owner, reponame), jsonHeader, bytes.NewReader(body), repo) - return repo, resp, err -} diff --git a/vendor/code.gitea.io/sdk/gitea/repo_tree.go b/vendor/code.gitea.io/sdk/gitea/repo_tree.go deleted file mode 100644 index 452394a3c8..0000000000 --- a/vendor/code.gitea.io/sdk/gitea/repo_tree.go +++ /dev/null @@ -1,44 +0,0 @@ -// Copyright 2018 The Gitea Authors. All rights reserved. -// Use of this source code is governed by a MIT-style -// license that can be found in the LICENSE file. - -package gitea - -import ( - "fmt" -) - -// GitEntry represents a git tree -type GitEntry struct { - Path string `json:"path"` - Mode string `json:"mode"` - Type string `json:"type"` - Size int64 `json:"size"` - SHA string `json:"sha"` - URL string `json:"url"` -} - -// GitTreeResponse returns a git tree -type GitTreeResponse struct { - SHA string `json:"sha"` - URL string `json:"url"` - Entries []GitEntry `json:"tree"` - Truncated bool `json:"truncated"` - Page int `json:"page"` - TotalCount int `json:"total_count"` -} - -// GetTrees downloads a file of repository, ref can be branch/tag/commit. -// e.g.: ref -> master, tree -> macaron.go(no leading slash) -func (c *Client) GetTrees(user, repo, ref string, recursive bool) (*GitTreeResponse, *Response, error) { - if err := escapeValidatePathSegments(&user, &repo, &ref); err != nil { - return nil, nil, err - } - trees := new(GitTreeResponse) - var path = fmt.Sprintf("/repos/%s/%s/git/trees/%s", user, repo, ref) - if recursive { - path += "?recursive=1" - } - resp, err := c.getParsedResponse("GET", path, nil, nil, trees) - return trees, resp, err -} diff --git a/vendor/code.gitea.io/sdk/gitea/repo_watch.go b/vendor/code.gitea.io/sdk/gitea/repo_watch.go deleted file mode 100644 index f499aff221..0000000000 --- a/vendor/code.gitea.io/sdk/gitea/repo_watch.go +++ /dev/null @@ -1,87 +0,0 @@ -// Copyright 2017 The Gitea Authors. All rights reserved. -// Use of this source code is governed by a MIT-style -// license that can be found in the LICENSE file. - -package gitea - -import ( - "fmt" - "net/http" - "time" -) - -// WatchInfo represents an API watch status of one repository -type WatchInfo struct { - Subscribed bool `json:"subscribed"` - Ignored bool `json:"ignored"` - Reason interface{} `json:"reason"` - CreatedAt time.Time `json:"created_at"` - URL string `json:"url"` - RepositoryURL string `json:"repository_url"` -} - -// GetWatchedRepos list all the watched repos of user -func (c *Client) GetWatchedRepos(user string) ([]*Repository, *Response, error) { - if err := escapeValidatePathSegments(&user); err != nil { - return nil, nil, err - } - repos := make([]*Repository, 0, 10) - resp, err := c.getParsedResponse("GET", fmt.Sprintf("/users/%s/subscriptions", user), nil, nil, &repos) - return repos, resp, err -} - -// GetMyWatchedRepos list repositories watched by the authenticated user -func (c *Client) GetMyWatchedRepos() ([]*Repository, *Response, error) { - repos := make([]*Repository, 0, 10) - resp, err := c.getParsedResponse("GET", fmt.Sprintf("/user/subscriptions"), nil, nil, &repos) - return repos, resp, err -} - -// CheckRepoWatch check if the current user is watching a repo -func (c *Client) CheckRepoWatch(owner, repo string) (bool, *Response, error) { - if err := escapeValidatePathSegments(&owner, &repo); err != nil { - return false, nil, err - } - status, resp, err := c.getStatusCode("GET", fmt.Sprintf("/repos/%s/%s/subscription", owner, repo), nil, nil) - if err != nil { - return false, resp, err - } - switch status { - case http.StatusNotFound: - return false, resp, nil - case http.StatusOK: - return true, resp, nil - default: - return false, resp, fmt.Errorf("unexpected Status: %d", status) - } -} - -// WatchRepo start to watch a repository -func (c *Client) WatchRepo(owner, repo string) (*Response, error) { - if err := escapeValidatePathSegments(&owner, &repo); err != nil { - return nil, err - } - status, resp, err := c.getStatusCode("PUT", fmt.Sprintf("/repos/%s/%s/subscription", owner, repo), nil, nil) - if err != nil { - return resp, err - } - if status == http.StatusOK { - return resp, nil - } - return resp, fmt.Errorf("unexpected Status: %d", status) -} - -// UnWatchRepo stop to watch a repository -func (c *Client) UnWatchRepo(owner, repo string) (*Response, error) { - if err := escapeValidatePathSegments(&owner, &repo); err != nil { - return nil, err - } - status, resp, err := c.getStatusCode("DELETE", fmt.Sprintf("/repos/%s/%s/subscription", owner, repo), nil, nil) - if err != nil { - return resp, err - } - if status == http.StatusNoContent { - return resp, nil - } - return resp, fmt.Errorf("unexpected Status: %d", status) -} diff --git a/vendor/code.gitea.io/sdk/gitea/settings.go b/vendor/code.gitea.io/sdk/gitea/settings.go deleted file mode 100644 index fb94248f63..0000000000 --- a/vendor/code.gitea.io/sdk/gitea/settings.go +++ /dev/null @@ -1,78 +0,0 @@ -// Copyright 2020 The Gitea Authors. All rights reserved. -// Use of this source code is governed by a MIT-style -// license that can be found in the LICENSE file. - -package gitea - -// GlobalUISettings represent the global ui settings of a gitea instance witch is exposed by API -type GlobalUISettings struct { - DefaultTheme string `json:"default_theme"` - AllowedReactions []string `json:"allowed_reactions"` - CustomEmojis []string `json:"custom_emojis"` -} - -// GlobalRepoSettings represent the global repository settings of a gitea instance witch is exposed by API -type GlobalRepoSettings struct { - MirrorsDisabled bool `json:"mirrors_disabled"` - HTTPGitDisabled bool `json:"http_git_disabled"` - MigrationsDisabled bool `json:"migrations_disabled"` - StarsDisabled bool `json:"stars_disabled"` - TimeTrackingDisabled bool `json:"time_tracking_disabled"` - LFSDisabled bool `json:"lfs_disabled"` -} - -// GlobalAPISettings contains global api settings exposed by it -type GlobalAPISettings struct { - MaxResponseItems int `json:"max_response_items"` - DefaultPagingNum int `json:"default_paging_num"` - DefaultGitTreesPerPage int `json:"default_git_trees_per_page"` - DefaultMaxBlobSize int64 `json:"default_max_blob_size"` -} - -// GlobalAttachmentSettings contains global Attachment settings exposed by API -type GlobalAttachmentSettings struct { - Enabled bool `json:"enabled"` - AllowedTypes string `json:"allowed_types"` - MaxSize int64 `json:"max_size"` - MaxFiles int `json:"max_files"` -} - -// GetGlobalUISettings get global ui settings witch are exposed by API -func (c *Client) GetGlobalUISettings() (*GlobalUISettings, *Response, error) { - if err := c.checkServerVersionGreaterThanOrEqual(version1_13_0); err != nil { - return nil, nil, err - } - conf := new(GlobalUISettings) - resp, err := c.getParsedResponse("GET", "/settings/ui", jsonHeader, nil, &conf) - return conf, resp, err -} - -// GetGlobalRepoSettings get global repository settings witch are exposed by API -func (c *Client) GetGlobalRepoSettings() (*GlobalRepoSettings, *Response, error) { - if err := c.checkServerVersionGreaterThanOrEqual(version1_13_0); err != nil { - return nil, nil, err - } - conf := new(GlobalRepoSettings) - resp, err := c.getParsedResponse("GET", "/settings/repository", jsonHeader, nil, &conf) - return conf, resp, err -} - -// GetGlobalAPISettings get global api settings witch are exposed by it -func (c *Client) GetGlobalAPISettings() (*GlobalAPISettings, *Response, error) { - if err := c.checkServerVersionGreaterThanOrEqual(version1_13_0); err != nil { - return nil, nil, err - } - conf := new(GlobalAPISettings) - resp, err := c.getParsedResponse("GET", "/settings/api", jsonHeader, nil, &conf) - return conf, resp, err -} - -// GetGlobalAttachmentSettings get global repository settings witch are exposed by API -func (c *Client) GetGlobalAttachmentSettings() (*GlobalAttachmentSettings, *Response, error) { - if err := c.checkServerVersionGreaterThanOrEqual(version1_13_0); err != nil { - return nil, nil, err - } - conf := new(GlobalAttachmentSettings) - resp, err := c.getParsedResponse("GET", "/settings/attachment", jsonHeader, nil, &conf) - return conf, resp, err -} diff --git a/vendor/code.gitea.io/sdk/gitea/status.go b/vendor/code.gitea.io/sdk/gitea/status.go deleted file mode 100644 index fe5d9711f9..0000000000 --- a/vendor/code.gitea.io/sdk/gitea/status.go +++ /dev/null @@ -1,108 +0,0 @@ -// Copyright 2017 The Gitea Authors. All rights reserved. -// Use of this source code is governed by a MIT-style -// license that can be found in the LICENSE file. - -package gitea - -import ( - "bytes" - "encoding/json" - "fmt" - "net/url" - "time" -) - -// StatusState holds the state of a Status -// It can be "pending", "success", "error", "failure", and "warning" -type StatusState string - -const ( - // StatusPending is for when the Status is Pending - StatusPending StatusState = "pending" - // StatusSuccess is for when the Status is Success - StatusSuccess StatusState = "success" - // StatusError is for when the Status is Error - StatusError StatusState = "error" - // StatusFailure is for when the Status is Failure - StatusFailure StatusState = "failure" - // StatusWarning is for when the Status is Warning - StatusWarning StatusState = "warning" -) - -// Status holds a single Status of a single Commit -type Status struct { - ID int64 `json:"id"` - State StatusState `json:"status"` - TargetURL string `json:"target_url"` - Description string `json:"description"` - URL string `json:"url"` - Context string `json:"context"` - Creator *User `json:"creator"` - Created time.Time `json:"created_at"` - Updated time.Time `json:"updated_at"` -} - -// CreateStatusOption holds the information needed to create a new Status for a Commit -type CreateStatusOption struct { - State StatusState `json:"state"` - TargetURL string `json:"target_url"` - Description string `json:"description"` - Context string `json:"context"` -} - -// CreateStatus creates a new Status for a given Commit -func (c *Client) CreateStatus(owner, repo, sha string, opts CreateStatusOption) (*Status, *Response, error) { - if err := escapeValidatePathSegments(&owner, &repo); err != nil { - return nil, nil, err - } - body, err := json.Marshal(&opts) - if err != nil { - return nil, nil, err - } - status := new(Status) - resp, err := c.getParsedResponse("POST", fmt.Sprintf("/repos/%s/%s/statuses/%s", owner, repo, url.QueryEscape(sha)), jsonHeader, bytes.NewReader(body), status) - return status, resp, err -} - -// ListStatusesOption options for listing a repository's commit's statuses -type ListStatusesOption struct { - ListOptions -} - -// ListStatuses returns all statuses for a given Commit by ref -func (c *Client) ListStatuses(owner, repo, ref string, opt ListStatusesOption) ([]*Status, *Response, error) { - if err := escapeValidatePathSegments(&owner, &repo, &ref); err != nil { - return nil, nil, err - } - opt.setDefaults() - statuses := make([]*Status, 0, opt.PageSize) - resp, err := c.getParsedResponse("GET", fmt.Sprintf("/repos/%s/%s/commits/%s/statuses?%s", owner, repo, ref, opt.getURLQuery().Encode()), jsonHeader, nil, &statuses) - return statuses, resp, err -} - -// CombinedStatus holds the combined state of several statuses for a single commit -type CombinedStatus struct { - State StatusState `json:"state"` - SHA string `json:"sha"` - TotalCount int `json:"total_count"` - Statuses []*Status `json:"statuses"` - Repository *Repository `json:"repository"` - CommitURL string `json:"commit_url"` - URL string `json:"url"` -} - -// GetCombinedStatus returns the CombinedStatus for a given Commit -func (c *Client) GetCombinedStatus(owner, repo, ref string) (*CombinedStatus, *Response, error) { - if err := escapeValidatePathSegments(&owner, &repo, &ref); err != nil { - return nil, nil, err - } - status := new(CombinedStatus) - resp, err := c.getParsedResponse("GET", fmt.Sprintf("/repos/%s/%s/commits/%s/status", owner, repo, ref), jsonHeader, nil, status) - - // gitea api return empty body if nothing here jet - if resp != nil && resp.StatusCode == 200 && err != nil { - return status, resp, nil - } - - return status, resp, err -} diff --git a/vendor/code.gitea.io/sdk/gitea/user.go b/vendor/code.gitea.io/sdk/gitea/user.go deleted file mode 100644 index c37627bfaa..0000000000 --- a/vendor/code.gitea.io/sdk/gitea/user.go +++ /dev/null @@ -1,90 +0,0 @@ -// Copyright 2014 The Gogs Authors. All rights reserved. -// Use of this source code is governed by a MIT-style -// license that can be found in the LICENSE file. - -package gitea - -import ( - "fmt" - "net/url" - "strconv" - "time" -) - -// User represents a user -type User struct { - // the user's id - ID int64 `json:"id"` - // the user's username - UserName string `json:"login"` - // the user's full name - FullName string `json:"full_name"` - Email string `json:"email"` - // URL to the user's avatar - AvatarURL string `json:"avatar_url"` - // User locale - Language string `json:"language"` - // Is the user an administrator - IsAdmin bool `json:"is_admin"` - // Date and Time of last login - LastLogin time.Time `json:"last_login"` - // Date and Time of user creation - Created time.Time `json:"created"` - // Is user restricted - Restricted bool `json:"restricted"` - // Is user active - IsActive bool `json:"active"` - // Is user login prohibited - ProhibitLogin bool `json:"prohibit_login"` - // the user's location - Location string `json:"location"` - // the user's website - Website string `json:"website"` - // the user's description - Description string `json:"description"` - // User visibility level option - Visibility VisibleType `json:"visibility"` - - // user counts - FollowerCount int `json:"followers_count"` - FollowingCount int `json:"following_count"` - StarredRepoCount int `json:"starred_repos_count"` -} - -// GetUserInfo get user info by user's name -func (c *Client) GetUserInfo(user string) (*User, *Response, error) { - if err := escapeValidatePathSegments(&user); err != nil { - return nil, nil, err - } - u := new(User) - resp, err := c.getParsedResponse("GET", fmt.Sprintf("/users/%s", user), nil, nil, u) - return u, resp, err -} - -// GetMyUserInfo get user info of current user -func (c *Client) GetMyUserInfo() (*User, *Response, error) { - u := new(User) - resp, err := c.getParsedResponse("GET", "/user", nil, nil, u) - return u, resp, err -} - -// GetUserByID returns user by a given user ID -func (c *Client) GetUserByID(id int64) (*User, *Response, error) { - if id < 0 { - return nil, nil, fmt.Errorf("invalid user id %d", id) - } - - query := make(url.Values) - query.Add("uid", strconv.FormatInt(id, 10)) - users, resp, err := c.searchUsers(query.Encode()) - - if err != nil { - return nil, resp, err - } - - if len(users) == 1 { - return users[0], resp, err - } - - return nil, resp, fmt.Errorf("user not found with id %d", id) -} diff --git a/vendor/code.gitea.io/sdk/gitea/user_app.go b/vendor/code.gitea.io/sdk/gitea/user_app.go deleted file mode 100644 index 88b01ed083..0000000000 --- a/vendor/code.gitea.io/sdk/gitea/user_app.go +++ /dev/null @@ -1,90 +0,0 @@ -// Copyright 2014 The Gogs Authors. All rights reserved. -// Copyright 2019 The Gitea Authors. All rights reserved. -// Use of this source code is governed by a MIT-style -// license that can be found in the LICENSE file. - -package gitea - -import ( - "bytes" - "encoding/json" - "fmt" - "net/url" - "reflect" -) - -// AccessToken represents an API access token. -type AccessToken struct { - ID int64 `json:"id"` - Name string `json:"name"` - Token string `json:"sha1"` - TokenLastEight string `json:"token_last_eight"` -} - -// ListAccessTokensOptions options for listing a users's access tokens -type ListAccessTokensOptions struct { - ListOptions -} - -// ListAccessTokens lists all the access tokens of user -func (c *Client) ListAccessTokens(opts ListAccessTokensOptions) ([]*AccessToken, *Response, error) { - c.mutex.RLock() - username := c.username - c.mutex.RUnlock() - if len(username) == 0 { - return nil, nil, fmt.Errorf("\"username\" not set: only BasicAuth allowed") - } - opts.setDefaults() - tokens := make([]*AccessToken, 0, opts.PageSize) - resp, err := c.getParsedResponse("GET", fmt.Sprintf("/users/%s/tokens?%s", url.PathEscape(username), opts.getURLQuery().Encode()), jsonHeader, nil, &tokens) - return tokens, resp, err -} - -// CreateAccessTokenOption options when create access token -type CreateAccessTokenOption struct { - Name string `json:"name"` -} - -// CreateAccessToken create one access token with options -func (c *Client) CreateAccessToken(opt CreateAccessTokenOption) (*AccessToken, *Response, error) { - c.mutex.RLock() - username := c.username - c.mutex.RUnlock() - if len(username) == 0 { - return nil, nil, fmt.Errorf("\"username\" not set: only BasicAuth allowed") - } - body, err := json.Marshal(&opt) - if err != nil { - return nil, nil, err - } - t := new(AccessToken) - resp, err := c.getParsedResponse("POST", fmt.Sprintf("/users/%s/tokens", url.PathEscape(username)), jsonHeader, bytes.NewReader(body), t) - return t, resp, err -} - -// DeleteAccessToken delete token, identified by ID and if not available by name -func (c *Client) DeleteAccessToken(value interface{}) (*Response, error) { - c.mutex.RLock() - username := c.username - c.mutex.RUnlock() - if len(username) == 0 { - return nil, fmt.Errorf("\"username\" not set: only BasicAuth allowed") - } - - var token = "" - - switch reflect.ValueOf(value).Kind() { - case reflect.Int64: - token = fmt.Sprintf("%d", value.(int64)) - case reflect.String: - if err := c.checkServerVersionGreaterThanOrEqual(version1_13_0); err != nil { - return nil, err - } - token = value.(string) - default: - return nil, fmt.Errorf("only string and int64 supported") - } - - _, resp, err := c.getResponse("DELETE", fmt.Sprintf("/users/%s/tokens/%s", url.PathEscape(username), url.PathEscape(token)), jsonHeader, nil) - return resp, err -} diff --git a/vendor/code.gitea.io/sdk/gitea/user_email.go b/vendor/code.gitea.io/sdk/gitea/user_email.go deleted file mode 100644 index 4962b082b4..0000000000 --- a/vendor/code.gitea.io/sdk/gitea/user_email.go +++ /dev/null @@ -1,64 +0,0 @@ -// Copyright 2015 The Gogs Authors. All rights reserved. -// Use of this source code is governed by a MIT-style -// license that can be found in the LICENSE file. - -package gitea - -import ( - "bytes" - "encoding/json" - "fmt" -) - -// Email an email address belonging to a user -type Email struct { - Email string `json:"email"` - Verified bool `json:"verified"` - Primary bool `json:"primary"` -} - -// ListEmailsOptions options for listing current's user emails -type ListEmailsOptions struct { - ListOptions -} - -// ListEmails all the email addresses of user -func (c *Client) ListEmails(opt ListEmailsOptions) ([]*Email, *Response, error) { - opt.setDefaults() - emails := make([]*Email, 0, opt.PageSize) - resp, err := c.getParsedResponse("GET", fmt.Sprintf("/user/emails?%s", opt.getURLQuery().Encode()), nil, nil, &emails) - return emails, resp, err -} - -// CreateEmailOption options when creating email addresses -type CreateEmailOption struct { - // email addresses to add - Emails []string `json:"emails"` -} - -// AddEmail add one email to current user with options -func (c *Client) AddEmail(opt CreateEmailOption) ([]*Email, *Response, error) { - body, err := json.Marshal(&opt) - if err != nil { - return nil, nil, err - } - emails := make([]*Email, 0, 3) - resp, err := c.getParsedResponse("POST", "/user/emails", jsonHeader, bytes.NewReader(body), &emails) - return emails, resp, err -} - -// DeleteEmailOption options when deleting email addresses -type DeleteEmailOption struct { - // email addresses to delete - Emails []string `json:"emails"` -} - -// DeleteEmail delete one email of current users' -func (c *Client) DeleteEmail(opt DeleteEmailOption) (*Response, error) { - body, err := json.Marshal(&opt) - if err != nil { - return nil, err - } - _, resp, err := c.getResponse("DELETE", "/user/emails", jsonHeader, bytes.NewReader(body)) - return resp, err -} diff --git a/vendor/code.gitea.io/sdk/gitea/user_follow.go b/vendor/code.gitea.io/sdk/gitea/user_follow.go deleted file mode 100644 index 7bd340ca26..0000000000 --- a/vendor/code.gitea.io/sdk/gitea/user_follow.go +++ /dev/null @@ -1,93 +0,0 @@ -// Copyright 2015 The Gogs Authors. All rights reserved. -// Use of this source code is governed by a MIT-style -// license that can be found in the LICENSE file. - -package gitea - -import "fmt" - -// ListFollowersOptions options for listing followers -type ListFollowersOptions struct { - ListOptions -} - -// ListMyFollowers list all the followers of current user -func (c *Client) ListMyFollowers(opt ListFollowersOptions) ([]*User, *Response, error) { - opt.setDefaults() - users := make([]*User, 0, opt.PageSize) - resp, err := c.getParsedResponse("GET", fmt.Sprintf("/user/followers?%s", opt.getURLQuery().Encode()), nil, nil, &users) - return users, resp, err -} - -// ListFollowers list all the followers of one user -func (c *Client) ListFollowers(user string, opt ListFollowersOptions) ([]*User, *Response, error) { - if err := escapeValidatePathSegments(&user); err != nil { - return nil, nil, err - } - opt.setDefaults() - users := make([]*User, 0, opt.PageSize) - resp, err := c.getParsedResponse("GET", fmt.Sprintf("/users/%s/followers?%s", user, opt.getURLQuery().Encode()), nil, nil, &users) - return users, resp, err -} - -// ListFollowingOptions options for listing a user's users being followed -type ListFollowingOptions struct { - ListOptions -} - -// ListMyFollowing list all the users current user followed -func (c *Client) ListMyFollowing(opt ListFollowingOptions) ([]*User, *Response, error) { - opt.setDefaults() - users := make([]*User, 0, opt.PageSize) - resp, err := c.getParsedResponse("GET", fmt.Sprintf("/user/following?%s", opt.getURLQuery().Encode()), nil, nil, &users) - return users, resp, err -} - -// ListFollowing list all the users the user followed -func (c *Client) ListFollowing(user string, opt ListFollowingOptions) ([]*User, *Response, error) { - if err := escapeValidatePathSegments(&user); err != nil { - return nil, nil, err - } - opt.setDefaults() - users := make([]*User, 0, opt.PageSize) - resp, err := c.getParsedResponse("GET", fmt.Sprintf("/users/%s/following?%s", user, opt.getURLQuery().Encode()), nil, nil, &users) - return users, resp, err -} - -// IsFollowing if current user followed the target -func (c *Client) IsFollowing(target string) (bool, *Response) { - if err := escapeValidatePathSegments(&target); err != nil { - // ToDo return err - return false, nil - } - _, resp, err := c.getResponse("GET", fmt.Sprintf("/user/following/%s", target), nil, nil) - return err == nil, resp -} - -// IsUserFollowing if the user followed the target -func (c *Client) IsUserFollowing(user, target string) (bool, *Response) { - if err := escapeValidatePathSegments(&user, &target); err != nil { - // ToDo return err - return false, nil - } - _, resp, err := c.getResponse("GET", fmt.Sprintf("/users/%s/following/%s", user, target), nil, nil) - return err == nil, resp -} - -// Follow set current user follow the target -func (c *Client) Follow(target string) (*Response, error) { - if err := escapeValidatePathSegments(&target); err != nil { - return nil, err - } - _, resp, err := c.getResponse("PUT", fmt.Sprintf("/user/following/%s", target), nil, nil) - return resp, err -} - -// Unfollow set current user unfollow the target -func (c *Client) Unfollow(target string) (*Response, error) { - if err := escapeValidatePathSegments(&target); err != nil { - return nil, err - } - _, resp, err := c.getResponse("DELETE", fmt.Sprintf("/user/following/%s", target), nil, nil) - return resp, err -} diff --git a/vendor/code.gitea.io/sdk/gitea/user_gpgkey.go b/vendor/code.gitea.io/sdk/gitea/user_gpgkey.go deleted file mode 100644 index 6c1b9d10f3..0000000000 --- a/vendor/code.gitea.io/sdk/gitea/user_gpgkey.go +++ /dev/null @@ -1,89 +0,0 @@ -// Copyright 2017 Gitea Authors. All rights reserved. -// Use of this source code is governed by a MIT-style -// license that can be found in the LICENSE file. - -package gitea - -import ( - "bytes" - "encoding/json" - "fmt" - "time" -) - -// GPGKey a user GPG key to sign commit and tag in repository -type GPGKey struct { - ID int64 `json:"id"` - PrimaryKeyID string `json:"primary_key_id"` - KeyID string `json:"key_id"` - PublicKey string `json:"public_key"` - Emails []*GPGKeyEmail `json:"emails"` - SubsKey []*GPGKey `json:"subkeys"` - CanSign bool `json:"can_sign"` - CanEncryptComms bool `json:"can_encrypt_comms"` - CanEncryptStorage bool `json:"can_encrypt_storage"` - CanCertify bool `json:"can_certify"` - Created time.Time `json:"created_at,omitempty"` - Expires time.Time `json:"expires_at,omitempty"` -} - -// GPGKeyEmail an email attached to a GPGKey -type GPGKeyEmail struct { - Email string `json:"email"` - Verified bool `json:"verified"` -} - -// ListGPGKeysOptions options for listing a user's GPGKeys -type ListGPGKeysOptions struct { - ListOptions -} - -// ListGPGKeys list all the GPG keys of the user -func (c *Client) ListGPGKeys(user string, opt ListGPGKeysOptions) ([]*GPGKey, *Response, error) { - if err := escapeValidatePathSegments(&user); err != nil { - return nil, nil, err - } - opt.setDefaults() - keys := make([]*GPGKey, 0, opt.PageSize) - resp, err := c.getParsedResponse("GET", fmt.Sprintf("/users/%s/gpg_keys?%s", user, opt.getURLQuery().Encode()), nil, nil, &keys) - return keys, resp, err -} - -// ListMyGPGKeys list all the GPG keys of current user -func (c *Client) ListMyGPGKeys(opt *ListGPGKeysOptions) ([]*GPGKey, *Response, error) { - opt.setDefaults() - keys := make([]*GPGKey, 0, opt.PageSize) - resp, err := c.getParsedResponse("GET", fmt.Sprintf("/user/gpg_keys?%s", opt.getURLQuery().Encode()), nil, nil, &keys) - return keys, resp, err -} - -// GetGPGKey get current user's GPG key by key id -func (c *Client) GetGPGKey(keyID int64) (*GPGKey, *Response, error) { - key := new(GPGKey) - resp, err := c.getParsedResponse("GET", fmt.Sprintf("/user/gpg_keys/%d", keyID), nil, nil, &key) - return key, resp, err -} - -// CreateGPGKeyOption options create user GPG key -type CreateGPGKeyOption struct { - // An armored GPG key to add - // - ArmoredKey string `json:"armored_public_key"` -} - -// CreateGPGKey create GPG key with options -func (c *Client) CreateGPGKey(opt CreateGPGKeyOption) (*GPGKey, *Response, error) { - body, err := json.Marshal(&opt) - if err != nil { - return nil, nil, err - } - key := new(GPGKey) - resp, err := c.getParsedResponse("POST", "/user/gpg_keys", jsonHeader, bytes.NewReader(body), key) - return key, resp, err -} - -// DeleteGPGKey delete GPG key with key id -func (c *Client) DeleteGPGKey(keyID int64) (*Response, error) { - _, resp, err := c.getResponse("DELETE", fmt.Sprintf("/user/gpg_keys/%d", keyID), nil, nil) - return resp, err -} diff --git a/vendor/code.gitea.io/sdk/gitea/user_key.go b/vendor/code.gitea.io/sdk/gitea/user_key.go deleted file mode 100644 index 02795baefc..0000000000 --- a/vendor/code.gitea.io/sdk/gitea/user_key.go +++ /dev/null @@ -1,83 +0,0 @@ -// Copyright 2015 The Gogs Authors. All rights reserved. -// Use of this source code is governed by a MIT-style -// license that can be found in the LICENSE file. - -package gitea - -import ( - "bytes" - "encoding/json" - "fmt" - "time" -) - -// PublicKey publickey is a user key to push code to repository -type PublicKey struct { - ID int64 `json:"id"` - Key string `json:"key"` - URL string `json:"url,omitempty"` - Title string `json:"title,omitempty"` - Fingerprint string `json:"fingerprint,omitempty"` - Created time.Time `json:"created_at,omitempty"` - Owner *User `json:"user,omitempty"` - ReadOnly bool `json:"read_only,omitempty"` - KeyType string `json:"key_type,omitempty"` -} - -// ListPublicKeysOptions options for listing a user's PublicKeys -type ListPublicKeysOptions struct { - ListOptions -} - -// ListPublicKeys list all the public keys of the user -func (c *Client) ListPublicKeys(user string, opt ListPublicKeysOptions) ([]*PublicKey, *Response, error) { - if err := escapeValidatePathSegments(&user); err != nil { - return nil, nil, err - } - opt.setDefaults() - keys := make([]*PublicKey, 0, opt.PageSize) - resp, err := c.getParsedResponse("GET", fmt.Sprintf("/users/%s/keys?%s", user, opt.getURLQuery().Encode()), nil, nil, &keys) - return keys, resp, err -} - -// ListMyPublicKeys list all the public keys of current user -func (c *Client) ListMyPublicKeys(opt ListPublicKeysOptions) ([]*PublicKey, *Response, error) { - opt.setDefaults() - keys := make([]*PublicKey, 0, opt.PageSize) - resp, err := c.getParsedResponse("GET", fmt.Sprintf("/user/keys?%s", opt.getURLQuery().Encode()), nil, nil, &keys) - return keys, resp, err -} - -// GetPublicKey get current user's public key by key id -func (c *Client) GetPublicKey(keyID int64) (*PublicKey, *Response, error) { - key := new(PublicKey) - resp, err := c.getParsedResponse("GET", fmt.Sprintf("/user/keys/%d", keyID), nil, nil, &key) - return key, resp, err -} - -// CreateKeyOption options when creating a key -type CreateKeyOption struct { - // Title of the key to add - Title string `json:"title"` - // An armored SSH key to add - Key string `json:"key"` - // Describe if the key has only read access or read/write - ReadOnly bool `json:"read_only"` -} - -// CreatePublicKey create public key with options -func (c *Client) CreatePublicKey(opt CreateKeyOption) (*PublicKey, *Response, error) { - body, err := json.Marshal(&opt) - if err != nil { - return nil, nil, err - } - key := new(PublicKey) - resp, err := c.getParsedResponse("POST", "/user/keys", jsonHeader, bytes.NewReader(body), key) - return key, resp, err -} - -// DeletePublicKey delete public key with key id -func (c *Client) DeletePublicKey(keyID int64) (*Response, error) { - _, resp, err := c.getResponse("DELETE", fmt.Sprintf("/user/keys/%d", keyID), nil, nil) - return resp, err -} diff --git a/vendor/code.gitea.io/sdk/gitea/user_search.go b/vendor/code.gitea.io/sdk/gitea/user_search.go deleted file mode 100644 index 5ea0c45f81..0000000000 --- a/vendor/code.gitea.io/sdk/gitea/user_search.go +++ /dev/null @@ -1,48 +0,0 @@ -// Copyright 2020 The Gitea Authors. All rights reserved. -// Use of this source code is governed by a MIT-style -// license that can be found in the LICENSE file. - -package gitea - -import ( - "fmt" - "net/url" -) - -type searchUsersResponse struct { - Users []*User `json:"data"` -} - -// SearchUsersOption options for SearchUsers -type SearchUsersOption struct { - ListOptions - KeyWord string -} - -// QueryEncode turns options into querystring argument -func (opt *SearchUsersOption) QueryEncode() string { - query := make(url.Values) - if opt.Page > 0 { - query.Add("page", fmt.Sprintf("%d", opt.Page)) - } - if opt.PageSize > 0 { - query.Add("limit", fmt.Sprintf("%d", opt.PageSize)) - } - if len(opt.KeyWord) > 0 { - query.Add("q", opt.KeyWord) - } - return query.Encode() -} - -func (c *Client) searchUsers(rawQuery string) ([]*User, *Response, error) { - link, _ := url.Parse("/users/search") - link.RawQuery = rawQuery - userResp := new(searchUsersResponse) - resp, err := c.getParsedResponse("GET", link.String(), nil, nil, &userResp) - return userResp.Users, resp, err -} - -// SearchUsers finds users by query -func (c *Client) SearchUsers(opt SearchUsersOption) ([]*User, *Response, error) { - return c.searchUsers(opt.QueryEncode()) -} diff --git a/vendor/code.gitea.io/sdk/gitea/user_settings.go b/vendor/code.gitea.io/sdk/gitea/user_settings.go deleted file mode 100644 index 494cab3629..0000000000 --- a/vendor/code.gitea.io/sdk/gitea/user_settings.go +++ /dev/null @@ -1,62 +0,0 @@ -// Copyright 2021 The Gitea Authors. All rights reserved. -// Use of this source code is governed by a MIT-style -// license that can be found in the LICENSE file. - -package gitea - -import ( - "bytes" - "encoding/json" -) - -// UserSettings represents user settings -type UserSettings struct { - FullName string `json:"full_name"` - Website string `json:"website"` - Description string `json:"description"` - Location string `json:"location"` - Language string `json:"language"` - Theme string `json:"theme"` - DiffViewStyle string `json:"diff_view_style"` - // Privacy - HideEmail bool `json:"hide_email"` - HideActivity bool `json:"hide_activity"` -} - -// UserSettingsOptions represents options to change user settings -type UserSettingsOptions struct { - FullName *string `json:"full_name,omitempty"` - Website *string `json:"website,omitempty"` - Description *string `json:"description,omitempty"` - Location *string `json:"location,omitempty"` - Language *string `json:"language,omitempty"` - Theme *string `json:"theme,omitempty"` - DiffViewStyle *string `json:"diff_view_style,omitempty"` - // Privacy - HideEmail *bool `json:"hide_email,omitempty"` - HideActivity *bool `json:"hide_activity,omitempty"` -} - -// GetUserSettings returns user settings -func (c *Client) GetUserSettings() (*UserSettings, *Response, error) { - if err := c.checkServerVersionGreaterThanOrEqual(version1_15_0); err != nil { - return nil, nil, err - } - userConfig := new(UserSettings) - resp, err := c.getParsedResponse("GET", "/user/settings", nil, nil, userConfig) - return userConfig, resp, err -} - -// UpdateUserSettings returns user settings -func (c *Client) UpdateUserSettings(opt UserSettingsOptions) (*UserSettings, *Response, error) { - if err := c.checkServerVersionGreaterThanOrEqual(version1_15_0); err != nil { - return nil, nil, err - } - body, err := json.Marshal(&opt) - if err != nil { - return nil, nil, err - } - userConfig := new(UserSettings) - resp, err := c.getParsedResponse("PATCH", "/user/settings", jsonHeader, bytes.NewReader(body), userConfig) - return userConfig, resp, err -} diff --git a/vendor/code.gitea.io/sdk/gitea/version.go b/vendor/code.gitea.io/sdk/gitea/version.go deleted file mode 100644 index 1f41c77183..0000000000 --- a/vendor/code.gitea.io/sdk/gitea/version.go +++ /dev/null @@ -1,101 +0,0 @@ -// Copyright 2020 The Gitea Authors. All rights reserved. -// Use of this source code is governed by a MIT-style -// license that can be found in the LICENSE file. - -package gitea - -import ( - "fmt" - - "github.com/hashicorp/go-version" -) - -// ServerVersion returns the version of the server -func (c *Client) ServerVersion() (string, *Response, error) { - var v = struct { - Version string `json:"version"` - }{} - resp, err := c.getParsedResponse("GET", "/version", nil, nil, &v) - return v.Version, resp, err -} - -// CheckServerVersionConstraint validates that the login's server satisfies a -// given version constraint such as ">= 1.11.0+dev" -func (c *Client) CheckServerVersionConstraint(constraint string) error { - if err := c.loadServerVersion(); err != nil { - return err - } - - check, err := version.NewConstraint(constraint) - if err != nil { - return err - } - if !check.Check(c.serverVersion) { - c.mutex.RLock() - url := c.url - c.mutex.RUnlock() - return fmt.Errorf("gitea server at %s does not satisfy version constraint %s", url, constraint) - } - return nil -} - -// SetGiteaVersion configures the Client to assume the given version of the -// Gitea server, instead of querying the server for it when initializing. -// Use "" to skip all canonical ways in the SDK to check for versions -func SetGiteaVersion(v string) ClientOption { - if v == "" { - return func(c *Client) error { - c.ignoreVersion = true - return nil - } - } - return func(c *Client) (err error) { - c.getVersionOnce.Do(func() { - c.serverVersion, err = version.NewVersion(v) - return - }) - return - } -} - -// predefined versions only have to be parsed by library once -var ( - version1_11_0, _ = version.NewVersion("1.11.0") - version1_12_0, _ = version.NewVersion("1.12.0") - version1_13_0, _ = version.NewVersion("1.13.0") - version1_14_0, _ = version.NewVersion("1.14.0") - version1_15_0, _ = version.NewVersion("1.15.0") -) - -// checkServerVersionGreaterThanOrEqual is the canonical way in the SDK to check for versions for API compatibility reasons -func (c *Client) checkServerVersionGreaterThanOrEqual(v *version.Version) error { - if c.ignoreVersion { - return nil - } - if err := c.loadServerVersion(); err != nil { - return err - } - - if !c.serverVersion.GreaterThanOrEqual(v) { - c.mutex.RLock() - url := c.url - c.mutex.RUnlock() - return fmt.Errorf("gitea server at %s is older than %s", url, v.Original()) - } - return nil -} - -// loadServerVersion init the serverVersion variable -func (c *Client) loadServerVersion() (err error) { - c.getVersionOnce.Do(func() { - raw, _, err2 := c.ServerVersion() - if err2 != nil { - err = err2 - return - } - if c.serverVersion, err = version.NewVersion(raw); err != nil { - return - } - }) - return -} |