func ModulesPatchHandler(mapper *pgmapper.Mapper, extractor idextractor.Extractor) http.Handler { handlerFunc := func(w http.ResponseWriter, r *http.Request) int { id, err := extractor(r) if err != nil { return http.StatusInternalServerError } log.Println("got patch request for module") patch, err := jsonpatch.Decode(r.Body) if err != nil { log.Println("error while decoding json: ", err) return http.StatusBadRequest } userId := context.Get(r, "user").(*jwt.Token).Claims["id"].(string) options := map[string]interface{}{ "userId": userId, "id": id, "jwt": r.Header.Get("Authorization"), } compiler := lecturepatch.ForModules() err = mapper.ApplyPatch(patch, compiler, options) if err != nil { if err == lecturepatch.PermissionDeniedError { log.Println(err) return http.StatusUnauthorized } else { log.Println("error while applying module patch: ", err) return http.StatusBadRequest } } return -1 } return jwtware.New(createHandler(handlerFunc)) }
func TopicPatchHandler(mapper *pgmapper.Mapper, extractor idextractor.Extractor) http.Handler { handlerFunc := func(w http.ResponseWriter, r *http.Request) int { id, err := extractor(r) if err != nil { return http.StatusInternalServerError } patch, err := jsonpatch.Decode(r.Body) if err != nil { return http.StatusBadRequest } userId := context.Get(r, "user").(*jwt.Token).Claims["id"].(string) compiler := lecturepatch.ForTopics() err = mapper.ApplyPatch(id, userId, patch, compiler) if err != nil { return http.StatusBadRequest } return -1 } return createHandler(handlerFunc) }