require (
code.gitea.io/gitea-vet v0.2.1
- code.gitea.io/sdk/gitea v0.13.1
+ code.gitea.io/sdk/gitea v0.13.2
gitea.com/lunny/levelqueue v0.3.0
gitea.com/macaron/binding v0.0.0-20190822013154-a5f53841ed2b
gitea.com/macaron/cache v0.0.0-20190822004001-a6e7fee4ee76
cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw=
code.gitea.io/gitea-vet v0.2.1 h1:b30by7+3SkmiftK0RjuXqFvZg2q4p68uoPGuxhzBN0s=
code.gitea.io/gitea-vet v0.2.1/go.mod h1:zcNbT/aJEmivCAhfmkHOlT645KNOf9W2KnkLgFjGGfE=
-code.gitea.io/sdk/gitea v0.13.1 h1:Y7bpH2iO6Q0KhhMJfjP/LZ0AmiYITeRQlCD8b0oYqhk=
-code.gitea.io/sdk/gitea v0.13.1/go.mod h1:z3uwDV/b9Ls47NGukYM9XhnHtqPh/J+t40lsUrR6JDY=
+code.gitea.io/sdk/gitea v0.13.2 h1:wAnT/J7Z62q3fJXbgnecoaOBh8CM1Qq0/DakWxiv4yA=
+code.gitea.io/sdk/gitea v0.13.2/go.mod h1:lee2y8LeV3kQb2iK+hHlMqoadL4bp27QOkOV/hawLKg=
dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
gitea.com/lunny/levelqueue v0.3.0 h1:MHn1GuSZkxvVEDMyAPqlc7A3cOW+q8RcGhRgH/xtm6I=
gitea.com/lunny/levelqueue v0.3.0/go.mod h1:HBqmLbz56JWpfEGG0prskAV97ATNRoj5LDmPicD22hU=
// ListCronTasks list available cron tasks
func (c *Client) ListCronTasks(opt ListCronTaskOptions) ([]*CronTask, *Response, error) {
- if err := c.CheckServerVersionConstraint(">=1.13.0"); err != nil {
+ if err := c.checkServerVersionGreaterThanOrEqual(version1_13_0); err != nil {
return nil, nil, err
}
opt.setDefaults()
// RunCronTasks run a cron task
func (c *Client) RunCronTasks(task string) (*Response, error) {
- if err := c.CheckServerVersionConstraint(">=1.13.0"); err != nil {
+ if err := c.checkServerVersionGreaterThanOrEqual(version1_13_0); err != nil {
return nil, err
}
_, resp, err := c.getResponse("POST", fmt.Sprintf("/admin/cron/%s", task), jsonHeader, nil)
for _, opt := range options {
opt(client)
}
- if err := client.CheckServerVersionConstraint(">=1.10"); err != nil {
+ if err := client.checkServerVersionGreaterThanOrEqual(version1_10_0); err != nil {
return nil, err
}
return client, nil
go 1.12
require (
- github.com/hashicorp/go-version v1.2.0
+ github.com/hashicorp/go-version v1.2.1
github.com/stretchr/testify v1.4.0
)
link, _ := url.Parse("/repos/issues/search")
link.RawQuery = opt.QueryEncode()
resp, err := c.getParsedResponse("GET", link.String(), jsonHeader, nil, &issues)
- if e := c.CheckServerVersionConstraint(">=1.12.0"); e != nil {
+ 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]
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.CheckServerVersionConstraint(">=1.12.0"); e != nil {
+ 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]
func (c *Client) GetIssue(owner, repo string, index int64) (*Issue, *Response, error) {
issue := new(Issue)
resp, err := c.getParsedResponse("GET", fmt.Sprintf("/repos/%s/%s/issues/%d", owner, repo, index), nil, nil, issue)
- if e := c.CheckServerVersionConstraint(">=1.12.0"); e != nil && issue.Repository != nil {
+ if e := c.checkServerVersionGreaterThanOrEqual(version1_12_0); e != nil && issue.Repository != nil {
issue.Repository.Owner = strings.Split(issue.Repository.FullName, "/")[0]
}
return issue, resp, err
// GetIssueComment get a comment for a given repo by id.
func (c *Client) GetIssueComment(owner, repo string, id int64) (*Comment, *Response, error) {
comment := new(Comment)
- if err := c.CheckServerVersionConstraint(">=1.12.0"); err != nil {
+ 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 nil, nil, err
}
if len(opt.Color) == 6 {
- if err := c.CheckServerVersionConstraint(">=1.12.0"); err != nil {
+ if err := c.checkServerVersionGreaterThanOrEqual(version1_12_0); err != nil {
opt.Color = "#" + opt.Color
}
}
// GetIssueReactions get a list reactions of an issue
func (c *Client) GetIssueReactions(owner, repo string, index int64) ([]*Reaction, *Response, error) {
- if err := c.CheckServerVersionConstraint(">=1.11.0"); err != nil {
+ if err := c.checkServerVersionGreaterThanOrEqual(version1_11_0); err != nil {
return nil, nil, err
}
reactions := make([]*Reaction, 0, 10)
// 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 := c.CheckServerVersionConstraint(">=1.11.0"); err != nil {
+ if err := c.checkServerVersionGreaterThanOrEqual(version1_11_0); err != nil {
return nil, nil, err
}
reactions := make([]*Reaction, 0, 10)
// PostIssueReaction add a reaction to an issue
func (c *Client) PostIssueReaction(owner, repo string, index int64, reaction string) (*Reaction, *Response, error) {
- if err := c.CheckServerVersionConstraint(">=1.11.0"); err != nil {
+ if err := c.checkServerVersionGreaterThanOrEqual(version1_11_0); err != nil {
return nil, nil, err
}
reactionResponse := new(Reaction)
// DeleteIssueReaction remove a reaction from an issue
func (c *Client) DeleteIssueReaction(owner, repo string, index int64, reaction string) (*Response, error) {
- if err := c.CheckServerVersionConstraint(">=1.11.0"); err != nil {
+ if err := c.checkServerVersionGreaterThanOrEqual(version1_11_0); err != nil {
return nil, err
}
body, err := json.Marshal(&editReactionOption{Reaction: reaction})
// 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 := c.CheckServerVersionConstraint(">=1.11.0"); err != nil {
+ if err := c.checkServerVersionGreaterThanOrEqual(version1_11_0); err != nil {
return nil, nil, err
}
reactionResponse := new(Reaction)
// 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 := c.CheckServerVersionConstraint(">=1.11.0"); err != nil {
+ if err := c.checkServerVersionGreaterThanOrEqual(version1_11_0); err != nil {
return nil, err
}
body, err := json.Marshal(&editReactionOption{Reaction: reaction})
// GetIssueSubscribers get list of users who subscribed on an issue
func (c *Client) GetIssueSubscribers(owner, repo string, index int64) ([]*User, *Response, error) {
- if err := c.CheckServerVersionConstraint(">=1.11.0"); err != nil {
+ if err := c.checkServerVersionGreaterThanOrEqual(version1_11_0); err != nil {
return nil, nil, err
}
subscribers := make([]*User, 0, 10)
// AddIssueSubscription Subscribe user to issue
func (c *Client) AddIssueSubscription(owner, repo string, index int64, user string) (*Response, error) {
- if err := c.CheckServerVersionConstraint(">=1.11.0"); err != nil {
+ if err := c.checkServerVersionGreaterThanOrEqual(version1_11_0); 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)
// DeleteIssueSubscription unsubscribe user from issue
func (c *Client) DeleteIssueSubscription(owner, repo string, index int64, user string) (*Response, error) {
- if err := c.CheckServerVersionConstraint(">=1.11.0"); err != nil {
+ if err := c.checkServerVersionGreaterThanOrEqual(version1_11_0); 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)
// CheckIssueSubscription check if current user is subscribed to an issue
func (c *Client) CheckIssueSubscription(owner, repo string, index int64) (*WatchInfo, *Response, error) {
- if err := c.CheckServerVersionConstraint(">=1.12.0"); err != nil {
+ if err := c.checkServerVersionGreaterThanOrEqual(version1_12_0); err != nil {
return nil, nil, err
}
wi := new(WatchInfo)
// GetUserTrackedTimes list tracked times of a user
func (c *Client) GetUserTrackedTimes(owner, repo, user string) ([]*TrackedTime, *Response, error) {
- if err := c.CheckServerVersionConstraint(">=1.11.0"); err != nil {
+ if err := c.checkServerVersionGreaterThanOrEqual(version1_11_0); err != nil {
return nil, nil, err
}
times := make([]*TrackedTime, 0, 10)
// GetRepoTrackedTimes list tracked times of a repository
func (c *Client) GetRepoTrackedTimes(owner, repo string) ([]*TrackedTime, *Response, error) {
- if err := c.CheckServerVersionConstraint(">=1.11.0"); err != nil {
+ if err := c.checkServerVersionGreaterThanOrEqual(version1_11_0); err != nil {
return nil, nil, err
}
times := make([]*TrackedTime, 0, 10)
// GetMyTrackedTimes list tracked times of the current user
func (c *Client) GetMyTrackedTimes() ([]*TrackedTime, *Response, error) {
- if err := c.CheckServerVersionConstraint(">=1.11.0"); err != nil {
+ if err := c.checkServerVersionGreaterThanOrEqual(version1_11_0); err != nil {
return nil, nil, err
}
times := make([]*TrackedTime, 0, 10)
// 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 := c.CheckServerVersionConstraint(">=1.11.0"); err != nil {
+ if err := c.checkServerVersionGreaterThanOrEqual(version1_11_0); err != nil {
return nil, nil, err
}
if err := opt.Validate(); err != nil {
// ListTrackedTimes list tracked times of a single issue for a given repository
func (c *Client) ListTrackedTimes(owner, repo string, index int64, opt ListTrackedTimesOptions) ([]*TrackedTime, *Response, error) {
- if err := c.CheckServerVersionConstraint(">=1.11.0"); err != nil {
+ if err := c.checkServerVersionGreaterThanOrEqual(version1_11_0); err != nil {
return nil, nil, err
}
opt.setDefaults()
// 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 := c.CheckServerVersionConstraint(">=1.11.0"); err != nil {
+ if err := c.checkServerVersionGreaterThanOrEqual(version1_11_0); err != nil {
return nil, err
}
_, resp, err := c.getResponse("DELETE", fmt.Sprintf("/repos/%s/%s/issues/%d/times", owner, repo, index), nil, nil)
// 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 := c.CheckServerVersionConstraint(">=1.11.0"); err != nil {
+ if err := c.checkServerVersionGreaterThanOrEqual(version1_11_0); err != nil {
return nil, err
}
_, resp, err := c.getResponse("DELETE", fmt.Sprintf("/repos/%s/%s/issues/%d/times/%d", owner, repo, index, timeID), nil, nil)
"fmt"
"net/url"
"time"
+
+ "github.com/hashicorp/go-version"
+)
+
+var (
+ version1_12_3, _ = version.NewVersion("1.12.3")
)
// NotificationThread expose Notification on API
// Validate the CreateUserOption struct
func (opt ListNotificationOptions) Validate(c *Client) error {
if len(opt.Status) != 0 {
- return c.CheckServerVersionConstraint(">=1.12.3")
+ return c.checkServerVersionGreaterThanOrEqual(version1_12_3)
}
return nil
}
// Validate the CreateUserOption struct
func (opt MarkNotificationOptions) Validate(c *Client) error {
if len(opt.Status) != 0 || len(opt.ToStatus) != 0 {
- return c.CheckServerVersionConstraint(">=1.12.3")
+ return c.checkServerVersionGreaterThanOrEqual(version1_12_3)
}
return nil
}
// CheckNotifications list users's notification threads
func (c *Client) CheckNotifications() (int64, *Response, error) {
- if err := c.CheckServerVersionConstraint(">=1.12.0"); err != nil {
+ if err := c.checkServerVersionGreaterThanOrEqual(version1_12_0); err != nil {
return 0, nil, err
}
new := struct {
// GetNotification get notification thread by ID
func (c *Client) GetNotification(id int64) (*NotificationThread, *Response, error) {
- if err := c.CheckServerVersionConstraint(">=1.12.0"); err != nil {
+ if err := c.checkServerVersionGreaterThanOrEqual(version1_12_0); err != nil {
return nil, nil, err
}
thread := new(NotificationThread)
// 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.CheckServerVersionConstraint(">=1.12.0"); err != nil {
+ if err := c.checkServerVersionGreaterThanOrEqual(version1_12_0); err != nil {
return nil, err
}
link := fmt.Sprintf("/notifications/threads/%d", id)
// ListNotifications list users's notification threads
func (c *Client) ListNotifications(opt ListNotificationOptions) ([]*NotificationThread, *Response, error) {
- if err := c.CheckServerVersionConstraint(">=1.12.0"); err != nil {
+ if err := c.checkServerVersionGreaterThanOrEqual(version1_12_0); err != nil {
return nil, nil, err
}
if err := opt.Validate(c); err != nil {
// ReadNotifications mark notification threads as read
func (c *Client) ReadNotifications(opt MarkNotificationOptions) (*Response, error) {
- if err := c.CheckServerVersionConstraint(">=1.12.0"); err != nil {
+ if err := c.checkServerVersionGreaterThanOrEqual(version1_12_0); err != nil {
return nil, err
}
if err := opt.Validate(c); err != nil {
// ListRepoNotifications list users's notification threads on a specific repo
func (c *Client) ListRepoNotifications(owner, reponame string, opt ListNotificationOptions) ([]*NotificationThread, *Response, error) {
- if err := c.CheckServerVersionConstraint(">=1.12.0"); err != nil {
+ if err := c.checkServerVersionGreaterThanOrEqual(version1_12_0); err != nil {
return nil, nil, err
}
if err := opt.Validate(c); err != nil {
// ReadRepoNotifications mark notification threads as read on a specific repo
func (c *Client) ReadRepoNotifications(owner, reponame string, opt MarkNotificationOptions) (*Response, error) {
- if err := c.CheckServerVersionConstraint(">=1.12.0"); err != nil {
+ if err := c.checkServerVersionGreaterThanOrEqual(version1_12_0); err != nil {
return nil, err
}
if err := opt.Validate(c); err != nil {
// CreateOauth2 create an Oauth2 Application and returns a completed Oauth2 object.
func (c *Client) CreateOauth2(opt CreateOauth2Option) (*Oauth2, *Response, error) {
- if err := c.CheckServerVersionConstraint(">=1.12.0"); err != nil {
+ if err := c.checkServerVersionGreaterThanOrEqual(version1_12_0); err != nil {
return nil, nil, err
}
body, err := json.Marshal(&opt)
// 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.CheckServerVersionConstraint(">=1.12.0"); err != nil {
+ if err := c.checkServerVersionGreaterThanOrEqual(version1_12_0); err != nil {
return nil, nil, err
}
body, err := json.Marshal(&opt)
// GetOauth2 a specific Oauth2 Application by ID.
func (c *Client) GetOauth2(oauth2id int64) (*Oauth2, *Response, error) {
- if err := c.CheckServerVersionConstraint(">=1.12.0"); err != nil {
+ if err := c.checkServerVersionGreaterThanOrEqual(version1_12_0); err != nil {
return nil, nil, err
}
oauth2s := &Oauth2{}
// ListOauth2 all of your Oauth2 Applications.
func (c *Client) ListOauth2(opt ListOauth2Option) ([]*Oauth2, *Response, error) {
- if err := c.CheckServerVersionConstraint(">=1.12.0"); err != nil {
+ if err := c.checkServerVersionGreaterThanOrEqual(version1_12_0); err != nil {
return nil, nil, err
}
opt.setDefaults()
// DeleteOauth2 delete an Oauth2 application by ID
func (c *Client) DeleteOauth2(oauth2id int64) (*Response, error) {
- if err := c.CheckServerVersionConstraint(">=1.12.0"); err != nil {
+ 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 fmt.Errorf("title is empty")
}
if len(opt.Base) != 0 {
- if err := c.CheckServerVersionConstraint(">=1.12.0"); err != nil {
+ if err := c.checkServerVersionGreaterThanOrEqual(version1_12_0); err != nil {
return fmt.Errorf("can not change base gitea to old")
}
}
// 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 := c.CheckServerVersionConstraint(">=1.13.0"); err != nil {
+ if err := c.checkServerVersionGreaterThanOrEqual(version1_13_0); err != nil {
r, _, err2 := c.GetRepo(owner, repo)
if err2 != nil {
return nil, nil, err
// ListPullReviews lists all reviews of a pull request
func (c *Client) ListPullReviews(owner, repo string, index int64, opt ListPullReviewsOptions) ([]*PullReview, *Response, error) {
- if err := c.CheckServerVersionConstraint(">=1.12.0"); err != nil {
+ if err := c.checkServerVersionGreaterThanOrEqual(version1_12_0); err != nil {
return nil, nil, err
}
opt.setDefaults()
// GetPullReview gets a specific review of a pull request
func (c *Client) GetPullReview(owner, repo string, index, id int64) (*PullReview, *Response, error) {
- if err := c.CheckServerVersionConstraint(">=1.12.0"); err != nil {
+ if err := c.checkServerVersionGreaterThanOrEqual(version1_12_0); err != nil {
return nil, nil, 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 := c.CheckServerVersionConstraint(">=1.12.0"); err != nil {
+ if err := c.checkServerVersionGreaterThanOrEqual(version1_12_0); err != nil {
return nil, nil, err
}
rcl := make([]*PullReviewComment, 0, 4)
// DeletePullReview delete a specific review from a pull request
func (c *Client) DeletePullReview(owner, repo string, index, id int64) (*Response, error) {
- if err := c.CheckServerVersionConstraint(">=1.12.0"); err != nil {
+ if err := c.checkServerVersionGreaterThanOrEqual(version1_12_0); err != nil {
return nil, 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 := c.CheckServerVersionConstraint(">=1.12.0"); err != nil {
+ if err := c.checkServerVersionGreaterThanOrEqual(version1_12_0); err != nil {
return nil, nil, err
}
if err := opt.Validate(); err != nil {
// 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 := c.CheckServerVersionConstraint(">=1.12.0"); err != nil {
+ if err := c.checkServerVersionGreaterThanOrEqual(version1_12_0); err != nil {
return nil, nil, err
}
if err := opt.Validate(); err != nil {
// GetReleaseByTag get a release of a repository by tag
func (c *Client) GetReleaseByTag(user, repo string, tag string) (*Release, *Response, error) {
- if c.CheckServerVersionConstraint(">=1.13.0") != nil {
+ if c.checkServerVersionGreaterThanOrEqual(version1_13_0) != nil {
return c.fallbackGetReleaseByTag(user, repo, tag)
}
r := new(Release)
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
} else {
link.RawQuery = opt.QueryEncode()
// IsPrivate only works on gitea >= 1.12.0
- if err := c.CheckServerVersionConstraint(">=1.12.0"); err != nil && opt.IsPrivate != nil {
+ 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
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
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() error {
+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.CheckServerVersionConstraint(">=1.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(); err != nil {
+ if err := opt.Validate(c); err != nil {
return nil, nil, err
}
body, err := json.Marshal(&opt)
// CreateOrgRepo creates an organization repository for authenticated user.
func (c *Client) CreateOrgRepo(org string, opt CreateRepoOption) (*Repository, *Response, error) {
- if err := opt.Validate(); err != nil {
+ if err := opt.Validate(c); err != nil {
return nil, nil, err
}
body, err := json.Marshal(&opt)
// DeleteRepoBranch delete a branch in a repository
func (c *Client) DeleteRepoBranch(user, repo, branch string) (bool, *Response, error) {
- if err := c.CheckServerVersionConstraint(">=1.12.0"); err != nil {
+ 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)
// CreateBranch creates a branch for a user's repository
func (c *Client) CreateBranch(owner, repo string, opt CreateBranchOption) (*Branch, *Response, error) {
- if err := c.CheckServerVersionConstraint(">=1.13.0"); err != nil {
+ if err := c.checkServerVersionGreaterThanOrEqual(version1_13_0); err != nil {
return nil, nil, err
}
if err := opt.Validate(); err != nil {
// ListBranchProtections list branch protections for a repo
func (c *Client) ListBranchProtections(owner, repo string, opt ListBranchProtectionsOptions) ([]*BranchProtection, *Response, error) {
- if err := c.CheckServerVersionConstraint(">=1.12.0"); err != nil {
+ if err := c.checkServerVersionGreaterThanOrEqual(version1_12_0); err != nil {
return nil, nil, err
}
bps := make([]*BranchProtection, 0, opt.PageSize)
// GetBranchProtection gets a branch protection
func (c *Client) GetBranchProtection(owner, repo, name string) (*BranchProtection, *Response, error) {
- if err := c.CheckServerVersionConstraint(">=1.12.0"); err != nil {
+ if err := c.checkServerVersionGreaterThanOrEqual(version1_12_0); err != nil {
return nil, nil, err
}
bp := new(BranchProtection)
// CreateBranchProtection creates a branch protection for a repo
func (c *Client) CreateBranchProtection(owner, repo string, opt CreateBranchProtectionOption) (*BranchProtection, *Response, error) {
- if err := c.CheckServerVersionConstraint(">=1.12.0"); err != nil {
+ if err := c.checkServerVersionGreaterThanOrEqual(version1_12_0); err != nil {
return nil, nil, err
}
bp := new(BranchProtection)
// EditBranchProtection edits a branch protection for a repo
func (c *Client) EditBranchProtection(owner, repo, name string, opt EditBranchProtectionOption) (*BranchProtection, *Response, error) {
- if err := c.CheckServerVersionConstraint(">=1.12.0"); err != nil {
+ if err := c.checkServerVersionGreaterThanOrEqual(version1_12_0); err != nil {
return nil, nil, err
}
bp := new(BranchProtection)
// DeleteBranchProtection deletes a branch protection for a repo
func (c *Client) DeleteBranchProtection(owner, repo, name string) (*Response, error) {
- if err := c.CheckServerVersionConstraint(">=1.12.0"); err != nil {
+ 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)
// CommitMeta contains meta information of a commit in terms of API.
type CommitMeta struct {
- URL string `json:"url"`
- SHA string `json:"sha"`
+ 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.
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.CheckServerVersionConstraint(">=1.12.0") != nil {
+ if c.checkServerVersionGreaterThanOrEqual(version1_12_0) != nil {
r, _, err := c.GetRepo(owner, repo)
if err != nil {
return "", err
GitServiceGithub GitServiceType = "github"
// GitServiceGitlab represents a gitlab service
GitServiceGitlab GitServiceType = "gitlab"
+ // GitServiceGitea represents a gitea service
+ GitServiceGitea GitServiceType = "gitea"
// Not supported jet
- // // GitServiceGitea represents a gitea service
- // GitServiceGitea GitServiceType = "gitea"
// // GitServiceGogs represents a gogs service
// GitServiceGogs GitServiceType = "gogs"
)
}
// Validate the MigrateRepoOption struct
-func (opt *MigrateRepoOption) Validate() error {
+func (opt *MigrateRepoOption) Validate(c *Client) error {
// check user options
if len(opt.CloneAddr) == 0 {
return fmt.Errorf("CloneAddr required")
if len(opt.AuthToken) == 0 {
return fmt.Errorf("github require token authentication")
}
+ case GitServiceGitlab, GitServiceGitea:
+ if len(opt.AuthToken) == 0 {
+ return fmt.Errorf("%s require 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)
+ }
}
return nil
}
// 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(); err != nil {
+ if err := opt.Validate(c); err != nil {
return nil, nil, err
}
- if err := c.CheckServerVersionConstraint(">=1.13.0"); err != nil {
+ if err := c.checkServerVersionGreaterThanOrEqual(version1_13_0); err != nil {
if len(opt.AuthToken) != 0 {
// gitea <= 1.12 dont understand AuthToken
opt.AuthUsername = opt.AuthToken
// TransferRepo transfers the ownership of a repository
func (c *Client) TransferRepo(owner, reponame string, opt TransferRepoOption) (*Repository, *Response, error) {
- if err := c.CheckServerVersionConstraint(">=1.12.0"); err != nil {
+ if err := c.checkServerVersionGreaterThanOrEqual(version1_12_0); err != nil {
return nil, nil, err
}
body, err := json.Marshal(&opt)
// GetGlobalUISettings get global ui settings witch are exposed by API
func (c *Client) GetGlobalUISettings() (*GlobalUISettings, *Response, error) {
- if err := c.CheckServerVersionConstraint(">=1.13.0"); err != nil {
+ if err := c.checkServerVersionGreaterThanOrEqual(version1_13_0); err != nil {
return nil, nil, err
}
conf := new(GlobalUISettings)
// GetGlobalRepoSettings get global repository settings witch are exposed by API
func (c *Client) GetGlobalRepoSettings() (*GlobalRepoSettings, *Response, error) {
- if err := c.CheckServerVersionConstraint(">=1.13.0"); err != nil {
+ if err := c.checkServerVersionGreaterThanOrEqual(version1_13_0); err != nil {
return nil, nil, err
}
conf := new(GlobalRepoSettings)
// GetGlobalAPISettings get global api settings witch are exposed by it
func (c *Client) GetGlobalAPISettings() (*GlobalAPISettings, *Response, error) {
- if err := c.CheckServerVersionConstraint(">=1.13.0"); err != nil {
+ if err := c.checkServerVersionGreaterThanOrEqual(version1_13_0); err != nil {
return nil, nil, err
}
conf := new(GlobalAPISettings)
// GetGlobalAttachmentSettings get global repository settings witch are exposed by API
func (c *Client) GetGlobalAttachmentSettings() (*GlobalAttachmentSettings, *Response, error) {
- if err := c.CheckServerVersionConstraint(">=1.13.0"); err != nil {
+ if err := c.checkServerVersionGreaterThanOrEqual(version1_13_0); err != nil {
return nil, nil, err
}
conf := new(GlobalAttachmentSettings)
return nil
}
+// predefined versions only have to be parsed by library once
+var (
+ version1_10_0, _ = version.NewVersion("1.10.0")
+ version1_11_0, _ = version.NewVersion("1.11.0")
+ version1_12_0, _ = version.NewVersion("1.12.0")
+ version1_13_0, _ = version.NewVersion("1.13.0")
+)
+
+// checkServerVersionGreaterThanOrEqual is internally used to speed up things and ignore issues with prerelease
+func (c *Client) checkServerVersionGreaterThanOrEqual(v *version.Version) error {
+ c.versionLock.RLock()
+ if c.serverVersion == nil {
+ c.versionLock.RUnlock()
+ if err := c.loadClientServerVersion(); err != nil {
+ return err
+ }
+ } else {
+ c.versionLock.RUnlock()
+ }
+
+ if !c.serverVersion.GreaterThanOrEqual(v) {
+ return fmt.Errorf("gitea server at %s is older than %s", c.url, v.Original())
+ }
+ return nil
+}
+
// loadClientServerVersion init the serverVersion variable
func (c *Client) loadClientServerVersion() error {
c.versionLock.Lock()
## explicit
code.gitea.io/gitea-vet
code.gitea.io/gitea-vet/checks
-# code.gitea.io/sdk/gitea v0.13.1
+# code.gitea.io/sdk/gitea v0.13.2
## explicit
code.gitea.io/sdk/gitea
# gitea.com/lunny/levelqueue v0.3.0