queries
This commit is contained in:
parent
6395b3ee58
commit
60c1362371
37
core/http/queries.go
Normal file
37
core/http/queries.go
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
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
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user