Files
gonic/server/parsing/parsing.go
2019-11-24 23:09:36 +00:00

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
}