package main import ( "encoding/json" "go.etcd.io/bbolt" "log" "net/http" "time" ) type momentHandler struct { DB *bbolt.DB } func (mh *momentHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { defer r.Body.Close() sess, err := NewSession(w, r) if err != nil { log.Println(err) return } defer sess.Flush() if r.Method == http.MethodGet { moments, err := loadMoments(mh.DB, "") if err != nil { log.Println(err) } w.Header().Add("Content-Type", "application/json; charset=utf8") err = json.NewEncoder(w).Encode(&moments) if err != nil { log.Println(err) } } else if r.Method == http.MethodPost { // save input values err := r.ParseForm() if err != nil { log.Println(err) return } memo := r.FormValue("memo") timestamp := time.Now() err = saveMemo(mh.DB, timestamp, memo) if err != nil { log.Println(err) } http.Redirect(w, r, "/", http.StatusFound) } else { http.Error(w, "Method Not Allowed", 405) return } }