Moonshark/core/http/queries.go
2025-03-06 06:35:01 -06:00

38 lines
797 B
Go

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
}