fix(05): WR-02 delete thumb blob after a failed encode
This commit is contained in:
@@ -89,7 +89,7 @@ func defaultResizeImage(src image.Image, w, h int, mode string) image.Image {
|
||||
|
||||
var resizeImage = defaultResizeImage
|
||||
|
||||
func encodeImage(w io.Writer, img image.Image, ext string) error {
|
||||
func defaultEncodeImage(w io.Writer, img image.Image, ext string) error {
|
||||
format := imaging.JPEG
|
||||
switch strings.ToLower(ext) {
|
||||
case "png":
|
||||
@@ -100,6 +100,8 @@ func encodeImage(w io.Writer, img image.Image, ext string) error {
|
||||
return imaging.Encode(w, img, format)
|
||||
}
|
||||
|
||||
var encodeImage = defaultEncodeImage
|
||||
|
||||
// Thumb returns the public URL of a lazily generated thumbnail. The second
|
||||
// call for the same dimensions hits the existing blob and does not resize.
|
||||
func (f *File) Thumb(ctx context.Context, bucket *blob.Bucket, w, h int, mode string) (string, error) {
|
||||
@@ -164,10 +166,11 @@ func (f *File) Thumb(ctx context.Context, bucket *blob.Bucket, w, h int, mode st
|
||||
}
|
||||
encErr := encodeImage(wr, resized, ext)
|
||||
closeErr = wr.Close()
|
||||
if encErr != nil {
|
||||
return "", encErr
|
||||
}
|
||||
if closeErr != nil {
|
||||
if encErr != nil || closeErr != nil {
|
||||
_ = deleteKey(ctx, bucket, thumbKey)
|
||||
if encErr != nil {
|
||||
return "", encErr
|
||||
}
|
||||
return "", closeErr
|
||||
}
|
||||
return publicURL(thumbKey), nil
|
||||
|
||||
Reference in New Issue
Block a user