35 lines
1.4 KiB
Go
35 lines
1.4 KiB
Go
package handler
|
|
|
|
import (
|
|
"context"
|
|
"io"
|
|
|
|
"gitea.loveuer.com/loveuer/cluster/internal/rerr"
|
|
"gitea.loveuer.com/loveuer/cluster/internal/model"
|
|
)
|
|
|
|
// BlobHandler handles blob operations
|
|
type BlobHandler interface {
|
|
Get(ctx context.Context, repo string, h model.Hash) (io.ReadCloser, error)
|
|
Put(ctx context.Context, repo string, h model.Hash, rc io.ReadCloser) error
|
|
Stat(ctx context.Context, repo string, h model.Hash) (int64, error)
|
|
Delete(ctx context.Context, repo string, h model.Hash) error
|
|
}
|
|
|
|
// UploadHandler handles upload operations
|
|
type UploadHandler interface {
|
|
UploadId() string
|
|
Write(ctx context.Context, sessionID string, r io.Reader, start, end int) (int, *rerr.RepositoryError)
|
|
Done(ctx context.Context, blobHandler BlobHandler, sessionID string, r io.Reader, contentLength int, repo string, h model.Hash) *rerr.RepositoryError
|
|
}
|
|
|
|
// ManifestHandler handles manifest operations
|
|
type ManifestHandler interface {
|
|
Get(ctx context.Context, repo, tag string) (io.ReadCloser, string, *rerr.RepositoryError)
|
|
Put(ctx context.Context, repo, tag, digest string, mf *model.RepoSimpleManifest) error
|
|
Delete(ctx context.Context, repo, tag string) error
|
|
Tags(ctx context.Context, repo string, n, last int, prefix string) (*model.Tag, *rerr.RepositoryError)
|
|
Catalog(ctx context.Context, n, last int, prefix string) (*model.Catalog, *rerr.RepositoryError)
|
|
Referrers(ctx context.Context, repo, target string) (*model.IndexManifest, *rerr.RepositoryError)
|
|
}
|