@@ -90,28 +90,37 @@ func NewGithubDownloaderV3(ctx context.Context, baseURL, userName, password, tok
90
90
maxPerPage : 100 ,
91
91
}
92
92
93
- client := & http.Client {
94
- Transport : & http.Transport {
95
- Proxy : func (req * http.Request ) (* url.URL , error ) {
96
- req .SetBasicAuth (userName , password )
97
- return proxy .Proxy ()(req )
98
- },
99
- },
100
- }
101
-
102
93
if token != "" {
103
94
tokens := strings .Split (token , "," )
104
95
for _ , token := range tokens {
105
96
token = strings .TrimSpace (token )
106
-
107
97
ts := oauth2 .StaticTokenSource (
108
98
& oauth2.Token {AccessToken : token },
109
99
)
110
- client = oauth2 .NewClient (downloader .ctx , ts )
100
+ var client = & http.Client {
101
+ Transport : & oauth2.Transport {
102
+ Base : & http.Transport {
103
+ TLSClientConfig : & tls.Config {InsecureSkipVerify : setting .Migrations .SkipTLSVerify },
104
+ Proxy : func (req * http.Request ) (* url.URL , error ) {
105
+ return proxy .Proxy ()(req )
106
+ },
107
+ },
108
+ Source : oauth2 .ReuseTokenSource (nil , ts ),
109
+ },
110
+ }
111
111
112
112
downloader .addClient (client , baseURL )
113
113
}
114
114
} else {
115
+ var client = & http.Client {
116
+ Transport : & http.Transport {
117
+ TLSClientConfig : & tls.Config {InsecureSkipVerify : setting .Migrations .SkipTLSVerify },
118
+ Proxy : func (req * http.Request ) (* url.URL , error ) {
119
+ req .SetBasicAuth (userName , password )
120
+ return proxy .Proxy ()(req )
121
+ },
122
+ },
123
+ }
115
124
downloader .addClient (client , baseURL )
116
125
}
117
126
return & downloader
@@ -131,7 +140,7 @@ func (g *GithubDownloaderV3) SetContext(ctx context.Context) {
131
140
g .ctx = ctx
132
141
}
133
142
134
- func (g * GithubDownloaderV3 ) sleep () {
143
+ func (g * GithubDownloaderV3 ) waitAndPickClient () {
135
144
var recentIdx int
136
145
var maxRemaining int
137
146
for i := 0 ; i < len (g .clients ); i ++ {
@@ -184,7 +193,7 @@ func (g *GithubDownloaderV3) setRate(rate *github.Rate) {
184
193
185
194
// GetRepoInfo returns a repository information
186
195
func (g * GithubDownloaderV3 ) GetRepoInfo () (* base.Repository , error ) {
187
- g .sleep ()
196
+ g .waitAndPickClient ()
188
197
gr , resp , err := g .getClient ().Repositories .Get (g .ctx , g .repoOwner , g .repoName )
189
198
if err != nil {
190
199
return nil , err
@@ -205,7 +214,7 @@ func (g *GithubDownloaderV3) GetRepoInfo() (*base.Repository, error) {
205
214
206
215
// GetTopics return github topics
207
216
func (g * GithubDownloaderV3 ) GetTopics () ([]string , error ) {
208
- g .sleep ()
217
+ g .waitAndPickClient ()
209
218
r , resp , err := g .getClient ().Repositories .Get (g .ctx , g .repoOwner , g .repoName )
210
219
if err != nil {
211
220
return nil , err
@@ -219,7 +228,7 @@ func (g *GithubDownloaderV3) GetMilestones() ([]*base.Milestone, error) {
219
228
var perPage = g .maxPerPage
220
229
var milestones = make ([]* base.Milestone , 0 , perPage )
221
230
for i := 1 ; ; i ++ {
222
- g .sleep ()
231
+ g .waitAndPickClient ()
223
232
ms , resp , err := g .getClient ().Issues .ListMilestones (g .ctx , g .repoOwner , g .repoName ,
224
233
& github.MilestoneListOptions {
225
234
State : "all" ,
@@ -267,7 +276,7 @@ func (g *GithubDownloaderV3) GetLabels() ([]*base.Label, error) {
267
276
var perPage = g .maxPerPage
268
277
var labels = make ([]* base.Label , 0 , perPage )
269
278
for i := 1 ; ; i ++ {
270
- g .sleep ()
279
+ g .waitAndPickClient ()
271
280
ls , resp , err := g .getClient ().Issues .ListLabels (g .ctx , g .repoOwner , g .repoName ,
272
281
& github.ListOptions {
273
282
Page : i ,
@@ -324,7 +333,7 @@ func (g *GithubDownloaderV3) convertGithubRelease(rel *github.RepositoryRelease)
324
333
Created : asset .CreatedAt .Time ,
325
334
Updated : asset .UpdatedAt .Time ,
326
335
DownloadFunc : func () (io.ReadCloser , error ) {
327
- g .sleep ()
336
+ g .waitAndPickClient ()
328
337
asset , redirectURL , err := g .getClient ().Repositories .DownloadReleaseAsset (g .ctx , g .repoOwner , g .repoName , assetID , nil )
329
338
if err != nil {
330
339
return nil , err
@@ -334,7 +343,7 @@ func (g *GithubDownloaderV3) convertGithubRelease(rel *github.RepositoryRelease)
334
343
}
335
344
if asset == nil {
336
345
if redirectURL != "" {
337
- g .sleep ()
346
+ g .waitAndPickClient ()
338
347
req , err := http .NewRequestWithContext (g .ctx , "GET" , redirectURL , nil )
339
348
if err != nil {
340
349
return nil , err
@@ -363,7 +372,7 @@ func (g *GithubDownloaderV3) GetReleases() ([]*base.Release, error) {
363
372
var perPage = g .maxPerPage
364
373
var releases = make ([]* base.Release , 0 , perPage )
365
374
for i := 1 ; ; i ++ {
366
- g .sleep ()
375
+ g .waitAndPickClient ()
367
376
ls , resp , err := g .getClient ().Repositories .ListReleases (g .ctx , g .repoOwner , g .repoName ,
368
377
& github.ListOptions {
369
378
Page : i ,
@@ -400,7 +409,7 @@ func (g *GithubDownloaderV3) GetIssues(page, perPage int) ([]*base.Issue, bool,
400
409
}
401
410
402
411
var allIssues = make ([]* base.Issue , 0 , perPage )
403
- g .sleep ()
412
+ g .waitAndPickClient ()
404
413
issues , resp , err := g .getClient ().Issues .ListByRepo (g .ctx , g .repoOwner , g .repoName , opt )
405
414
if err != nil {
406
415
return nil , false , fmt .Errorf ("error while listing repos: %v" , err )
@@ -420,7 +429,7 @@ func (g *GithubDownloaderV3) GetIssues(page, perPage int) ([]*base.Issue, bool,
420
429
// get reactions
421
430
var reactions []* base.Reaction
422
431
for i := 1 ; ; i ++ {
423
- g .sleep ()
432
+ g .waitAndPickClient ()
424
433
res , resp , err := g .getClient ().Reactions .ListIssueReactions (g .ctx , g .repoOwner , g .repoName , issue .GetNumber (), & github.ListOptions {
425
434
Page : i ,
426
435
PerPage : perPage ,
@@ -498,7 +507,7 @@ func (g *GithubDownloaderV3) getComments(issueContext base.IssueContext) ([]*bas
498
507
},
499
508
}
500
509
for {
501
- g .sleep ()
510
+ g .waitAndPickClient ()
502
511
comments , resp , err := g .getClient ().Issues .ListComments (g .ctx , g .repoOwner , g .repoName , int (issueContext .ForeignID ()), opt )
503
512
if err != nil {
504
513
return nil , fmt .Errorf ("error while listing repos: %v" , err )
@@ -508,7 +517,7 @@ func (g *GithubDownloaderV3) getComments(issueContext base.IssueContext) ([]*bas
508
517
// get reactions
509
518
var reactions []* base.Reaction
510
519
for i := 1 ; ; i ++ {
511
- g .sleep ()
520
+ g .waitAndPickClient ()
512
521
res , resp , err := g .getClient ().Reactions .ListIssueCommentReactions (g .ctx , g .repoOwner , g .repoName , comment .GetID (), & github.ListOptions {
513
522
Page : i ,
514
523
PerPage : g .maxPerPage ,
@@ -567,7 +576,7 @@ func (g *GithubDownloaderV3) GetAllComments(page, perPage int) ([]*base.Comment,
567
576
},
568
577
}
569
578
570
- g .sleep ()
579
+ g .waitAndPickClient ()
571
580
comments , resp , err := g .getClient ().Issues .ListComments (g .ctx , g .repoOwner , g .repoName , 0 , opt )
572
581
if err != nil {
573
582
return nil , false , fmt .Errorf ("error while listing repos: %v" , err )
@@ -580,7 +589,7 @@ func (g *GithubDownloaderV3) GetAllComments(page, perPage int) ([]*base.Comment,
580
589
// get reactions
581
590
var reactions []* base.Reaction
582
591
for i := 1 ; ; i ++ {
583
- g .sleep ()
592
+ g .waitAndPickClient ()
584
593
res , resp , err := g .getClient ().Reactions .ListIssueCommentReactions (g .ctx , g .repoOwner , g .repoName , comment .GetID (), & github.ListOptions {
585
594
Page : i ,
586
595
PerPage : g .maxPerPage ,
@@ -632,7 +641,7 @@ func (g *GithubDownloaderV3) GetPullRequests(page, perPage int) ([]*base.PullReq
632
641
},
633
642
}
634
643
var allPRs = make ([]* base.PullRequest , 0 , perPage )
635
- g .sleep ()
644
+ g .waitAndPickClient ()
636
645
prs , resp , err := g .getClient ().PullRequests .List (g .ctx , g .repoOwner , g .repoName , opt )
637
646
if err != nil {
638
647
return nil , false , fmt .Errorf ("error while listing repos: %v" , err )
@@ -648,7 +657,7 @@ func (g *GithubDownloaderV3) GetPullRequests(page, perPage int) ([]*base.PullReq
648
657
// get reactions
649
658
var reactions []* base.Reaction
650
659
for i := 1 ; ; i ++ {
651
- g .sleep ()
660
+ g .waitAndPickClient ()
652
661
res , resp , err := g .getClient ().Reactions .ListIssueReactions (g .ctx , g .repoOwner , g .repoName , pr .GetNumber (), & github.ListOptions {
653
662
Page : i ,
654
663
PerPage : perPage ,
@@ -669,6 +678,9 @@ func (g *GithubDownloaderV3) GetPullRequests(page, perPage int) ([]*base.PullReq
669
678
}
670
679
}
671
680
681
+ // download patch and saved as tmp file
682
+ g .waitAndPickClient ()
683
+
672
684
allPRs = append (allPRs , & base.PullRequest {
673
685
Title : pr .GetTitle (),
674
686
Number : int64 (pr .GetNumber ()),
@@ -726,7 +738,7 @@ func (g *GithubDownloaderV3) convertGithubReviewComments(cs []*github.PullReques
726
738
// get reactions
727
739
var reactions []* base.Reaction
728
740
for i := 1 ; ; i ++ {
729
- g .sleep ()
741
+ g .waitAndPickClient ()
730
742
res , resp , err := g .getClient ().Reactions .ListPullRequestCommentReactions (g .ctx , g .repoOwner , g .repoName , c .GetID (), & github.ListOptions {
731
743
Page : i ,
732
744
PerPage : g .maxPerPage ,
@@ -771,7 +783,7 @@ func (g *GithubDownloaderV3) GetReviews(context base.IssueContext) ([]*base.Revi
771
783
PerPage : g .maxPerPage ,
772
784
}
773
785
for {
774
- g .sleep ()
786
+ g .waitAndPickClient ()
775
787
reviews , resp , err := g .getClient ().PullRequests .ListReviews (g .ctx , g .repoOwner , g .repoName , int (context .ForeignID ()), opt )
776
788
if err != nil {
777
789
return nil , fmt .Errorf ("error while listing repos: %v" , err )
@@ -785,7 +797,7 @@ func (g *GithubDownloaderV3) GetReviews(context base.IssueContext) ([]*base.Revi
785
797
PerPage : g .maxPerPage ,
786
798
}
787
799
for {
788
- g .sleep ()
800
+ g .waitAndPickClient ()
789
801
reviewComments , resp , err := g .getClient ().PullRequests .ListReviewComments (g .ctx , g .repoOwner , g .repoName , int (context .ForeignID ()), review .GetID (), opt2 )
790
802
if err != nil {
791
803
return nil , fmt .Errorf ("error while listing repos: %v" , err )
0 commit comments