package am import ( "net/http" ) func handleReport(w http.ResponseWriter, r *http.Request) { r.ParseForm() apiKey := r.Form.Get("key") src, err := db.SourceGetByKey(apiKey) if err != nil { respondNotAuthorized(w) return } action := r.Form.Get("action") switch action { case "ping": if err = db.SourceUpdateLastSeenAt(src.SourceID); err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) } else { w.WriteHeader(http.StatusOK) } case "log": _ = db.SourceUpdateLastSeenAt(src.SourceID) text := r.Form.Get("text") _ = db.LogInsert(Entry{ SourceID: src.SourceID, Text: text, }) runLogAction(src.LogAction, src.Name, text) w.WriteHeader(http.StatusOK) case "alert": _ = db.SourceUpdateLastSeenAt(src.SourceID) text := r.Form.Get("text") _ = db.LogInsert(Entry{ SourceID: src.SourceID, Text: text, Alert: true, }) runAlertAction(src.AlertAction, src.Name, text) w.WriteHeader(http.StatusOK) default: http.Error(w, "Unknown action: "+action, http.StatusBadRequest) } }