return etag
This commit is contained in:
parent
d1542b274e
commit
bc6621154b
6 changed files with 34 additions and 12 deletions
|
|
@ -362,7 +362,7 @@ func (co *controller) getMerchImage(c *gin.Context) {
|
|||
log.WithError(err).Error("Merch | Failed to get merch image")
|
||||
return
|
||||
}
|
||||
c.JSON(http.StatusOK, ImageLink{Link: link.String()})
|
||||
c.JSON(http.StatusOK, link)
|
||||
}
|
||||
|
||||
// @Summary Удалить (безвозвратно) картинки по merch_uuid и query параметрам
|
||||
|
|
|
|||
|
|
@ -56,4 +56,5 @@ type UpdateMerchDTO struct {
|
|||
|
||||
type ImageLink struct {
|
||||
Link string `json:"link"`
|
||||
ETag string `json:"etag"`
|
||||
}
|
||||
|
|
|
|||
|
|
@ -32,10 +32,10 @@ func NewHandler(deps Deps) *Handler {
|
|||
"addr": media,
|
||||
}).Debug("Merch handler constructor | Media provider")
|
||||
|
||||
//exists, err := media.CheckBucketExists(packageBucketName)
|
||||
//if err != nil || !exists {
|
||||
// log.WithError(err).Fatal("Merch handler constructor | Failed to ensure bucket exists")
|
||||
//}
|
||||
exists, err := media.CheckBucketExists(packageBucketName)
|
||||
if err != nil || !exists {
|
||||
log.WithError(err).Fatal("Merch handler constructor | Failed to ensure bucket exists")
|
||||
}
|
||||
|
||||
return &Handler{
|
||||
repo: r,
|
||||
|
|
|
|||
|
|
@ -14,7 +14,6 @@ import (
|
|||
"io"
|
||||
"merch-parser-api/internal/interfaces"
|
||||
"mime/multipart"
|
||||
"net/url"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
"time"
|
||||
|
|
@ -304,14 +303,14 @@ func (s *service) uploadMerchImage(ctx context.Context, userUuid, merchUuid, ima
|
|||
return nil
|
||||
}
|
||||
|
||||
func (s *service) getMerchImage(ctx context.Context, userUuid, merchUuid, imageType string) (*url.URL, error) {
|
||||
func (s *service) getMerchImage(ctx context.Context, userUuid, merchUuid, imageType string) (ImageLink, error) {
|
||||
exists, err := s.repo.merchRecordExists(userUuid, merchUuid)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return ImageLink{}, err
|
||||
}
|
||||
|
||||
if !exists {
|
||||
return nil, fmt.Errorf("no merch found for user %s with uuid %s", userUuid, merchUuid)
|
||||
return ImageLink{}, fmt.Errorf("no merch found for user %s with uuid %s", userUuid, merchUuid)
|
||||
}
|
||||
|
||||
var object string
|
||||
|
|
@ -321,10 +320,23 @@ func (s *service) getMerchImage(ctx context.Context, userUuid, merchUuid, imageT
|
|||
case "full":
|
||||
object = fmt.Sprintf("%s/merch/%s/full.jpg", userUuid, merchUuid)
|
||||
default:
|
||||
return nil, fmt.Errorf("unknown image type %s", imageType)
|
||||
return ImageLink{}, fmt.Errorf("unknown image type %s", imageType)
|
||||
}
|
||||
|
||||
return s.media.Get(ctx, s.bucketName, object, s.expires, nil)
|
||||
link, err := s.media.Get(ctx, s.bucketName, object, s.expires, nil)
|
||||
if err != nil {
|
||||
return ImageLink{}, err
|
||||
}
|
||||
|
||||
etag, err := s.media.GetObjectEtag(ctx, s.bucketName, object)
|
||||
if err != nil {
|
||||
return ImageLink{}, err
|
||||
}
|
||||
|
||||
return ImageLink{
|
||||
Link: link.String(),
|
||||
ETag: etag,
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (s *service) deleteMerchImage(ctx context.Context, userUuid, merchUuid string) error {
|
||||
|
|
@ -367,7 +379,7 @@ func (s *service) _uploadToStorage(params uploadImageParams) error {
|
|||
if err != nil {
|
||||
log.WithFields(log.Fields{
|
||||
"error": err,
|
||||
"img type": "full",
|
||||
"img type": params.imageType,
|
||||
}).Error("Merch | Failed to upload file to media storage")
|
||||
return err
|
||||
}
|
||||
|
|
|
|||
|
|
@ -12,4 +12,5 @@ type MediaStorage interface {
|
|||
Upload(ctx context.Context, bucket, object string, reader io.Reader, size int64) error
|
||||
Get(ctx context.Context, bucket, object string, expires time.Duration, params url.Values) (*url.URL, error)
|
||||
Delete(ctx context.Context, bucket, object string) error
|
||||
GetObjectEtag(ctx context.Context, bucketName, object string) (string, error)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -42,3 +42,11 @@ func (s *Service) Get(ctx context.Context, bucket, object string, expires time.D
|
|||
func (s *Service) Delete(ctx context.Context, bucket, object string) error {
|
||||
return s.client.RemoveObject(ctx, bucket, object, minio.RemoveObjectOptions{})
|
||||
}
|
||||
|
||||
func (s *Service) GetObjectEtag(ctx context.Context, bucketName, object string) (string, error) {
|
||||
info, err := s.client.StatObject(ctx, bucketName, object, minio.StatObjectOptions{})
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
return info.ETag, nil
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue