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