diff --git a/middleware/gzip.go b/middleware/gzip.go new file mode 100644 index 0000000..97dcefc --- /dev/null +++ b/middleware/gzip.go @@ -0,0 +1,22 @@ +package middleware + +import ( + "compress/gzip" + "github.com/gin-gonic/gin" + "net/http" +) + +func GzipMiddleware() gin.HandlerFunc { + return func(c *gin.Context) { + if c.Request.Header.Get("Content-Encoding") == "gzip" { + gzReader, err := gzip.NewReader(c.Request.Body) + if err != nil { + c.AbortWithStatusJSON(http.StatusBadRequest, gin.H{"error": "Invalid gzip format"}) + return + } + defer gzReader.Close() + c.Request.Body = gzReader + } + c.Next() + } +} diff --git a/routes/routes.go b/routes/routes.go index 4c4d7cd..f732cd1 100644 --- a/routes/routes.go +++ b/routes/routes.go @@ -3,10 +3,12 @@ package routes import ( "github.com/gin-gonic/gin" "hr_receiver/controllers" + "hr_receiver/middleware" ) func SetupRouter() *gin.Engine { r := gin.Default() + r.Use(middleware.GzipMiddleware()) trainingController := controllers.NewTrainingController() v1 := r.Group("/api/v1")