orchard/internal/responder/error.go

32 lines
526 B
Go

package responder
import (
"errors"
storepkg "github.com/cirruslabs/orchard/internal/controller/store"
"github.com/gin-gonic/gin"
"net/http"
)
type ErrorResponder struct {
err error
Responder
}
func Error(err error) Responder {
return &ErrorResponder{
err: err,
}
}
func (responder *ErrorResponder) Respond(c *gin.Context) {
var code = http.StatusInternalServerError
if errors.Is(responder.err, storepkg.ErrNotFound) {
code = http.StatusNotFound
} else {
_ = c.Error(responder.err)
}
c.Status(code)
}