Пример #1
0
func (lac ListAPIController) ServeHTTP(w http.ResponseWriter, r *http.Request) {
	l := datastore.List{Id: r.URL.Path}

	if r.Method == "POST" {
		bytes, err := ioutil.ReadAll(r.Body)
		if err != nil {
			http.Error(w, "Error reading request body", 500)
			return
		}
		var newList []string
		if err := json.Unmarshal(bytes, &newList); err != nil {
			http.Error(w, "Error parsing request body JSON", 400)
			log.Println(string(bytes))
			return
		}

		if err := l.Set(newList); err != nil {
			http.Error(w, "Error saving list", 500)
			return
		}
	}

	items, err := l.Get()
	if err != nil {
		http.Error(w, "Error getting list", 500)
		return
	}

	bytes, err := json.Marshal(items)
	if err != nil {
		http.Error(w, "Error rendering list", 500)
		return
	}

	w.Header().Add("Content-Type", "application/json")
	fmt.Fprintln(w, string(bytes))
}