mirror of
https://github.com/woodpecker-ci/woodpecker.git
synced 2025-12-26 17:24:30 +00:00
Revert to forge internal implementation of pagination for Repos() and Teams() for gitea/forgejo (#5679)
This commit is contained in:
@@ -180,24 +180,31 @@ func (c *Forgejo) Refresh(ctx context.Context, user *model.User) (bool, error) {
|
||||
|
||||
// Teams is supported by the Forgejo driver.
|
||||
func (c *Forgejo) Teams(ctx context.Context, u *model.User, p *model.ListOptions) ([]*model.Team, error) {
|
||||
// we paginate internally (https://github.com/woodpecker-ci/woodpecker/issues/5667)
|
||||
if p.Page != 1 {
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
client, err := c.newClientToken(ctx, u.AccessToken)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
orgs, _, err := client.ListMyOrgs(
|
||||
forgejo.ListOrgsOptions{
|
||||
ListOptions: forgejo.ListOptions{
|
||||
Page: p.Page,
|
||||
PageSize: c.perPage(ctx, p.PerPage),
|
||||
return shared_utils.Paginate(func(page int) ([]*model.Team, error) {
|
||||
orgs, _, err := client.ListMyOrgs(
|
||||
forgejo.ListOrgsOptions{
|
||||
ListOptions: forgejo.ListOptions{
|
||||
Page: page,
|
||||
PageSize: c.perPage(ctx),
|
||||
},
|
||||
},
|
||||
},
|
||||
)
|
||||
teams := make([]*model.Team, 0, len(orgs))
|
||||
for _, org := range orgs {
|
||||
teams = append(teams, toTeam(org, c.url))
|
||||
}
|
||||
return teams, err
|
||||
)
|
||||
teams := make([]*model.Team, 0, len(orgs))
|
||||
for _, org := range orgs {
|
||||
teams = append(teams, toTeam(org, c.url))
|
||||
}
|
||||
return teams, err
|
||||
}, -1)
|
||||
}
|
||||
|
||||
// TeamPerm is not supported by the Forgejo driver.
|
||||
@@ -234,22 +241,27 @@ func (c *Forgejo) Repo(ctx context.Context, u *model.User, remoteID model.ForgeR
|
||||
// Repos returns a list of all repositories for the Forgejo account, including
|
||||
// organization repositories.
|
||||
func (c *Forgejo) Repos(ctx context.Context, u *model.User, p *model.ListOptions) ([]*model.Repo, error) {
|
||||
// we paginate internally (https://github.com/woodpecker-ci/woodpecker/issues/5667)
|
||||
if p.Page != 1 {
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
client, err := c.newClientToken(ctx, u.AccessToken)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
repos, _, err := client.ListMyRepos(
|
||||
forgejo.ListReposOptions{
|
||||
ListOptions: forgejo.ListOptions{
|
||||
Page: p.Page,
|
||||
PageSize: c.perPage(ctx, p.PerPage),
|
||||
repos, err := shared_utils.Paginate(func(page int) ([]*forgejo.Repository, error) {
|
||||
repos, _, err := client.ListMyRepos(
|
||||
forgejo.ListReposOptions{
|
||||
ListOptions: forgejo.ListOptions{
|
||||
Page: page,
|
||||
PageSize: c.perPage(ctx),
|
||||
},
|
||||
},
|
||||
},
|
||||
)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
)
|
||||
return repos, err
|
||||
}, -1)
|
||||
|
||||
result := make([]*model.Repo, 0, len(repos))
|
||||
for _, repo := range repos {
|
||||
@@ -401,7 +413,7 @@ func (c *Forgejo) Deactivate(ctx context.Context, u *model.User, r *model.Repo,
|
||||
hooks, _, err := client.ListRepoHooks(r.Owner, r.Name, forgejo.ListHooksOptions{
|
||||
ListOptions: forgejo.ListOptions{
|
||||
Page: page,
|
||||
PageSize: c.perPage(ctx, c.pageSize),
|
||||
PageSize: c.perPage(ctx),
|
||||
},
|
||||
})
|
||||
return hooks, err
|
||||
@@ -674,7 +686,7 @@ func (c *Forgejo) getTagCommitSHA(ctx context.Context, repo *model.Repo, tagName
|
||||
return tag.Commit.SHA, nil
|
||||
}
|
||||
|
||||
func (c *Forgejo) perPage(ctx context.Context, customPerPage int) int {
|
||||
func (c *Forgejo) perPage(ctx context.Context) int {
|
||||
if c.pageSize == 0 {
|
||||
client, err := c.newClientToken(ctx, "")
|
||||
if err != nil {
|
||||
@@ -687,11 +699,5 @@ func (c *Forgejo) perPage(ctx context.Context, customPerPage int) int {
|
||||
}
|
||||
c.pageSize = api.MaxResponseItems
|
||||
}
|
||||
|
||||
pageSize := customPerPage
|
||||
if pageSize == 0 || pageSize > c.pageSize {
|
||||
pageSize = c.pageSize
|
||||
}
|
||||
|
||||
return pageSize
|
||||
return c.pageSize
|
||||
}
|
||||
|
||||
@@ -182,24 +182,31 @@ func (c *Gitea) Refresh(ctx context.Context, user *model.User) (bool, error) {
|
||||
|
||||
// Teams is supported by the Gitea driver.
|
||||
func (c *Gitea) Teams(ctx context.Context, u *model.User, p *model.ListOptions) ([]*model.Team, error) {
|
||||
// we paginate internally (https://github.com/woodpecker-ci/woodpecker/issues/5667)
|
||||
if p.Page != 1 {
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
client, err := c.newClientToken(ctx, u.AccessToken)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
orgs, _, err := client.ListMyOrgs(
|
||||
gitea.ListOrgsOptions{
|
||||
ListOptions: gitea.ListOptions{
|
||||
Page: p.Page,
|
||||
PageSize: c.perPage(ctx, p.PerPage),
|
||||
return shared_utils.Paginate(func(page int) ([]*model.Team, error) {
|
||||
orgs, _, err := client.ListMyOrgs(
|
||||
gitea.ListOrgsOptions{
|
||||
ListOptions: gitea.ListOptions{
|
||||
Page: page,
|
||||
PageSize: c.perPage(ctx),
|
||||
},
|
||||
},
|
||||
},
|
||||
)
|
||||
teams := make([]*model.Team, 0, len(orgs))
|
||||
for _, org := range orgs {
|
||||
teams = append(teams, toTeam(org, c.url))
|
||||
}
|
||||
return teams, err
|
||||
)
|
||||
teams := make([]*model.Team, 0, len(orgs))
|
||||
for _, org := range orgs {
|
||||
teams = append(teams, toTeam(org, c.url))
|
||||
}
|
||||
return teams, err
|
||||
}, -1)
|
||||
}
|
||||
|
||||
// TeamPerm is not supported by the Gitea driver.
|
||||
@@ -236,22 +243,27 @@ func (c *Gitea) Repo(ctx context.Context, u *model.User, remoteID model.ForgeRem
|
||||
// Repos returns a list of all repositories for the Gitea account, including
|
||||
// organization repositories.
|
||||
func (c *Gitea) Repos(ctx context.Context, u *model.User, p *model.ListOptions) ([]*model.Repo, error) {
|
||||
// we paginate internally (https://github.com/woodpecker-ci/woodpecker/issues/5667)
|
||||
if p.Page != 1 {
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
client, err := c.newClientToken(ctx, u.AccessToken)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
repos, _, err := client.ListMyRepos(
|
||||
gitea.ListReposOptions{
|
||||
ListOptions: gitea.ListOptions{
|
||||
Page: p.Page,
|
||||
PageSize: c.perPage(ctx, p.PerPage),
|
||||
repos, err := shared_utils.Paginate(func(page int) ([]*gitea.Repository, error) {
|
||||
repos, _, err := client.ListMyRepos(
|
||||
gitea.ListReposOptions{
|
||||
ListOptions: gitea.ListOptions{
|
||||
Page: page,
|
||||
PageSize: c.perPage(ctx),
|
||||
},
|
||||
},
|
||||
},
|
||||
)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
)
|
||||
return repos, err
|
||||
}, -1)
|
||||
|
||||
result := make([]*model.Repo, 0, len(repos))
|
||||
for _, repo := range repos {
|
||||
@@ -403,7 +415,7 @@ func (c *Gitea) Deactivate(ctx context.Context, u *model.User, r *model.Repo, li
|
||||
hooks, _, err := client.ListRepoHooks(r.Owner, r.Name, gitea.ListHooksOptions{
|
||||
ListOptions: gitea.ListOptions{
|
||||
Page: page,
|
||||
PageSize: c.perPage(ctx, c.pageSize),
|
||||
PageSize: c.perPage(ctx),
|
||||
},
|
||||
})
|
||||
return hooks, err
|
||||
@@ -681,7 +693,7 @@ func (c *Gitea) getTagCommitSHA(ctx context.Context, repo *model.Repo, tagName s
|
||||
return tag.Commit.SHA, nil
|
||||
}
|
||||
|
||||
func (c *Gitea) perPage(ctx context.Context, customPerPage int) int {
|
||||
func (c *Gitea) perPage(ctx context.Context) int {
|
||||
if c.pageSize == 0 {
|
||||
client, err := c.newClientToken(ctx, "")
|
||||
if err != nil {
|
||||
@@ -694,11 +706,5 @@ func (c *Gitea) perPage(ctx context.Context, customPerPage int) int {
|
||||
}
|
||||
c.pageSize = api.MaxResponseItems
|
||||
}
|
||||
|
||||
pageSize := customPerPage
|
||||
if pageSize == 0 || pageSize > c.pageSize {
|
||||
pageSize = c.pageSize
|
||||
}
|
||||
|
||||
return pageSize
|
||||
return c.pageSize
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user