in gcs-fetcher/pkg/common/common.go [47:72]
func ParseBucketObject(uri string) (bucket, object string, generation int64, err error) {
switch {
case strings.HasPrefix(uri, "https://storage.googleapis.com/") || strings.HasPrefix(uri, "http://storage.googleapis.com/"):
// uri looks like "https://storage.googleapis.com/staging.my-project.appspot.com/3aa080e5e72a610b06033dbfee288483d87cfd61"
if parts := strings.Split(uri, "/"); len(parts) >= 5 {
bucket := parts[3]
object, generation, err := splitObjectAndGeneration(strings.Join(parts[4:], "/"))
if err != nil {
return "", "", 0, fmt.Errorf("cannot parse object/generation from uri %q", uri)
}
return bucket, object, generation, nil
}
case strings.HasPrefix(uri, "gs://"):
// uri looks like "gs://my-bucket/manifest-20171004T175409.json"
if parts := strings.Split(uri, "/"); len(parts) >= 4 {
bucket := parts[2]
object, generation, err := splitObjectAndGeneration(strings.Join(parts[3:], "/"))
if err != nil {
return "", "", 0, fmt.Errorf("cannot parse object/generation from uri %q", uri)
}
return bucket, object, generation, nil
}
}
return "", "", 0, fmt.Errorf("cannot parse bucket/object from uri %q", uri)
}