func()

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
}