Documentation
¶
Index ¶
- Variables
- func NewHandler(m release.Manager, signer Signer) http.Handler
- type Bucket
- type DownloadResponse
- type Manager
- func (m *Manager) Create(ctx context.Context, p release.Package) error
- func (m *Manager) Delete(ctx context.Context, pkg string, ver release.Version) error
- func (m *Manager) DeletePackage(ctx context.Context, pkg string) error
- func (m *Manager) Get(ctx context.Context, pkg string, ver release.Version, ...) (release.Bundle, error)
- func (m *Manager) GetPackage(ctx context.Context, pkg string) (release.Package, error)
- func (m *Manager) List(ctx context.Context, pkg string, filters map[string]string) (iterator.Iterator[release.Bundle], error)
- func (m *Manager) ListPackages(ctx context.Context, filters map[string]string) (iterator.Iterator[release.Package], error)
- func (m *Manager) SignedDownloadURL(ctx context.Context, pkg string, version release.Version) (string, error)
- func (m *Manager) UpdatePackageMetadata(ctx context.Context, pkg string, metadata map[string]string) error
- func (m *Manager) Upload(ctx context.Context, bundle release.Bundle, r release.ProgressReader) error
- type Object
- type ObjectReader
- type Option
- type Signer
Constants ¶
This section is empty.
Variables ¶
var ErrReleaseExists = errors.New("release version already exists; delete it first to re-publish")
ErrReleaseExists is returned by Upload when the version is already published. Published versions are immutable; delete the release first to re-publish it.
Functions ¶
Types ¶
type Bucket ¶
type Bucket interface {
Object(name string) Object
SignedURL(object string, opts *storage.SignedURLOptions) (string, error)
}
Bucket abstracts the operations needed on a GCS bucket so that implementations can be swapped for testing.
func NewBucket ¶
func NewBucket(b *storage.BucketHandle) Bucket
NewBucket wraps a *storage.BucketHandle as a Bucket.
type DownloadResponse ¶
DownloadResponse is the JSON payload for the download endpoint.
type Manager ¶
type Manager struct {
// contains filtered or unexported fields
}
Manager decorates a release.Manager, storing binary data in GCS while delegating metadata operations to the inner manager.
func NewManager ¶
NewManager returns a Manager that stores binary data in bucket and delegates metadata to inner.
func (*Manager) Delete ¶
Delete removes metadata via the inner manager and then deletes the GCS object. A missing metadata document does not stop the object delete: a publish that dies between the blob commit and the metadata write orphans an object whose presence blocks re-publishing the version, and Delete is the only cleanup path.
func (*Manager) DeletePackage ¶
DeletePackage delegates to the inner manager.
func (*Manager) Get ¶
func (m *Manager) Get(ctx context.Context, pkg string, ver release.Version, out release.ProgressWriter) (release.Bundle, error)
Get fetches bundle metadata from the inner manager and optionally streams binary data from GCS, verifying the SHA256 checksum.
func (*Manager) GetPackage ¶
GetPackage delegates to the inner manager.
func (*Manager) List ¶
func (m *Manager) List(ctx context.Context, pkg string, filters map[string]string) (iterator.Iterator[release.Bundle], error)
List delegates to the inner manager.
func (*Manager) ListPackages ¶
func (m *Manager) ListPackages(ctx context.Context, filters map[string]string) (iterator.Iterator[release.Package], error)
ListPackages delegates to the inner manager.
func (*Manager) SignedDownloadURL ¶
func (m *Manager) SignedDownloadURL(ctx context.Context, pkg string, version release.Version) (string, error)
SignedDownloadURL returns a short-lived signed URL for the given package version.
func (*Manager) UpdatePackageMetadata ¶
func (m *Manager) UpdatePackageMetadata(ctx context.Context, pkg string, metadata map[string]string) error
UpdatePackageMetadata delegates to the inner manager.
func (*Manager) Upload ¶
func (m *Manager) Upload(ctx context.Context, bundle release.Bundle, r release.ProgressReader) error
Upload writes binary data to GCS and metadata to the inner manager. Published versions are immutable: re-uploading an existing version fails with ErrReleaseExists before any data is transferred, and the create-only GCS writer guarantees that even a concurrent publish can never replace an already-published artifact.
type Object ¶
type Object interface {
// NewCreateWriter returns a writer that creates the object.
// Finalising the write fails when the object already exists,
// leaving the existing object untouched.
NewCreateWriter(ctx context.Context) io.WriteCloser
NewReader(ctx context.Context) (ObjectReader, error)
Delete(ctx context.Context) error
}
Object abstracts the operations needed on a GCS object.
type ObjectReader ¶
type ObjectReader interface {
io.ReadCloser
Size() int64
}
ObjectReader extends io.ReadCloser with a Size method, which corresponds to storage.Reader.Attrs.Size.
type Option ¶
type Option func(*Manager)
Option configures the Manager.
func WithPrefix ¶
WithPrefix sets a key prefix for GCS objects.
func WithSignedURLOptions ¶
func WithSignedURLOptions(opts *storage.SignedURLOptions) Option
WithSignedURLOptions sets options applied when generating signed URLs.