@@ -180,24 +180,31 @@ func (c *Forgejo) Refresh(ctx context.Context, user *model.User) (bool, error) {
180180
181181// Teams is supported by the Forgejo driver.
182182func (c * Forgejo ) Teams (ctx context.Context , u * model.User , p * model.ListOptions ) ([]* model.Team , error ) {
183+ // we paginate internally (https://github.com/woodpecker-ci/woodpecker/issues/5667)
184+ if p .Page != 1 {
185+ return nil , nil
186+ }
187+
183188 client , err := c .newClientToken (ctx , u .AccessToken )
184189 if err != nil {
185190 return nil , err
186191 }
187192
188- orgs , _ , err := client .ListMyOrgs (
189- forgejo.ListOrgsOptions {
190- ListOptions : forgejo.ListOptions {
191- Page : p .Page ,
192- PageSize : c .perPage (ctx , p .PerPage ),
193+ return shared_utils .Paginate (func (page int ) ([]* model.Team , error ) {
194+ orgs , _ , err := client .ListMyOrgs (
195+ forgejo.ListOrgsOptions {
196+ ListOptions : forgejo.ListOptions {
197+ Page : page ,
198+ PageSize : c .perPage (ctx ),
199+ },
193200 },
194- },
195- )
196- teams := make ([] * model. Team , 0 , len ( orgs ))
197- for _ , org := range orgs {
198- teams = append ( teams , toTeam ( org , c . url ))
199- }
200- return teams , err
201+ )
202+ teams := make ([] * model. Team , 0 , len ( orgs ) )
203+ for _ , org := range orgs {
204+ teams = append ( teams , toTeam ( org , c . url ))
205+ }
206+ return teams , err
207+ }, - 1 )
201208}
202209
203210// 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
234241// Repos returns a list of all repositories for the Forgejo account, including
235242// organization repositories.
236243func (c * Forgejo ) Repos (ctx context.Context , u * model.User , p * model.ListOptions ) ([]* model.Repo , error ) {
244+ // we paginate internally (https://github.com/woodpecker-ci/woodpecker/issues/5667)
245+ if p .Page != 1 {
246+ return nil , nil
247+ }
248+
237249 client , err := c .newClientToken (ctx , u .AccessToken )
238250 if err != nil {
239251 return nil , err
240252 }
241253
242- repos , _ , err := client .ListMyRepos (
243- forgejo.ListReposOptions {
244- ListOptions : forgejo.ListOptions {
245- Page : p .Page ,
246- PageSize : c .perPage (ctx , p .PerPage ),
254+ repos , err := shared_utils .Paginate (func (page int ) ([]* forgejo.Repository , error ) {
255+ repos , _ , err := client .ListMyRepos (
256+ forgejo.ListReposOptions {
257+ ListOptions : forgejo.ListOptions {
258+ Page : page ,
259+ PageSize : c .perPage (ctx ),
260+ },
247261 },
248- },
249- )
250- if err != nil {
251- return nil , err
252- }
262+ )
263+ return repos , err
264+ }, - 1 )
253265
254266 result := make ([]* model.Repo , 0 , len (repos ))
255267 for _ , repo := range repos {
@@ -401,7 +413,7 @@ func (c *Forgejo) Deactivate(ctx context.Context, u *model.User, r *model.Repo,
401413 hooks , _ , err := client .ListRepoHooks (r .Owner , r .Name , forgejo.ListHooksOptions {
402414 ListOptions : forgejo.ListOptions {
403415 Page : page ,
404- PageSize : c .perPage (ctx , c . pageSize ),
416+ PageSize : c .perPage (ctx ),
405417 },
406418 })
407419 return hooks , err
@@ -674,7 +686,7 @@ func (c *Forgejo) getTagCommitSHA(ctx context.Context, repo *model.Repo, tagName
674686 return tag .Commit .SHA , nil
675687}
676688
677- func (c * Forgejo ) perPage (ctx context.Context , customPerPage int ) int {
689+ func (c * Forgejo ) perPage (ctx context.Context ) int {
678690 if c .pageSize == 0 {
679691 client , err := c .newClientToken (ctx , "" )
680692 if err != nil {
@@ -687,11 +699,5 @@ func (c *Forgejo) perPage(ctx context.Context, customPerPage int) int {
687699 }
688700 c .pageSize = api .MaxResponseItems
689701 }
690-
691- pageSize := customPerPage
692- if pageSize == 0 || pageSize > c .pageSize {
693- pageSize = c .pageSize
694- }
695-
696- return pageSize
702+ return c .pageSize
697703}
0 commit comments