pages.go 977 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. package pages
  2. import (
  3. "fmt"
  4. "html/template"
  5. "net/http"
  6. "gogs.gildas.ch/gildas/movies"
  7. "gogs.gildas.ch/gildas/movies/omdb"
  8. )
  9. func List(c *movies.Collection) http.HandlerFunc {
  10. return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
  11. t, err := template.ParseFiles("templates/list.html")
  12. if err != nil {
  13. fmt.Println(err)
  14. return
  15. }
  16. var errs []error
  17. if r.Method == "POST" {
  18. m, err := movies.Unmarshal([]byte(r.FormValue("omdb_json")))
  19. if err != nil {
  20. w.WriteHeader(http.StatusBadRequest)
  21. errs = append(errs, err)
  22. return
  23. }
  24. c.Add(m)
  25. }
  26. var omdbString string
  27. if imdbID := r.URL.Query().Get("imdb_id"); imdbID != "" {
  28. b, err := omdb.Get(imdbID)
  29. if err != nil {
  30. errs = append(errs, err)
  31. } else {
  32. omdbString = string(b)
  33. }
  34. }
  35. t.Execute(w, map[string]interface{}{
  36. "Collection": c,
  37. "IMDBID": r.URL.Query().Get("imdb_id"),
  38. "OMDBString": omdbString,
  39. "Errors": errs,
  40. })
  41. })
  42. }