Fix github download on migration (#14703)
* Fix github download on migration * Use Context for Client Co-authored-by: zeripath <art27@cantab.net>
This commit is contained in:
		
							parent
							
								
									ae7e6cd474
								
							
						
					
					
						commit
						ec06eb112c
					
				
					 1 changed files with 19 additions and 4 deletions
				
			
		|  | @ -6,11 +6,9 @@ | |||
| package migrations | ||||
| 
 | ||||
| import ( | ||||
| 	"bytes" | ||||
| 	"context" | ||||
| 	"fmt" | ||||
| 	"io" | ||||
| 	"io/ioutil" | ||||
| 	"net/http" | ||||
| 	"net/url" | ||||
| 	"strings" | ||||
|  | @ -292,6 +290,7 @@ func (g *GithubDownloaderV3) convertGithubRelease(rel *github.RepositoryRelease) | |||
| 	} | ||||
| 
 | ||||
| 	for _, asset := range rel.Assets { | ||||
| 		var assetID = *asset.ID // Don't optimize this, for closure we need a local variable
 | ||||
| 		r.Assets = append(r.Assets, &base.ReleaseAsset{ | ||||
| 			ID:            *asset.ID, | ||||
| 			Name:          *asset.Name, | ||||
|  | @ -302,7 +301,7 @@ func (g *GithubDownloaderV3) convertGithubRelease(rel *github.RepositoryRelease) | |||
| 			Updated:       asset.UpdatedAt.Time, | ||||
| 			DownloadFunc: func() (io.ReadCloser, error) { | ||||
| 				g.sleep() | ||||
| 				asset, redir, err := g.client.Repositories.DownloadReleaseAsset(g.ctx, g.repoOwner, g.repoName, *asset.ID, http.DefaultClient) | ||||
| 				asset, redir, err := g.client.Repositories.DownloadReleaseAsset(g.ctx, g.repoOwner, g.repoName, assetID, nil) | ||||
| 				if err != nil { | ||||
| 					return nil, err | ||||
| 				} | ||||
|  | @ -311,7 +310,23 @@ func (g *GithubDownloaderV3) convertGithubRelease(rel *github.RepositoryRelease) | |||
| 					log.Error("g.client.RateLimits: %s", err) | ||||
| 				} | ||||
| 				if asset == nil { | ||||
| 					return ioutil.NopCloser(bytes.NewBufferString(redir)), nil | ||||
| 					if redir != "" { | ||||
| 						g.sleep() | ||||
| 						req, err := http.NewRequestWithContext(g.ctx, "GET", redir, nil) | ||||
| 						if err != nil { | ||||
| 							return nil, err | ||||
| 						} | ||||
| 						resp, err := http.DefaultClient.Do(req) | ||||
| 						err1 := g.RefreshRate() | ||||
| 						if err1 != nil { | ||||
| 							log.Error("g.client.RateLimits: %s", err1) | ||||
| 						} | ||||
| 						if err != nil { | ||||
| 							return nil, err | ||||
| 						} | ||||
| 						return resp.Body, nil | ||||
| 					} | ||||
| 					return nil, fmt.Errorf("No release asset found for %d", assetID) | ||||
| 				} | ||||
| 				return asset, nil | ||||
| 			}, | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue