update error

This commit is contained in:
celogeek 2022-05-07 20:15:00 +02:00
parent c453422cac
commit 632b27639a
Signed by: celogeek
GPG Key ID: E6B7BDCFC446233A
2 changed files with 20 additions and 17 deletions

View File

@ -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(),
})
}
}
}

View File

@ -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)
}