in repositories/gcs.go [65:98]
func listDirectoriesInReleaseBucket(prefix string) ([]string, bool, error) {
baseURL := "https://www.googleapis.com/storage/v1/b/bazel/o?delimiter=/"
if prefix != "" {
baseURL = fmt.Sprintf("%s&prefix=%s", baseURL, prefix)
}
var prefixes []string
var isRelease = false
var nextPageToken = ""
for {
var url = baseURL
if nextPageToken != "" {
url = fmt.Sprintf("%s&pageToken=%s", baseURL, nextPageToken)
}
content, _, err := httputil.ReadRemoteFile(url, "")
if err != nil {
return nil, false, fmt.Errorf("could not list GCS objects at %s: %v", url, err)
}
var response GcsListResponse
if err := json.Unmarshal(content, &response); err != nil {
return nil, false, fmt.Errorf("could not parse GCS index JSON: %v", err)
}
prefixes = append(prefixes, response.Prefixes...)
isRelease = isRelease || len(response.Items) > 0
if response.NextPageToken == "" {
break
}
nextPageToken = response.NextPageToken
}
return prefixes, isRelease, nil
}