package main import ( "encoding/json" "fmt" "log" "net/http" "strconv" "github.com/gorilla/mux" ) func homeLink(w http.ResponseWriter, r *http.Request) { movies, err := db.GetMovies() if err != nil { log.Fatal("Error showing homepage (all movies)") } json.NewEncoder(w).Encode(movies) } func getMovies(w http.ResponseWriter, r *http.Request) { movies, err := db.GetMovies() if err != nil { log.Fatal("Error getting all movies") } json.NewEncoder(w).Encode(movies) } func getOneMovie(w http.ResponseWriter, r *http.Request) { movieIDstr := mux.Vars(r)["id"] movieID, err := strconv.Atoi(movieIDstr) if err != nil { log.Println("Error: invalid movie ID passed") return } mov, err := db.GetMovieById(movieID) if err != nil { log.Fatal("Error getting one movie") } json.NewEncoder(w).Encode(mov) } func getTaggedMovies(w http.ResponseWriter, r *http.Request) { tagIDstr := mux.Vars(r)["id"] tagID, err := strconv.Atoi(tagIDstr) if err != nil { fmt.Fprintf(w, "Error: invalid tag ID passed") return } movies, err := db.GetMoviesByTag(tagID) if err != nil { fmt.Fprintf(w, "Error fetching movies by tag") return } json.NewEncoder(w).Encode(movies) } func getTags(w http.ResponseWriter, r *http.Request) { tags, err := db.GetTags() if err != nil { log.Fatal("Error getting all tags") } json.NewEncoder(w).Encode(tags) } func getOneTag(w http.ResponseWriter, r *http.Request) { tagIDstr := mux.Vars(r)["id"] tagID, err := strconv.Atoi(tagIDstr) if err != nil { log.Println("Error: invalid tag ID passed") return } tag, err := db.GetTagById(tagID) if err != nil { log.Fatal("Error getting one tag") } json.NewEncoder(w).Encode(tag) }