From 1a5b23df5a8dfd5c5cfb88ad2b6d2c7da6476be3 Mon Sep 17 00:00:00 2001 From: Christian Pointner Date: Sat, 6 May 2017 04:38:22 +0200 Subject: parse from and limit from request query --- src/hub/src/spreadspace.org/sfive/s5srvWeb.go | 30 ++++++++++++++++++++++----- 1 file changed, 25 insertions(+), 5 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 3b74041..fcb07d7 100644 --- a/src/hub/src/spreadspace.org/sfive/s5srvWeb.go +++ b/src/hub/src/spreadspace.org/sfive/s5srvWeb.go @@ -103,7 +103,27 @@ func (srv Server) webGetSource(c web.C, w http.ResponseWriter, r *http.Request) func (srv Server) webGetUpdateList(c web.C, w http.ResponseWriter, r *http.Request) { const resourceName = "updates" - values, err := srv.GetUpdatesAfter(-1, 3) // TODO: get start and limit from param + from := 0 + if fromStr := r.FormValue("from"); fromStr != "" { + fromInt, err := strconv.Atoi(fromStr) + if err != nil { + http.Error(w, fmt.Sprintf("failed to parse from field: %v", err), http.StatusBadRequest) + return + } + from = fromInt + } + + limit := -1 + if limitStr := r.FormValue("limit"); limitStr != "" { + limitInt, err := strconv.Atoi(limitStr) + if err != nil { + http.Error(w, fmt.Sprintf("failed to parse limit field: %v", err), http.StatusBadRequest) + return + } + limit = limitInt + } + + values, err := srv.GetUpdatesAfter(from, limit) if err != nil { http.Error(w, fmt.Sprintf("failed to retrieve %s: %v", resourceName, err), http.StatusInternalServerError) return @@ -117,7 +137,7 @@ func (srv Server) webGetUpdateList(c web.C, w http.ResponseWriter, r *http.Reque } func (srv Server) webGetUpdate(c web.C, w http.ResponseWriter, r *http.Request) { - const resourceName = "update" + const resourceName = "updates" id, err := strconv.ParseInt(c.URLParams["id"], 10, 64) if err != nil { http.Error(w, fmt.Sprintf("invalid id: %s: %v", resourceName, err), http.StatusBadRequest) @@ -153,7 +173,7 @@ func (srv Server) webGetUpdate(c web.C, w http.ResponseWriter, r *http.Request) // } func (srv Server) webPostUpdate(c web.C, w http.ResponseWriter, r *http.Request) { - const resourceName = "update" + const resourceName = "updates" decoder := NewStatelessDecoder(r.Body) data, err := decoder.Decode() @@ -171,7 +191,7 @@ func (srv Server) webPostUpdate(c web.C, w http.ResponseWriter, r *http.Request) } func (srv Server) webGetLastUpdateId(c web.C, w http.ResponseWriter, r *http.Request) { - const resourceName = "lastupdateid" + const resourceName = "lastupdate" value, err := srv.store.GetLastUpdateId() if err != nil { http.Error(w, fmt.Sprintf("failed to retrieve %s: %v", resourceName, err), http.StatusInternalServerError) @@ -181,7 +201,7 @@ func (srv Server) webGetLastUpdateId(c web.C, w http.ResponseWriter, r *http.Req } func (srv Server) webGetLastUpdateIdForUuid(c web.C, w http.ResponseWriter, r *http.Request) { - const resourceName = "lastupdateid" + const resourceName = "lastupdate" id := c.URLParams["id"] value, err := srv.store.GetLastUpdateForUuid(id) if err != nil { -- cgit v1.2.3