diff options
Diffstat (limited to 'server/humidity.go')
| -rw-r--r-- | server/humidity.go | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/server/humidity.go b/server/humidity.go index 079c9bf..3982545 100644 --- a/server/humidity.go +++ b/server/humidity.go @@ -4,6 +4,7 @@ import ( "fmt" "log" "net/http" + "net/url" "strconv" ) @@ -93,3 +94,23 @@ func (h HumidityHandler) average() (Humidity, bool) { } return sum / Humidity(nRooms), true } + +// Parse the value associated with each key in the query string. Returns a map of +// keys and values, or error if one of the keys is missing or if there is no value +// associated with one of the keys. +func parseQuery(query string, keys []string) (map[string]string, error) { + queryVals, err := url.ParseQuery(query) + if err != nil { + return nil, err + } + + vals := make(map[string]string) + for _, key := range keys { + val := queryVals.Get(key) + if val == "" { + return nil, fmt.Errorf("missing key '%s'", key) + } + vals[key] = val + } + return vals, nil +} |