package api import ( "net/http" "strconv" ) func (a *API) HandleThumbnail(w http.ResponseWriter, r *http.Request) { idStr := r.PathValue("id") id, err := strconv.ParseInt(idStr, 10, 64) if err != nil { writeError(w, http.StatusBadRequest, "invalid image id") return } img, err := a.DB.GetImageByID(r.Context(), id) if err != nil { writeError(w, http.StatusNotFound, "image not found") return } if img.ThumbnailPath == nil || *img.ThumbnailPath == "" { writeError(w, http.StatusNotFound, "thumbnail not available") return } f, err := a.Storage.Open(*img.ThumbnailPath) if err != nil { writeError(w, http.StatusNotFound, "thumbnail not found on disk") return } defer f.Close() w.Header().Set("Content-Type", "image/jpeg") http.ServeContent(w, r, "thumb.jpg", img.CreatedAt, f) }