49 lines
1.0 KiB
Go
49 lines
1.0 KiB
Go
package middleware
|
|
|
|
import (
|
|
"encoding/json"
|
|
"net/http"
|
|
|
|
"github.com/charmbracelet/log"
|
|
)
|
|
|
|
func WriteJsonOrError[K any](logger *log.Logger, object K, w http.ResponseWriter) {
|
|
jsonObject, err := json.Marshal(object)
|
|
if err != nil {
|
|
logger.Warn("could not marshal json object", "err", err)
|
|
w.WriteHeader(http.StatusBadRequest)
|
|
return
|
|
}
|
|
|
|
w.Write(jsonObject)
|
|
w.WriteHeader(http.StatusOK)
|
|
}
|
|
|
|
type ErrorObject struct {
|
|
Error string `json:"error"`
|
|
}
|
|
|
|
func writeError(logger *log.Logger, error string, w http.ResponseWriter, code int) {
|
|
e := ErrorObject{
|
|
error,
|
|
}
|
|
|
|
jsonObject, err := json.Marshal(e)
|
|
if err != nil {
|
|
logger.Warn("could not marshal json object", "err", err)
|
|
w.WriteHeader(http.StatusBadRequest)
|
|
return
|
|
}
|
|
|
|
w.Write(jsonObject)
|
|
w.WriteHeader(code)
|
|
}
|
|
|
|
func WriteErrorBadRequest(logger *log.Logger, error string, w http.ResponseWriter) {
|
|
writeError(logger, error, w, http.StatusBadRequest)
|
|
}
|
|
|
|
func WriteErrorInternal(logger *log.Logger, error string, w http.ResponseWriter) {
|
|
writeError(logger, error, w, http.StatusInternalServerError)
|
|
}
|