32 lines
526 B
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)
|
|
}
|