changeset 905:b58c203e18fe

port to goweb Ignore-this: ea5e9ea0a0c09d1f4a7980d6c79126d1 darcs-hash:20130831191235-312f9-32a3bbee5ec64018d4a19e151bb9c857c6f208ee
author drewp <drewp@bigasterisk.com>
date Sat, 31 Aug 2013 12:12:35 -0700
parents 5758151d4e33
children d895960604e7
files service/laundry/laundry.go
diffstat 1 files changed, 33 insertions(+), 39 deletions(-) [+]
line wrap: on
line diff
--- a/service/laundry/laundry.go	Sat Aug 31 11:24:09 2013 -0700
+++ b/service/laundry/laundry.go	Sat Aug 31 12:12:35 2013 -0700
@@ -1,7 +1,7 @@
 package main
 
 import (
-	"io/ioutil"
+
 	"log"
 	"net/http"
 	"strconv"
@@ -86,19 +86,6 @@
 }
 	
 
-func booleanBody(w http.ResponseWriter, r *http.Request) (level int, err error) {
-	body, err := ioutil.ReadAll(r.Body)
-	if err != nil {
-		panic(err)
-	}
-	level, err2 := strconv.Atoi(string(body[:]))
-	if err2 != nil {
-		http.Error(w, "body must be '0' or '1'", http.StatusBadRequest)
-		return 0, err
-	}
-	return level, nil
-}
-
 func main() {
 	pins := SetupIo()
 
@@ -123,50 +110,55 @@
 		return nil
 	})
 
-	/*
-	m.Put("/led", http.HandlerFunc(func (w http.ResponseWriter, r *http.Request) {
-		body, err := ioutil.ReadAll(r.Body)
+	goweb.Map("PUT", "/led", func(c context.Context) error {
+		body, err := c.RequestBody()
 		if err != nil {
 			panic(err)
 		}
+		
 		var level int
 		if string(body) == "on" {
 			level = 1
 		} else if string(body) == "off" {
 			level = 0
 		} else {
-			http.Error(w, "body must be 'on' or 'off'", http.StatusBadRequest)
-			return 
+			http.Error(c.HttpResponseWriter(), "body must be 'on' or 'off'", http.StatusBadRequest)
+			return nil
 		}
 
 		hwio.DigitalWrite(pins.OutLed, level)
 		pins.LastOutLed = level
-		http.Error(w, "", http.StatusAccepted)
-	}))
+		http.Error(c.HttpResponseWriter(), "", http.StatusAccepted)
+		return nil
+	})
 
 	setStrike := func (level int) {
 		hwio.DigitalWrite(pins.OutStrike, level)
 		pins.LastOutStrike = level
 	}
 	
-	m.Put("/strike", http.HandlerFunc(func (w http.ResponseWriter, r *http.Request) {
-		level, err := booleanBody(w, r)
+	goweb.Map("PUT", "/strike", func(c context.Context) error {
+		body, err := c.RequestBody()
 		if err != nil {
 			panic(err)
 		}
+
+		level, err2 := strconv.Atoi(string(body[:]))
+		if err2 != nil {
+			http.Error(c.HttpResponseWriter(), "body must be '0' or '1'", http.StatusBadRequest)
+			return nil
+		}
+
 		setStrike(level)
-		http.Error(w, "", http.StatusAccepted)
-	}))
+		http.Error(c.HttpResponseWriter(), "", http.StatusAccepted)
+		return nil
+	})
 	
-	m.Put("/strike/temporaryUnlock", http.HandlerFunc(func (w http.ResponseWriter, r *http.Request) {
-		err := r.ParseForm()
-		if err != nil {
-			panic(err)
-		}
-		seconds, err2 := strconv.ParseFloat(string(r.Form["seconds"][0]), 32)
+	goweb.Map("PUT", "/strike/temporaryUnlock", func(c context.Context) error {
+		seconds, err2 := strconv.ParseFloat(c.FormValue("seconds"), 32)
 		if err2 != nil {
-			http.Error(w, "seconds must be a float", http.StatusBadRequest)
-			return
+			http.Error(c.HttpResponseWriter(), "seconds must be a float", http.StatusBadRequest)
+			return nil
 		}
 
 		// This is not correctly reentrant. There should be a
@@ -177,14 +169,16 @@
 			time.Sleep(time.Duration(seconds * float64(time.Second)))
 			setStrike(0)
 		}()
-		http.Error(w, "", http.StatusAccepted)
-	}))
+		http.Error(c.HttpResponseWriter(), "", http.StatusAccepted)
+		return nil
+	})
 
-	m.Put("/speaker/beep", http.HandlerFunc(func (w http.ResponseWriter, r *http.Request) {
+	goweb.Map("PUT", "/speaker/beep", func(c context.Context) error {
 		// queue a beep
-		http.Error(w, "", http.StatusAccepted)
-	}))
-*/
+		http.Error(c.HttpResponseWriter(), "", http.StatusAccepted)
+		return nil
+	})
+
 
 	address := ":8081"