// CreateNote creates a new Note in the authorized User's Notebook. It takes as input a JSON formatted Note // and writes the new Note (with its automatically assigned unique ID) in JSON format to w. func CreateNote(w http.ResponseWriter, r *http.Request, c appengine.Context, notebook *tessernote.Notebook) { note, err := readNote(w, r) if err != nil { return } note, err = notebook.Put(note, c) if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return } reply, err := json.Marshal(note) if err != nil { c.Errorf("marshaling note (%#v): %s", note, err) http.Error(w, err.Error(), http.StatusInternalServerError) return } w.Write(reply) }
// ReplaceNote replaces a Note in the authorized User's Notebook by its ID. If the Note doesn't exist it is created. // If the Note's ID has already been assigned (e.g. in another Notebook) a new one is generated for this Note. // The Note is written in JSON format to w. func ReplaceNote(w http.ResponseWriter, r *http.Request, c appengine.Context, notebook *tessernote.Notebook) { id := r.URL.Path[len(NotesURL):] note, err := readNote(w, r) if err != nil { return } if id != note.ID { http.Error(w, "mismatched note.ID and URL", http.StatusBadRequest) return } note, err = notebook.Put(note, c) if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return } reply, err := json.Marshal(note) if err != nil { c.Errorf("marshaling note (%#v): %s", note, err) http.Error(w, err.Error(), http.StatusInternalServerError) return } w.Write(reply) }