package rerr import ( "github.com/loveuer/nf" "net/http" ) type RepositoryError struct { Status int Code string Message string } func Error(c *nf.Ctx, err *RepositoryError) error { return c.Status(err.Status).JSON(nf.Map{ "errors": []nf.Map{ { "code": err.Code, "message": err.Message, }, }, }) } func ErrInternal(err error) *RepositoryError { return &RepositoryError{ Status: http.StatusInternalServerError, Code: "INTERNAL_SERVER_ERROR", Message: err.Error(), } } var ErrBlobUnknown = &RepositoryError{ Status: http.StatusNotFound, Code: "BLOB_UNKNOWN", Message: "Unknown blob", } var ErrUnsupported = &RepositoryError{ Status: http.StatusMethodNotAllowed, Code: "UNSUPPORTED", Message: "Unsupported operation", } var ErrDigestMismatch = &RepositoryError{ Status: http.StatusBadRequest, Code: "DIGEST_INVALID", Message: "digest does not match contents", } var ErrDigestInvalid = &RepositoryError{ Status: http.StatusBadRequest, Code: "NAME_INVALID", Message: "invalid digest", }