// polyIgnoresAddHandler is for adding a new ignore rule. func polyIgnoresAddHandler(w http.ResponseWriter, r *http.Request) { user := login.LoggedInAs(r) if user == "" { util.ReportError(w, r, fmt.Errorf("Not logged in."), "You must be logged in to add an ignore rule.") return } req := &IgnoresRequest{} if err := parseJson(r, req); err != nil { util.ReportError(w, r, err, "Failed to parse submitted data.") return } if req.Filter == "" { util.ReportError(w, r, fmt.Errorf("Invalid Filter: %q", req.Filter), "Filters can't be empty.") return } d, err := human.ParseDuration(req.Duration) if err != nil { util.ReportError(w, r, err, "Failed to parse duration") return } ignoreRule := ignore.NewIgnoreRule(user, time.Now().Add(d), req.Filter, req.Note) if err != nil { util.ReportError(w, r, err, "Failed to create ignore rule.") return } if err = storages.IgnoreStore.Create(ignoreRule); err != nil { util.ReportError(w, r, err, "Failed to create ignore rule.") return } polyIgnoresJSONHandler(w, r) }
func polyIgnoresUpdateHandler(w http.ResponseWriter, r *http.Request) { user := login.LoggedInAs(r) if user == "" { util.ReportError(w, r, fmt.Errorf("Not logged in."), "You must be logged in to update an ignore rule.") return } id, err := strconv.ParseInt(mux.Vars(r)["id"], 10, 0) if err != nil { util.ReportError(w, r, err, "ID must be valid integer.") return } req := &IgnoresRequest{} if err := parseJson(r, req); err != nil { util.ReportError(w, r, err, "Failed to parse submitted data.") return } if req.Filter == "" { util.ReportError(w, r, fmt.Errorf("Invalid Filter: %q", req.Filter), "Filters can't be empty.") return } d, err := human.ParseDuration(req.Duration) if err != nil { util.ReportError(w, r, err, "Failed to parse duration") return } ignoreRule := ignore.NewIgnoreRule(user, time.Now().Add(d), req.Filter, req.Note) if err != nil { util.ReportError(w, r, err, "Failed to create ignore rule.") return } ignoreRule.ID = int(id) err = storages.IgnoreStore.Update(int(id), ignoreRule) if err != nil { util.ReportError(w, r, err, "Unable to update ignore rule.") } else { // If update worked just list the current ignores and return them. polyIgnoresJSONHandler(w, r) } }