package http

import (
	"strings"

	"github.com/gin-gonic/gin"
)

// RewriteBracketParams converts arr[]=1&arr[]=2 into arr=1&arr=2 before grpc-gateway parses query params.
func RewriteBracketParams() gin.HandlerFunc {
	return func(c *gin.Context) {
		query := c.Request.URL.Query()
		changed := false

		for key, values := range query {
			if normalizedKey, ok := strings.CutSuffix(key, "[]"); ok {
				query[normalizedKey] = append(query[normalizedKey], values...)
				delete(query, key)
				changed = true
			}
		}

		if changed {
			c.Request.URL.RawQuery = query.Encode()
		}

		c.Next()
	}
}
