38 lines
797 B
Go
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
|
|
}
|