func HandleGoalsGet(w http.ResponseWriter, r *http.Request) { c := appengine.NewContext(r) vars, err := url.ParseQuery(r.URL.RawQuery) if err != nil { http.Error(w, err.Error(), http.StatusBadRequest) } goals := model.Goals{} goalFilter := model.Goal{} if val, exists := vars["name"]; exists { goalFilter.Name = val[0] } if val, exists := vars["notes"]; exists { goalFilter.Notes = val[0] } var limit, offset int if val, exists := vars["pagesize"]; exists { if limit, err = strconv.Atoi(val[0]); err != nil { http.Error(w, "pagesize should be a number. "+err.Error(), http.StatusBadRequest) } } else { limit = types.PageSize } if val, exists := vars["page"]; exists { if offset, err = strconv.Atoi(val[0]); err != nil { http.Error(w, "page should be a number. "+err.Error(), http.StatusBadRequest) } offset = (offset - 1) * limit } if err := goals.Get(c, goalFilter, offset, limit); err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) } if err := json.NewEncoder(w).Encode(goals); err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return } }