package http import "net/http" // QueryToLua converts HTTP query parameters to a map that can be used with LuaJIT. // Single value parameters are stored as strings. // Multi-value parameters are converted to []any arrays. func QueryToLua(r *http.Request) map[string]any { if r == nil || r.URL == nil { return nil } query := r.URL.Query() if len(query) == 0 { return nil // Avoid allocation for empty queries } result := make(map[string]any, len(query)) for key, values := range query { switch len(values) { case 0: // Skip empty values case 1: // Single value result[key] = values[0] default: // Multiple values - convert to []any arr := make([]any, len(values)) for i, v := range values { arr[i] = v } result[key] = arr } } return result }