github.com/rentongzhang/docker@v1.8.2-rc1/api/server/form.go (about)

     1  package server
     2  
     3  import (
     4  	"fmt"
     5  	"net/http"
     6  	"strconv"
     7  	"strings"
     8  )
     9  
    10  func boolValue(r *http.Request, k string) bool {
    11  	s := strings.ToLower(strings.TrimSpace(r.FormValue(k)))
    12  	return !(s == "" || s == "0" || s == "no" || s == "false" || s == "none")
    13  }
    14  
    15  // boolValueOrDefault returns the default bool passed if the query param is
    16  // missing, otherwise it's just a proxy to boolValue above
    17  func boolValueOrDefault(r *http.Request, k string, d bool) bool {
    18  	if _, ok := r.Form[k]; !ok {
    19  		return d
    20  	}
    21  	return boolValue(r, k)
    22  }
    23  
    24  func int64ValueOrZero(r *http.Request, k string) int64 {
    25  	val, err := strconv.ParseInt(r.FormValue(k), 10, 64)
    26  	if err != nil {
    27  		return 0
    28  	}
    29  	return val
    30  }
    31  
    32  type archiveOptions struct {
    33  	name string
    34  	path string
    35  }
    36  
    37  func archiveFormValues(r *http.Request, vars map[string]string) (archiveOptions, error) {
    38  	if vars == nil {
    39  		return archiveOptions{}, fmt.Errorf("Missing parameter")
    40  	}
    41  	if err := parseForm(r); err != nil {
    42  		return archiveOptions{}, err
    43  	}
    44  
    45  	name := vars["name"]
    46  	path := r.Form.Get("path")
    47  
    48  	switch {
    49  	case name == "":
    50  		return archiveOptions{}, fmt.Errorf("bad parameter: 'name' cannot be empty")
    51  	case path == "":
    52  		return archiveOptions{}, fmt.Errorf("bad parameter: 'path' cannot be empty")
    53  	}
    54  
    55  	return archiveOptions{name, path}, nil
    56  }