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) } }