summaryrefslogtreecommitdiff
path: root/src/hub/src/spreadspace.org/sfive/s5srvWeb.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/hub/src/spreadspace.org/sfive/s5srvWeb.go')
-rw-r--r--src/hub/src/spreadspace.org/sfive/s5srvWeb.go20
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()
}