Esempio n. 1
0
// 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)
}
Esempio n. 2
0
// 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)
}