2024-04-14 21:48:27 +08:00

47 lines
806 B
Go

package handler
import (
"github.com/loveuer/nf"
"nf-repo/internal/interfaces"
"nf-repo/internal/opt"
)
type blob struct {
blobHandler interfaces.BlobHandler
uploadHandler interfaces.UploadHandler
}
var (
b = &blob{}
)
func Root(bh interfaces.BlobHandler, uh interfaces.UploadHandler, mh interfaces.ManifestHandler) nf.HandlerFunc {
b.blobHandler = bh
b.uploadHandler = uh
return func(c *nf.Ctx) error {
if isBlob(c) {
return handleBlobs(c)
}
if isManifest(c) {
return handleManifest(c, mh)
}
if isTags(c) {
return handleTags(c, mh)
}
if isCatalog(c) {
return handleCatalog(c, mh)
}
if opt.ReferrersEnabled && isReferrers(c) {
return handleReferrers(c, mh)
}
c.Set("Docker-Distribution-API-Version", "registry/2.0")
return c.SendStatus(200)
}
}