diff options
Diffstat (limited to 'src/hub/src/spreadspace.org/sfive/s5srvWeb.go')
-rw-r--r-- | src/hub/src/spreadspace.org/sfive/s5srvWeb.go | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/src/hub/src/spreadspace.org/sfive/s5srvWeb.go b/src/hub/src/spreadspace.org/sfive/s5srvWeb.go index 0aa1426..d2367fa 100644 --- a/src/hub/src/spreadspace.org/sfive/s5srvWeb.go +++ b/src/hub/src/spreadspace.org/sfive/s5srvWeb.go @@ -3,6 +3,7 @@ package sfive import ( "encoding/json" "fmt" + "io/ioutil" "net/http" "strconv" "time" @@ -91,6 +92,24 @@ func (self StatsSinkServer) getUpdate(c web.C, w http.ResponseWriter, r *http.Re } } +func (self StatsSinkServer) postUpdate(c web.C, w http.ResponseWriter, r *http.Request) { + decoder := NewPlainDecoder() + + buffer, err := ioutil.ReadAll(r.Body) + if err != nil { + s5l.Printf("web: failed to read post value: %v\n", err) + return + } + + data, err := decoder.Decode(buffer) + if err != nil { + s5l.Printf("web: failed to decode: %v\ndat:%v", err, string(buffer)) + return + } + + self.appendData <- data +} + func (self StatsSinkServer) getStats(c web.C, w http.ResponseWriter, r *http.Request) { filter := getFilter(r) stats, err := self.store.GetStats(&filter) @@ -116,6 +135,7 @@ func (self StatsSinkServer) ServeWeb() { goji.Get("/sources/:id", self.getSource) goji.Get("/updates", self.getUpdateList) goji.Get("/updates/:id", self.getUpdate) + goji.Post("/updates", self.postUpdate) goji.Get("/stats", self.getStats) goji.Serve() } |