code: func (s *MigrationService) MigrationArchiveURL(ctx context.Context, org string, id int64) (url string, err error) {
  	u := fmt.Sprintf("orgs/%v/migrations/%v/archive", org, id)
  
  	req, err := s.client.NewRequest("GET", u, nil)
  	if err != nil {
  		return "", err
  	}
  
  	// TODO: remove custom Accept header when this API fully launches.
  	req.Header.Set("Accept", mediaTypeMigrationsPreview)
  
  	s.client.clientMu.Lock()
  	defer s.client.clientMu.Unlock()
  
  	// Disable the redirect mechanism because AWS fails if the GitHub auth token is provided.
  	var loc string
  	saveRedirect := s.client.client.CheckRedirect
  	s.client.client.CheckRedirect = func(req *http.Request, via []*http.Request) error {
  		loc = req.URL.String()
  		return errors.New("disable redirect")
  	}
  	defer func() { s.client.client.CheckRedirect = saveRedirect }()
  
  	_, err = s.client.Do(ctx, req, nil) // expect error from disable redirect
  	if err == nil {
  		return "", errors.New("expected redirect, none provided")
  	}
  	if !strings.Contains(err.Error(), "disable redirect") {
  		return "", err
  	}
  	return loc, nil
  }
docs: // MigrationArchiveURL fetches a migration archive URL.
  // id is the migration ID.
  //
  // GitHub API docs: https://developer.github.com/v3/migration/migrations/#download-a-migration-archive