mirror of
https://github.com/gabehf/Koito.git
synced 2026-03-16 19:05:54 -07:00
chore: expand debug logging + embeddable version
This commit is contained in:
parent
edbd7d506e
commit
e92733823d
25 changed files with 563 additions and 303 deletions
|
|
@ -25,51 +25,59 @@ func ReplaceImageHandler(store db.DB) http.HandlerFunc {
|
|||
ctx := r.Context()
|
||||
l := logger.FromContext(ctx)
|
||||
|
||||
l.Debug().Msg("ReplaceImageHandler: Received request to replace image")
|
||||
|
||||
artistIdStr := r.FormValue("artist_id")
|
||||
artistId, _ := strconv.Atoi(artistIdStr)
|
||||
albumIdStr := r.FormValue("album_id")
|
||||
albumId, _ := strconv.Atoi(albumIdStr)
|
||||
|
||||
if artistId != 0 && albumId != 0 {
|
||||
l.Debug().Msg("ReplaceImageHandler: Both artist_id and album_id are set, rejecting request")
|
||||
utils.WriteError(w, "Only one of artist_id and album_id can be set", http.StatusBadRequest)
|
||||
return
|
||||
} else if artistId == 0 && albumId == 0 {
|
||||
l.Debug().Msg("ReplaceImageHandler: Neither artist_id nor album_id are set, rejecting request")
|
||||
utils.WriteError(w, "One of artist_id and album_id must be set", http.StatusBadRequest)
|
||||
return
|
||||
}
|
||||
|
||||
var oldImage *uuid.UUID
|
||||
if artistId != 0 {
|
||||
l.Debug().Msgf("ReplaceImageHandler: Fetching artist with ID %d", artistId)
|
||||
a, err := store.GetArtist(ctx, db.GetArtistOpts{
|
||||
ID: int32(artistId),
|
||||
})
|
||||
if err != nil {
|
||||
l.Err(err).Msg("ReplaceImageHandler: Artist with specified ID could not be found")
|
||||
utils.WriteError(w, "Artist with specified id could not be found", http.StatusBadRequest)
|
||||
return
|
||||
}
|
||||
oldImage = a.Image
|
||||
} else if albumId != 0 {
|
||||
l.Debug().Msgf("ReplaceImageHandler: Fetching album with ID %d", albumId)
|
||||
a, err := store.GetAlbum(ctx, db.GetAlbumOpts{
|
||||
ID: int32(albumId),
|
||||
})
|
||||
if err != nil {
|
||||
l.Err(err).Msg("ReplaceImageHandler: Album with specified ID could not be found")
|
||||
utils.WriteError(w, "Album with specified id could not be found", http.StatusBadRequest)
|
||||
return
|
||||
}
|
||||
oldImage = a.Image
|
||||
}
|
||||
|
||||
l.Debug().Msgf("Getting image from request...")
|
||||
l.Debug().Msg("ReplaceImageHandler: Getting image from request")
|
||||
|
||||
var id uuid.UUID
|
||||
var err error
|
||||
|
||||
fileUrl := r.FormValue("image_url")
|
||||
if fileUrl != "" {
|
||||
l.Debug().Msg("Image identified as remote file")
|
||||
l.Debug().Msg("ReplaceImageHandler: Image identified as remote file")
|
||||
err = catalog.ValidateImageURL(fileUrl)
|
||||
if err != nil {
|
||||
l.Debug().AnErr("error", err).Msg("Invalid image")
|
||||
l.Debug().AnErr("error", err).Msg("ReplaceImageHandler: Invalid image URL")
|
||||
utils.WriteError(w, "url is invalid or not an image file", http.StatusBadRequest)
|
||||
return
|
||||
}
|
||||
|
|
@ -80,14 +88,18 @@ func ReplaceImageHandler(store db.DB) http.HandlerFunc {
|
|||
} else {
|
||||
dlSize = catalog.ImageSizeLarge
|
||||
}
|
||||
l.Debug().Msg("Downloading album image from source...")
|
||||
l.Debug().Msg("ReplaceImageHandler: Downloading album image from source")
|
||||
err = catalog.DownloadAndCacheImage(ctx, id, fileUrl, dlSize)
|
||||
if err != nil {
|
||||
l.Err(err).Msg("Failed to cache image")
|
||||
l.Err(err).Msg("ReplaceImageHandler: Failed to cache image")
|
||||
utils.WriteError(w, "Failed to cache image", http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
} else {
|
||||
l.Debug().Msg("ReplaceImageHandler: Image identified as uploaded file")
|
||||
file, _, err := r.FormFile("image")
|
||||
if err != nil {
|
||||
l.Err(err).Msg("ReplaceImageHandler: Invalid file upload")
|
||||
utils.WriteError(w, "Invalid file", http.StatusBadRequest)
|
||||
return
|
||||
}
|
||||
|
|
@ -95,22 +107,25 @@ func ReplaceImageHandler(store db.DB) http.HandlerFunc {
|
|||
|
||||
buf := make([]byte, 512)
|
||||
if _, err := file.Read(buf); err != nil {
|
||||
l.Err(err).Msg("ReplaceImageHandler: Could not read file")
|
||||
utils.WriteError(w, "Could not read file", http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
|
||||
contentType := http.DetectContentType(buf)
|
||||
if !strings.HasPrefix(contentType, "image/") {
|
||||
l.Debug().Msg("ReplaceImageHandler: Uploaded file is not an image")
|
||||
utils.WriteError(w, "Only image uploads are allowed", http.StatusBadRequest)
|
||||
return
|
||||
}
|
||||
|
||||
if _, err := file.Seek(0, io.SeekStart); err != nil {
|
||||
l.Err(err).Msg("ReplaceImageHandler: Could not seek file")
|
||||
utils.WriteError(w, "Could not seek file", http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
|
||||
l.Debug().Msgf("Saving image to cache...")
|
||||
l.Debug().Msg("ReplaceImageHandler: Saving image to cache")
|
||||
|
||||
id = uuid.New()
|
||||
|
||||
|
|
@ -123,12 +138,13 @@ func ReplaceImageHandler(store db.DB) http.HandlerFunc {
|
|||
|
||||
err = catalog.CompressAndSaveImage(ctx, id.String(), dlSize, file)
|
||||
if err != nil {
|
||||
l.Err(err).Msg("ReplaceImageHandler: Could not save file")
|
||||
utils.WriteError(w, "Could not save file", http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
l.Debug().Msgf("Updating database...")
|
||||
l.Debug().Msg("ReplaceImageHandler: Updating database")
|
||||
|
||||
var imgsrc string
|
||||
if fileUrl != "" {
|
||||
|
|
@ -138,39 +154,42 @@ func ReplaceImageHandler(store db.DB) http.HandlerFunc {
|
|||
}
|
||||
|
||||
if artistId != 0 {
|
||||
l.Debug().Msgf("ReplaceImageHandler: Updating artist with ID %d", artistId)
|
||||
err := store.UpdateArtist(ctx, db.UpdateArtistOpts{
|
||||
ID: int32(artistId),
|
||||
Image: id,
|
||||
ImageSrc: imgsrc,
|
||||
})
|
||||
if err != nil {
|
||||
l.Err(err).Msg("Artist image could not be updated")
|
||||
l.Err(err).Msg("ReplaceImageHandler: Artist image could not be updated")
|
||||
utils.WriteError(w, "Artist image could not be updated", http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
} else if albumId != 0 {
|
||||
l.Debug().Msgf("ReplaceImageHandler: Updating album with ID %d", albumId)
|
||||
err := store.UpdateAlbum(ctx, db.UpdateAlbumOpts{
|
||||
ID: int32(albumId),
|
||||
Image: id,
|
||||
ImageSrc: imgsrc,
|
||||
})
|
||||
if err != nil {
|
||||
l.Err(err).Msg("Album image could not be updated")
|
||||
l.Err(err).Msg("ReplaceImageHandler: Album image could not be updated")
|
||||
utils.WriteError(w, "Album image could not be updated", http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
if oldImage != nil {
|
||||
l.Debug().Msg("Cleaning up old image file...")
|
||||
l.Debug().Msg("ReplaceImageHandler: Cleaning up old image file")
|
||||
err = catalog.DeleteImage(*oldImage)
|
||||
if err != nil {
|
||||
l.Err(err).Msg("Failed to delete old image file")
|
||||
l.Err(err).Msg("ReplaceImageHandler: Failed to delete old image file")
|
||||
utils.WriteError(w, "Could not delete old image file", http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
l.Debug().Msg("ReplaceImageHandler: Successfully replaced image")
|
||||
utils.WriteJSON(w, http.StatusOK, ReplaceImageResponse{
|
||||
Success: true,
|
||||
Image: id.String(),
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue