From 632b27639a36b69d80f61d6f53b4a038863d6578 Mon Sep 17 00:00:00 2001 From: celogeek Date: Sat, 7 May 2022 20:15:00 +0200 Subject: [PATCH] update error --- internal/photos/api/errors.go | 18 ++++++++++++++---- internal/photos/api/upload.go | 19 ++++++------------- 2 files changed, 20 insertions(+), 17 deletions(-) diff --git a/internal/photos/api/errors.go b/internal/photos/api/errors.go index 64e3c6d..2522e47 100644 --- a/internal/photos/api/errors.go +++ b/internal/photos/api/errors.go @@ -1,6 +1,8 @@ package photosapi import ( + "strings" + "github.com/gin-gonic/gin" ) @@ -13,9 +15,17 @@ func (s *Service) HandleError(c *gin.Context) { c.Next() if err := c.Errors.Last(); err != nil { - c.JSON(-1, gin.H{ - "status": StatusFailed, - "error": err.Err.Error(), - }) + if err.IsType(gin.ErrorTypeBind) { + c.JSON(-1, gin.H{ + "status": StatusFailed, + "error": "binding error", + "details": strings.Split(err.Error(), "\n"), + }) + } else { + c.JSON(-1, gin.H{ + "status": StatusFailed, + "error": err.Error(), + }) + } } } diff --git a/internal/photos/api/upload.go b/internal/photos/api/upload.go index aaa6353..f074c92 100644 --- a/internal/photos/api/upload.go +++ b/internal/photos/api/upload.go @@ -36,21 +36,14 @@ func (s *Service) UploadCreate(c *gin.Context) { } type UploadPartRequest struct { - UploadId string `uri:"upload_id" binding:"required,uuid"` - Part uint `uri:"part" binding:"required"` -} -type UploadPartHeaders struct { - PartSha256 string `header:"x-part-sha256" binding:"required,lowercase,alphanum,len=64"` + UploadId string `form:"upload_id" binding:"required,uuid"` + Part uint `form:"part" binding:"required"` + PartSha256 string `form:"sha256" binding:"required,sha256"` } func (s *Service) UploadPart(c *gin.Context) { var uploadPart UploadPartRequest - if c.BindUri(&uploadPart) != nil { - return - } - - var uploadPartHeaders UploadPartHeaders - if c.BindHeader(&uploadPartHeaders) != nil { + if c.BindQuery(&uploadPart) != nil { return } @@ -101,7 +94,7 @@ func (s *Service) UploadCancel(c *gin.Context) { } type UploadCompleteRequest struct { - Sha256 string `json:"sha256" binding:"required,lowercase,alphanum,len=64"` + Sha256 string `json:"sha256" binding:"required,sha256"` Name string `json:"name" binding:"required"` Parts uint `json:"parts" binding:"required"` } @@ -121,7 +114,7 @@ func (s *Service) UploadComplete(c *gin.Context) { func (s *Service) UploadInit() { upload := s.Gin.Group("/upload") upload.GET("/create", s.UploadCreate) - upload.POST("/part/:upload_id/:part", s.UploadPart) + upload.POST("/part", s.UploadPart) upload.GET("/cancel/:upload_id", s.UploadCancel) upload.POST("/complete/:upload_id", s.UploadComplete) }