@@ -272,71 +272,65 @@ func convertGithubReactions(reactions *github.Reactions) *base.Reactions {
272
272
}
273
273
274
274
// GetIssues returns issues according start and limit
275
- func (g * GithubDownloaderV3 ) GetIssues (start , limit int ) ([]* base.Issue , error ) {
276
- var perPage = 100
275
+ func (g * GithubDownloaderV3 ) GetIssues (page , perPage int ) ([]* base.Issue , bool , error ) {
277
276
opt := & github.IssueListByRepoOptions {
278
277
Sort : "created" ,
279
278
Direction : "asc" ,
280
279
State : "all" ,
281
280
ListOptions : github.ListOptions {
282
281
PerPage : perPage ,
282
+ Page : page ,
283
283
},
284
284
}
285
- var allIssues = make ([]* base.Issue , 0 , limit )
286
- for {
287
- issues , resp , err := g .client .Issues .ListByRepo (g .ctx , g .repoOwner , g .repoName , opt )
288
- if err != nil {
289
- return nil , fmt .Errorf ("error while listing repos: %v" , err )
290
- }
291
- for _ , issue := range issues {
292
- if issue .IsPullRequest () {
293
- continue
294
- }
295
- var body string
296
- if issue .Body != nil {
297
- body = * issue .Body
298
- }
299
- var milestone string
300
- if issue .Milestone != nil {
301
- milestone = * issue .Milestone .Title
302
- }
303
- var labels = make ([]* base.Label , 0 , len (issue .Labels ))
304
- for _ , l := range issue .Labels {
305
- labels = append (labels , convertGithubLabel (& l ))
306
- }
307
- var reactions * base.Reactions
308
- if issue .Reactions != nil {
309
- reactions = convertGithubReactions (issue .Reactions )
310
- }
311
285
312
- var email string
313
- if issue .User .Email != nil {
314
- email = * issue .User .Email
315
- }
316
- allIssues = append (allIssues , & base.Issue {
317
- Title : * issue .Title ,
318
- Number : int64 (* issue .Number ),
319
- PosterName : * issue .User .Login ,
320
- PosterEmail : email ,
321
- Content : body ,
322
- Milestone : milestone ,
323
- State : * issue .State ,
324
- Created : * issue .CreatedAt ,
325
- Labels : labels ,
326
- Reactions : reactions ,
327
- Closed : issue .ClosedAt ,
328
- IsLocked : * issue .Locked ,
329
- })
330
- if len (allIssues ) >= limit {
331
- return allIssues , nil
332
- }
286
+ var allIssues = make ([]* base.Issue , 0 , perPage )
287
+
288
+ issues , _ , err := g .client .Issues .ListByRepo (g .ctx , g .repoOwner , g .repoName , opt )
289
+ if err != nil {
290
+ return nil , false , fmt .Errorf ("error while listing repos: %v" , err )
291
+ }
292
+ for _ , issue := range issues {
293
+ if issue .IsPullRequest () {
294
+ continue
333
295
}
334
- if resp .NextPage == 0 {
335
- break
296
+ var body string
297
+ if issue .Body != nil {
298
+ body = * issue .Body
336
299
}
337
- opt .Page = resp .NextPage
300
+ var milestone string
301
+ if issue .Milestone != nil {
302
+ milestone = * issue .Milestone .Title
303
+ }
304
+ var labels = make ([]* base.Label , 0 , len (issue .Labels ))
305
+ for _ , l := range issue .Labels {
306
+ labels = append (labels , convertGithubLabel (& l ))
307
+ }
308
+ var reactions * base.Reactions
309
+ if issue .Reactions != nil {
310
+ reactions = convertGithubReactions (issue .Reactions )
311
+ }
312
+
313
+ var email string
314
+ if issue .User .Email != nil {
315
+ email = * issue .User .Email
316
+ }
317
+ allIssues = append (allIssues , & base.Issue {
318
+ Title : * issue .Title ,
319
+ Number : int64 (* issue .Number ),
320
+ PosterName : * issue .User .Login ,
321
+ PosterEmail : email ,
322
+ Content : body ,
323
+ Milestone : milestone ,
324
+ State : * issue .State ,
325
+ Created : * issue .CreatedAt ,
326
+ Labels : labels ,
327
+ Reactions : reactions ,
328
+ Closed : issue .ClosedAt ,
329
+ IsLocked : * issue .Locked ,
330
+ })
338
331
}
339
- return allIssues , nil
332
+
333
+ return allIssues , len (issues ) < perPage , nil
340
334
}
341
335
342
336
// GetComments returns comments according issueNumber
@@ -379,97 +373,91 @@ func (g *GithubDownloaderV3) GetComments(issueNumber int64) ([]*base.Comment, er
379
373
return allComments , nil
380
374
}
381
375
382
- // GetPullRequests returns pull requests according start and limit
383
- func (g * GithubDownloaderV3 ) GetPullRequests (start , limit int ) ([]* base.PullRequest , error ) {
376
+ // GetPullRequests returns pull requests according page and perPage
377
+ func (g * GithubDownloaderV3 ) GetPullRequests (page , perPage int ) ([]* base.PullRequest , error ) {
384
378
opt := & github.PullRequestListOptions {
385
379
Sort : "created" ,
386
380
Direction : "asc" ,
387
381
State : "all" ,
388
382
ListOptions : github.ListOptions {
389
- PerPage : 100 ,
383
+ PerPage : perPage ,
384
+ Page : page ,
390
385
},
391
386
}
392
- var allPRs = make ([]* base.PullRequest , 0 , 100 )
393
- for {
394
- prs , resp , err := g .client .PullRequests .List (g .ctx , g .repoOwner , g .repoName , opt )
395
- if err != nil {
396
- return nil , fmt .Errorf ("error while listing repos: %v" , err )
397
- }
398
- for _ , pr := range prs {
399
- var body string
400
- if pr .Body != nil {
401
- body = * pr .Body
402
- }
403
- var milestone string
404
- if pr .Milestone != nil {
405
- milestone = * pr .Milestone .Title
406
- }
407
- var labels = make ([]* base.Label , 0 , len (pr .Labels ))
408
- for _ , l := range pr .Labels {
409
- labels = append (labels , convertGithubLabel (l ))
410
- }
387
+ var allPRs = make ([]* base.PullRequest , 0 , perPage )
411
388
412
- // FIXME: This API missing reactions, we may need another extra request to get reactions
389
+ prs , _ , err := g .client .PullRequests .List (g .ctx , g .repoOwner , g .repoName , opt )
390
+ if err != nil {
391
+ return nil , fmt .Errorf ("error while listing repos: %v" , err )
392
+ }
393
+ for _ , pr := range prs {
394
+ var body string
395
+ if pr .Body != nil {
396
+ body = * pr .Body
397
+ }
398
+ var milestone string
399
+ if pr .Milestone != nil {
400
+ milestone = * pr .Milestone .Title
401
+ }
402
+ var labels = make ([]* base.Label , 0 , len (pr .Labels ))
403
+ for _ , l := range pr .Labels {
404
+ labels = append (labels , convertGithubLabel (l ))
405
+ }
413
406
414
- var email string
415
- if pr .User .Email != nil {
416
- email = * pr .User .Email
417
- }
418
- var merged bool
419
- // pr.Merged is not valid, so use MergedAt to test if it's merged
420
- if pr .MergedAt != nil {
421
- merged = true
422
- }
407
+ // FIXME: This API missing reactions, we may need another extra request to get reactions
423
408
424
- var headRepoName string
425
- var cloneURL string
426
- if pr .Head .Repo != nil {
427
- headRepoName = * pr .Head .Repo .Name
428
- cloneURL = * pr .Head .Repo .CloneURL
429
- }
430
- var mergeCommitSHA string
431
- if pr .MergeCommitSHA != nil {
432
- mergeCommitSHA = * pr .MergeCommitSHA
433
- }
409
+ var email string
410
+ if pr .User .Email != nil {
411
+ email = * pr .User .Email
412
+ }
413
+ var merged bool
414
+ // pr.Merged is not valid, so use MergedAt to test if it's merged
415
+ if pr .MergedAt != nil {
416
+ merged = true
417
+ }
434
418
435
- allPRs = append (allPRs , & base.PullRequest {
436
- Title : * pr .Title ,
437
- Number : int64 (* pr .Number ),
438
- PosterName : * pr .User .Login ,
439
- PosterEmail : email ,
440
- Content : body ,
441
- Milestone : milestone ,
442
- State : * pr .State ,
443
- Created : * pr .CreatedAt ,
444
- Closed : pr .ClosedAt ,
445
- Labels : labels ,
446
- Merged : merged ,
447
- MergeCommitSHA : mergeCommitSHA ,
448
- MergedTime : pr .MergedAt ,
449
- IsLocked : pr .ActiveLockReason != nil ,
450
- Head : base.PullRequestBranch {
451
- Ref : * pr .Head .Ref ,
452
- SHA : * pr .Head .SHA ,
453
- RepoName : headRepoName ,
454
- OwnerName : * pr .Head .User .Login ,
455
- CloneURL : cloneURL ,
456
- },
457
- Base : base.PullRequestBranch {
458
- Ref : * pr .Base .Ref ,
459
- SHA : * pr .Base .SHA ,
460
- RepoName : * pr .Base .Repo .Name ,
461
- OwnerName : * pr .Base .User .Login ,
462
- },
463
- PatchURL : * pr .PatchURL ,
464
- })
465
- if len (allPRs ) >= limit {
466
- return allPRs , nil
467
- }
419
+ var headRepoName string
420
+ var cloneURL string
421
+ if pr .Head .Repo != nil {
422
+ headRepoName = * pr .Head .Repo .Name
423
+ cloneURL = * pr .Head .Repo .CloneURL
468
424
}
469
- if resp .NextPage == 0 {
470
- break
425
+ var mergeCommitSHA string
426
+ if pr .MergeCommitSHA != nil {
427
+ mergeCommitSHA = * pr .MergeCommitSHA
471
428
}
472
- opt .Page = resp .NextPage
429
+
430
+ allPRs = append (allPRs , & base.PullRequest {
431
+ Title : * pr .Title ,
432
+ Number : int64 (* pr .Number ),
433
+ PosterName : * pr .User .Login ,
434
+ PosterEmail : email ,
435
+ Content : body ,
436
+ Milestone : milestone ,
437
+ State : * pr .State ,
438
+ Created : * pr .CreatedAt ,
439
+ Closed : pr .ClosedAt ,
440
+ Labels : labels ,
441
+ Merged : merged ,
442
+ MergeCommitSHA : mergeCommitSHA ,
443
+ MergedTime : pr .MergedAt ,
444
+ IsLocked : pr .ActiveLockReason != nil ,
445
+ Head : base.PullRequestBranch {
446
+ Ref : * pr .Head .Ref ,
447
+ SHA : * pr .Head .SHA ,
448
+ RepoName : headRepoName ,
449
+ OwnerName : * pr .Head .User .Login ,
450
+ CloneURL : cloneURL ,
451
+ },
452
+ Base : base.PullRequestBranch {
453
+ Ref : * pr .Base .Ref ,
454
+ SHA : * pr .Base .SHA ,
455
+ RepoName : * pr .Base .Repo .Name ,
456
+ OwnerName : * pr .Base .User .Login ,
457
+ },
458
+ PatchURL : * pr .PatchURL ,
459
+ })
473
460
}
461
+
474
462
return allPRs , nil
475
463
}
0 commit comments