code: func (collection StepCollectionModel) GetDownloadLocations(id, version string) ([]DownloadLocationModel, error) {
  	step, stepFound, versionFound := collection.GetStep(id, version)
  	if !stepFound {
  		return []DownloadLocationModel{}, fmt.Errorf("Collection (%s) doesn't contains step with id: %s", collection.SteplibSource, id)
  	}
  	if !versionFound {
  		return []DownloadLocationModel{}, fmt.Errorf("Collection (%s) doesn't contains step (%s) with version: %s", collection.SteplibSource, id, version)
  	}
  
  	if step.Source == nil {
  		return []DownloadLocationModel{}, errors.New("Missing Source property")
  	}
  
  	locations := []DownloadLocationModel{}
  	for _, downloadLocation := range collection.DownloadLocations {
  		switch downloadLocation.Type {
  		case "zip":
  			url := downloadLocation.Src + id + "/" + version + "/step.zip"
  			location := DownloadLocationModel{
  				Type: downloadLocation.Type,
  				Src:  url,
  			}
  			locations = append(locations, location)
  		case "git":
  			location := DownloadLocationModel{
  				Type: downloadLocation.Type,
  				Src:  step.Source.Git,
  			}
  			locations = append(locations, location)
  		default:
  			return []DownloadLocationModel{}, fmt.Errorf("Invalid download location (%#v) for step (%#v)", downloadLocation, id)
  		}
  	}
  	if len(locations) < 1 {
  		return []DownloadLocationModel{}, fmt.Errorf("No download location found for step (%#v)", id)
  	}
  	return locations, nil
  }
docs: // GetDownloadLocations ...