56 lines
1.0 KiB
Go
56 lines
1.0 KiB
Go
|
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",
|
||
|
}
|