58 lines
1.1 KiB
Go
58 lines
1.1 KiB
Go
package parsing
|
|
|
|
import (
|
|
"fmt"
|
|
"net/http"
|
|
"strconv"
|
|
)
|
|
|
|
func GetStrParam(r *http.Request, key string) string {
|
|
return r.URL.Query().Get(key)
|
|
}
|
|
|
|
func GetStrParamOr(r *http.Request, key, or string) string {
|
|
val := GetStrParam(r, key)
|
|
if val == "" {
|
|
return or
|
|
}
|
|
return val
|
|
}
|
|
|
|
func GetIntParam(r *http.Request, key string) (int, error) {
|
|
strVal := r.URL.Query().Get(key)
|
|
if strVal == "" {
|
|
return 0, fmt.Errorf("no param with key `%s`", key)
|
|
}
|
|
val, err := strconv.Atoi(strVal)
|
|
if err != nil {
|
|
return 0, fmt.Errorf("not an int `%s`", strVal)
|
|
}
|
|
return val, nil
|
|
}
|
|
|
|
func GetIntParamOr(r *http.Request, key string, or int) int {
|
|
val, err := GetIntParam(r, key)
|
|
if err != nil {
|
|
return or
|
|
}
|
|
return val
|
|
}
|
|
|
|
func GetFirstParamOf(r *http.Request, keys ...string) []string {
|
|
for _, key := range keys {
|
|
if val, ok := r.URL.Query()[key]; ok {
|
|
return val
|
|
}
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func GetFirstIntParamOf(r *http.Request, keys ...string) (int, bool) {
|
|
for _, key := range keys {
|
|
if v, err := GetIntParam(r, key); err == nil {
|
|
return v, true
|
|
}
|
|
}
|
|
return 0, false
|
|
}
|