code: func (s *MigrationService) UserMigrationArchiveURL(ctx context.Context, id int64) (string, error) {
  	url := fmt.Sprintf("user/migrations/%v/archive", id)
  
  	req, err := s.client.NewRequest("GET", url, nil)
  	if err != nil {
  		return "", err
  	}
  
  	// TODO: remove custom Accept header when this API fully launches.
  	req.Header.Set("Accept", mediaTypeMigrationsPreview)
  
  	m := &UserMigration{}
  
  	var loc string
  	originalRedirect := s.client.client.CheckRedirect
  	s.client.client.CheckRedirect = func(req *http.Request, via []*http.Request) error {
  		loc = req.URL.String()
  		return http.ErrUseLastResponse
  	}
  	defer func() {
  		s.client.client.CheckRedirect = originalRedirect
  	}()
  	resp, err := s.client.Do(ctx, req, m)
  	if err == nil {
  		return "", errors.New("expected redirect, none provided")
  	}
  	loc = resp.Header.Get("Location")
  	return loc, nil
  }
docs: // UserMigrationArchiveURL gets the URL for a specific migration archive.
  // id is the migration ID.
  //
  // GitHub API docs: https://developer.github.com/v3/migrations/users/#download-a-user-migration-archive