api.go 767 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. package api
  2. import (
  3. "encoding/json"
  4. "io/ioutil"
  5. "net/http"
  6. "gogs.gildas.ch/gildas/movies"
  7. )
  8. type Error struct {
  9. Error string `json: "error"`
  10. }
  11. func returnError(w http.ResponseWriter, status int, err error) {
  12. w.Header().Set("Content-Type", "application/json")
  13. w.WriteHeader(status)
  14. json.NewEncoder(w).Encode(Error{Error: err.Error()})
  15. }
  16. func AddMovieHandler(c *movies.Collection) http.HandlerFunc {
  17. return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
  18. if r.Method != "POST" {
  19. return
  20. }
  21. b, err := ioutil.ReadAll(r.Body)
  22. if err != nil {
  23. returnError(w, http.StatusBadRequest, err)
  24. return
  25. }
  26. m, err := movies.Unmarshal(b)
  27. if err != nil {
  28. returnError(w, http.StatusBadRequest, err)
  29. return
  30. }
  31. c.Add(m)
  32. })
  33. }