package server import ( "fmt" "net/http" "path/filepath" "strconv" "strings" ) func boolValue(r *http.Request, k string) bool { s := strings.ToLower(strings.TrimSpace(r.FormValue(k))) return !(s == "" || s == "0" || s == "no" || s == "false" || s == "none") } // boolValueOrDefault returns the default bool passed if the query param is // missing, otherwise it's just a proxy to boolValue above func boolValueOrDefault(r *http.Request, k string, d bool) bool { if _, ok := r.Form[k]; !ok { return d } return boolValue(r, k) } func int64ValueOrZero(r *http.Request, k string) int64 { val, err := strconv.ParseInt(r.FormValue(k), 10, 64) if err != nil { return 0 } return val } type archiveOptions struct { name string path string } func archiveFormValues(r *http.Request, vars map[string]string) (archiveOptions, error) { if vars == nil { return archiveOptions{}, fmt.Errorf("Missing parameter") } if err := parseForm(r); err != nil { return archiveOptions{}, err } name := vars["name"] path := filepath.FromSlash(r.Form.Get("path")) switch { case name == "": return archiveOptions{}, fmt.Errorf("bad parameter: 'name' cannot be empty") case path == "": return archiveOptions{}, fmt.Errorf("bad parameter: 'path' cannot be empty") } return archiveOptions{name, path}, nil }