Mercurial > code > home > repos > homeauto
changeset 106:90be7f99696f
sending a graph with raptor
Ignore-this: 33e92240437ae376a77dec403a7072a1
author | drewp@bigasterisk.com |
---|---|
date | Sat, 31 Aug 2013 22:17:24 -0700 |
parents | 39319305d639 |
children | 08eb981b6cf5 |
files | service/laundry/laundry.go service/laundry/makefile |
diffstat | 2 files changed, 43 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/service/laundry/laundry.go Sat Aug 31 20:32:22 2013 -0700 +++ b/service/laundry/laundry.go Sat Aug 31 22:17:24 2013 -0700 @@ -10,6 +10,7 @@ "github.com/mrmorphic/hwio" "github.com/stretchr/goweb" "github.com/stretchr/goweb/context" + "bitbucket.org/ww/goraptor" ) /* @@ -81,9 +82,26 @@ if err := hwio.PinMode(pins.OutStrike, hwio.OUTPUT); err != nil { panic(err) } return pins } - + + +func serializeGowebResponse( + c context.Context, + syntaxName string, + statements chan *goraptor.Statement) error { + serializer := goraptor.NewSerializer(syntaxName) + defer serializer.Free() + + str, err := serializer.Serialize(statements, "") + if err != nil { + panic(err); + } + c.HttpResponseWriter().Header().Set("Content-Type", + goraptor.SerializerSyntax[syntaxName].MimeType) + return goweb.Respond.With(c, 200, []byte(str)) +} func main() { + log.Printf("%v", goraptor.SerializerSyntax) pins := SetupIo() goweb.MapStatic("/static", "static") @@ -107,6 +125,24 @@ return nil }) + goweb.Map("GET", "/graph", func(c context.Context) error { + u1 := goraptor.Uri("http://example.com/s") + + statements := make(chan *goraptor.Statement, 1) + + st := goraptor.Statement{ + Subject: &u1, + Predicate: &u1, + Object: &u1, + Graph: &u1, + } + statements <- &st + close(statements) + // type should be chosen with accept header. trig is + // causing segfaults. + return serializeGowebResponse(c, "nquads", statements) + }) + goweb.Map("PUT", "/led", func(c context.Context) error { body, err := c.RequestBody() if err != nil { @@ -119,7 +155,7 @@ } else if string(body) == "off" { level = 0 } else { - return goweb.Respond.With(c, http.StatusBadRequest, "body must be 'on' or 'off'") + return goweb.Respond.With(c, http.StatusBadRequest, []byte("body must be 'on' or 'off'")) } hwio.DigitalWrite(pins.OutLed, level) @@ -138,9 +174,9 @@ panic(err) } - level, err2 := strconv.Atoi(string(body[:])) - if err2 != nil { - return goweb.Respond.With(c, http.StatusBadRequest, "body must be '0' or '1'") + level, err := strconv.Atoi(string(body[:])) + if err != nil { + return goweb.Respond.With(c, http.StatusBadRequest, []byte("body must be '0' or '1'")) } setStrike(level)
--- a/service/laundry/makefile Sat Aug 31 20:32:22 2013 -0700 +++ b/service/laundry/makefile Sat Aug 31 22:17:24 2013 -0700 @@ -8,3 +8,5 @@ deps: GOPATH=`pwd` /opt/go/bin/go get github.com/mrmorphic/hwio GOPATH=`pwd` /opt/go/bin/go get github.com/stretchr/goweb + apt-get install libraptor2-dev + GOPATH=`pwd` /opt/go/bin/go get bitbucket.org/ww/goraptor