79 lines
1.7 KiB
Go
79 lines
1.7 KiB
Go
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)
|
|
}
|