From eec4b1b19eac4cee586c6334b24084cecb08313e Mon Sep 17 00:00:00 2001 From: Pierre-Olivier Mercier Date: Fri, 8 Jul 2022 13:46:27 +0200 Subject: [PATCH] Can filter by project to get a HTTP status code Ok or NotFound --- main.go | 33 +++++++++++++++++++++++++++++---- 1 file changed, 29 insertions(+), 4 deletions(-) diff --git a/main.go b/main.go index 36a3542..9da4196 100644 --- a/main.go +++ b/main.go @@ -199,12 +199,37 @@ func ServeJSONStudent(w http.ResponseWriter, r *http.Request) { login := strings.TrimSuffix(strings.TrimPrefix(r.URL.Path, "/"), ".json") - if j, err := json.Marshal(genStudent(login)); err != nil { - http.Error(w, fmt.Sprintf("{errmsg:%q}", err), http.StatusInternalServerError) + var ret []byte + status := http.StatusOK + + if len(r.URL.Query().Get("rendu")) > 0 { + limit := r.URL.Query().Get("rendu") + for k, v := range genStudent(login) { + if limit == k { + r, err := json.Marshal(v) + if err != nil { + http.Error(w, fmt.Sprintf("{errmsg:%q}", err), http.StatusInternalServerError) + return + } + + if v == nil { + status = http.StatusNotFound + } + + ret = append(ret, r...) + } + } } else { - w.WriteHeader(http.StatusOK) - w.Write(j) + var err error + ret, err = json.Marshal(genStudent(login)) + if err != nil { + http.Error(w, fmt.Sprintf("{errmsg:%q}", err), http.StatusInternalServerError) + return + } } + + w.WriteHeader(status) + w.Write(ret) } type arrayFlags []string