summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Pointner <equinox@spreadspace.org>2017-05-07 04:50:42 +0200
committerChristian Pointner <equinox@spreadspace.org>2017-05-07 04:50:42 +0200
commit15d952ee4d586d2975bd6b50502b8b584495777b (patch)
tree6dc6b58d9229289a9e3caa846cf8a7dc10f624ba
parentget update list implemented ... some thinking necessary (diff)
added dispatcher for bulk vs single updates post
-rw-r--r--src/hub/src/spreadspace.org/sfive/s5srvWeb.go111
1 files changed, 58 insertions, 53 deletions
diff --git a/src/hub/src/spreadspace.org/sfive/s5srvWeb.go b/src/hub/src/spreadspace.org/sfive/s5srvWeb.go
index 2379078..cbcf2d4 100644
--- a/src/hub/src/spreadspace.org/sfive/s5srvWeb.go
+++ b/src/hub/src/spreadspace.org/sfive/s5srvWeb.go
@@ -48,7 +48,6 @@ type webErrorResponse struct {
func webNotFound(srv *Server, w http.ResponseWriter, r *http.Request) {
// TODO: show index on '^/$'
-
sendWebResponse(w, http.StatusNotFound, webErrorResponse{"not found"})
}
@@ -151,8 +150,13 @@ func webUpdates(srv *Server, w http.ResponseWriter, r *http.Request) {
switch r.Method {
case "GET":
webUpdatesGet(srv, w, r)
- //case "POST":
- // TODO: call webPostUpdate(s)
+ case "POST":
+ q := r.URL.Query()
+ if _, exists := q["bulk"]; !exists {
+ webUpdatesPost(srv, w, r)
+ } else {
+ webUpdatesPostBulk(srv, w, r)
+ }
default:
sendInvalidMethod(w, r.Method)
}
@@ -193,56 +197,57 @@ func webUpdatesGet(srv *Server, w http.ResponseWriter, r *http.Request) {
}
}
-// func (srv Server) webPostUpdateBulk(c web.C, w http.ResponseWriter, r *http.Request) {
-// decoder, err := NewStatefulDecoder(r.Body)
-// if err != nil {
-// http.Error(w, fmt.Sprintf("failed to read/decode init message: %v", err), http.StatusBadRequest)
-// return
-// }
-
-// data := []DataUpdateFull{}
-// for {
-// value, err := decoder.Decode()
-// if err != nil {
-// if err != io.EOF {
-// http.Error(w, fmt.Sprintf("failed to read/decode update message: %v", err), http.StatusBadRequest)
-// return
-// }
-// // TODO: check for temporary error?
-// return
-// }
-// data = append(data, value)
-// }
-
-// if err = srv.AppendMany(data); err != nil {
-// http.Error(w, fmt.Sprintf("failed to store data: %s", err), http.StatusInternalServerError)
-// } else {
-// fmt.Fprintf(w, "%d update(s) successfully stored.", len(data))
-// }
-// }
-
-// func (srv Server) webPostUpdate(c web.C, w http.ResponseWriter, r *http.Request) {
-// const resourceName = "updates"
-
-// if bulk := r.FormValue("bulk"); bulk != "" {
-// srv.webPostUpdateBulk(c, w, r)
-// return
-// }
-
-// decoder := NewStatelessDecoder(r.Body)
-// data, err := decoder.Decode()
-// if err != nil && err != io.EOF {
-// s5l.Printf("web: failed to decode: %v\n", err)
-// http.Error(w, fmt.Sprintf("failed to read/decode update message: %v", err), http.StatusBadRequest)
-// return
-// }
-
-// if err = srv.Append(data); err != nil {
-// http.Error(w, fmt.Sprintf("failed to store data: %s", err), http.StatusInternalServerError)
-// } else {
-// fmt.Fprintf(w, "1 update successfully stored.")
-// }
-// }
+func webUpdatesPost(srv *Server, w http.ResponseWriter, r *http.Request) {
+ // TODO: implement this!
+
+ // decoder, err := NewStatefulDecoder(r.Body)
+ // if err != nil {
+ // http.Error(w, fmt.Sprintf("failed to read/decode init message: %v", err), http.StatusBadRequest)
+ // return
+ // }
+
+ // data := []DataUpdateFull{}
+ // for {
+ // value, err := decoder.Decode()
+ // if err != nil {
+ // if err != io.EOF {
+ // http.Error(w, fmt.Sprintf("failed to read/decode update message: %v", err), http.StatusBadRequest)
+ // return
+ // }
+ // // TODO: check for temporary error?
+ // return
+ // }
+ // data = append(data, value)
+ // }
+
+ // if err = srv.AppendMany(data); err != nil {
+ // http.Error(w, fmt.Sprintf("failed to store data: %s", err), http.StatusInternalServerError)
+ // } else {
+ // fmt.Fprintf(w, "%d update(s) successfully stored.", len(data))
+ // }
+
+ sendWebResponse(w, http.StatusNotImplemented, webErrorResponse{"posting signle update data not yet implemented!"})
+}
+
+func webUpdatesPostBulk(srv *Server, w http.ResponseWriter, r *http.Request) {
+ // TODO: implement this!
+
+ // decoder := NewStatelessDecoder(r.Body)
+ // data, err := decoder.Decode()
+ // if err != nil && err != io.EOF {
+ // s5l.Printf("web: failed to decode: %v\n", err)
+ // http.Error(w, fmt.Sprintf("failed to read/decode update message: %v", err), http.StatusBadRequest)
+ // return
+ // }
+
+ // if err = srv.Append(data); err != nil {
+ // http.Error(w, fmt.Sprintf("failed to store data: %s", err), http.StatusInternalServerError)
+ // } else {
+ // fmt.Fprintf(w, "1 update successfully stored.")
+ // }
+
+ sendWebResponse(w, http.StatusNotImplemented, webErrorResponse{"posting bulk update data not yet implemented!"})
+}
// /lastupdate/:UUID