1
0
Fork 0
mirror of https://github.com/imjasonh/kontain.me synced 2026-07-13 19:28:12 +00:00
kontain.me/pkg/serve/error.go
2019-05-10 10:05:27 -04:00

43 lines
800 B
Go

package serve
import (
"encoding/json"
"errors"
"net/http"
)
var (
ErrNotFound = errors.New("repository or commit not found")
ErrInvalid = errors.New("requested manifest is invalid")
)
func Error(w http.ResponseWriter, err error) {
code := "INTERNAL_ERROR"
httpCode := http.StatusInternalServerError
if err == ErrNotFound {
code = "MANIFEST_UNKNOWN"
httpCode = http.StatusNotFound
} else if err == ErrInvalid {
code = "NAME_INVALID"
httpCode = http.StatusBadRequest
}
http.Error(w, "", httpCode)
json.NewEncoder(w).Encode(&resp{
Errors: []e{{
Code: code,
Message: err.Error(),
}},
})
}
type resp struct {
Errors []e `json:"errors"`
}
type e struct {
Code string `json:"code"`
Message string `json:"message"`
Reason string `json:"reason,omitempty"`
}