58 lines
1.0 KiB
Go
58 lines
1.0 KiB
Go
package handler
|
|
|
|
import (
|
|
"github.com/loveuer/nf"
|
|
"strings"
|
|
)
|
|
|
|
func isBlob(c *nf.Ctx) bool {
|
|
elem := strings.Split(c.Path(), "/")
|
|
elem = elem[1:]
|
|
if elem[len(elem)-1] == "" {
|
|
elem = elem[:len(elem)-1]
|
|
}
|
|
if len(elem) < 3 {
|
|
return false
|
|
}
|
|
return elem[len(elem)-2] == "blobs" || (elem[len(elem)-3] == "blobs" &&
|
|
elem[len(elem)-2] == "uploads")
|
|
}
|
|
|
|
func isManifest(c *nf.Ctx) bool {
|
|
elems := strings.Split(c.Path(), "/")
|
|
elems = elems[1:]
|
|
if len(elems) < 4 {
|
|
return false
|
|
}
|
|
return elems[len(elems)-2] == "manifests"
|
|
}
|
|
|
|
func isTags(c *nf.Ctx) bool {
|
|
elems := strings.Split(c.Path(), "/")
|
|
elems = elems[1:]
|
|
if len(elems) < 4 {
|
|
return false
|
|
}
|
|
return elems[len(elems)-2] == "tags"
|
|
}
|
|
|
|
func isCatalog(c *nf.Ctx) bool {
|
|
elems := strings.Split(c.Path(), "/")
|
|
elems = elems[1:]
|
|
if len(elems) < 2 {
|
|
return false
|
|
}
|
|
|
|
return elems[len(elems)-1] == "_catalog"
|
|
}
|
|
|
|
func isReferrers(c *nf.Ctx) bool {
|
|
elems := strings.Split(c.Path(), "/")
|
|
elems = elems[1:]
|
|
if len(elems) < 4 {
|
|
return false
|
|
}
|
|
|
|
return elems[len(elems)-2] == "referrers"
|
|
}
|