package api import ( "encoding/json" "io/ioutil" "net/http" "gogs.gildas.ch/gildas/movies" ) type Error struct { Error string `json: "error"` } func returnError(w http.ResponseWriter, status int, err error) { w.Header().Set("Content-Type", "application/json") w.WriteHeader(status) json.NewEncoder(w).Encode(Error{Error: err.Error()}) } func AddMovieHandler(c *movies.Collection) http.HandlerFunc { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { if r.Method != "POST" { return } b, err := ioutil.ReadAll(r.Body) if err != nil { returnError(w, http.StatusBadRequest, err) return } m, err := movies.Unmarshal(b) if err != nil { returnError(w, http.StatusBadRequest, err) return } c.Add(m) }) }