From 15d952ee4d586d2975bd6b50502b8b584495777b Mon Sep 17 00:00:00 2001 From: Christian Pointner Date: Sun, 7 May 2017 04:50:42 +0200 Subject: added dispatcher for bulk vs single updates post --- src/hub/src/spreadspace.org/sfive/s5srvWeb.go | 111 ++++++++++++++------------ 1 file changed, 58 insertions(+), 53 deletions(-) (limited to 'src') 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 -- cgit v1.2.3