|
|
@@ -0,0 +1,27 @@
|
|
|
+package middleware
|
|
|
+
|
|
|
+import (
|
|
|
+ "compress/gzip"
|
|
|
+ "github.com/gin-gonic/gin"
|
|
|
+ "io"
|
|
|
+ "net/http"
|
|
|
+)
|
|
|
+
|
|
|
+func GzipDecodeMiddleware() gin.HandlerFunc {
|
|
|
+ return func(c *gin.Context) {
|
|
|
+ if c.GetHeader("Content-Encoding") == "gzip" {
|
|
|
+ gzipReader, err := gzip.NewReader(c.Request.Body)
|
|
|
+ if err != nil {
|
|
|
+ c.AbortWithStatus(http.StatusBadRequest)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ defer gzipReader.Close()
|
|
|
+
|
|
|
+ // Replace the request body with the decompressed data
|
|
|
+ c.Request.Body = io.NopCloser(gzipReader)
|
|
|
+ }
|
|
|
+
|
|
|
+ // Continue processing the request
|
|
|
+ c.Next()
|
|
|
+ }
|
|
|
+}
|