chore: custom error

This commit is contained in:
2026-03-02 22:38:28 +01:00
parent 6c1387c1cd
commit 2491d21963
19 changed files with 363 additions and 60 deletions
+43
View File
@@ -0,0 +1,43 @@
package restimage
import (
"io"
"log/slog"
"net/http"
"git.schreifuchs.ch/schreifuchs/schreifuchs.ch/internal/components/images"
"git.schreifuchs.ch/schreifuchs/schreifuchs.ch/internal/handlers/restutil"
)
func (h *Handler) getImage(w http.ResponseWriter, r *http.Request) {
uid := r.PathValue("uid")
var err error
options := images.Options{}
options.Height, err = restutil.IntParam(r, "h")
if err != nil {
restutil.SendErr(w, err)
return
}
options.Width, err = restutil.IntParam(r, "w")
if err != nil {
restutil.SendErr(w, err)
return
}
options.Quality, err = restutil.IntParam(r, "q")
if err != nil {
restutil.SendErr(w, err)
return
}
img, mime, err := h.img.GetImage(r.Context(), uid, options)
if err != nil {
slog.Error("error wile serving image", "err", err, "uid", uid)
w.WriteHeader(http.StatusInternalServerError)
return
}
w.Header().Add("Content-Type", mime)
io.Copy(w, img)
}
+26
View File
@@ -0,0 +1,26 @@
package restimage
import (
"context"
"io"
"net/http"
"git.schreifuchs.ch/schreifuchs/schreifuchs.ch/internal/components/images"
)
type Handler struct {
img imageService
}
func New(mux *http.ServeMux, srv imageService) *Handler {
h := &Handler{
img: srv,
}
mux.HandleFunc("GET /images/{uid}", h.getImage)
return h
}
type imageService interface {
GetImage(ctx context.Context, uid string, options images.Options) (img io.Reader, mimeType string, err error)
}