in server/pkg/cloud/storage/google.go [48:80]
func (b *gcsBackend) GetObject(ctx context.Context, path string) (*Object, error) {
// Check parameters
if b.client == nil {
return nil, errors.New("gcs: client is nil")
}
// Query gcs bucket
objectHandle := b.client.Bucket(b.bucket).Object(pathutil.Join(b.prefix, path))
if objectHandle == nil {
return nil, errors.New("gcs: unable to retrieve object reference")
}
// Retrieve object attributes
attrs, err := objectHandle.Attrs(ctx)
if err != nil {
return nil, fmt.Errorf("gcs: unable to retrieve object attribute: %w", err)
}
// Prepare content reader
rc, err := objectHandle.NewReader(ctx)
if err != nil {
return nil, fmt.Errorf("gcs: unable to initialie object reader: %w", err)
}
// Assemble response
var object Object
object.Path = path
object.Content = rc
object.LastModified = attrs.Updated
// No error
return &object, nil
}