Added movie page and route handler
This commit is contained in:
37
handler/movie.go
Normal file
37
handler/movie.go
Normal file
@@ -0,0 +1,37 @@
|
||||
package handler
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
"projectreshoot/config"
|
||||
"projectreshoot/tmdb"
|
||||
"projectreshoot/view/page"
|
||||
"strconv"
|
||||
|
||||
"github.com/rs/zerolog"
|
||||
)
|
||||
|
||||
func Movie(
|
||||
logger *zerolog.Logger,
|
||||
config *config.Config,
|
||||
) http.Handler {
|
||||
return http.HandlerFunc(
|
||||
func(w http.ResponseWriter, r *http.Request) {
|
||||
id := r.PathValue("movie_id")
|
||||
movie_id, err := strconv.ParseInt(id, 10, 32)
|
||||
if err != nil {
|
||||
ErrorPage(http.StatusNotFound, w, r)
|
||||
logger.Error().Err(err).Str("movie_id", id).
|
||||
Msg("Error occured getting the movie")
|
||||
return
|
||||
}
|
||||
movie, err := tmdb.GetMovie(int32(movie_id), config.TMDBToken)
|
||||
if err != nil {
|
||||
ErrorPage(http.StatusInternalServerError, w, r)
|
||||
logger.Error().Err(err).Int32("movie_id", int32(movie_id)).
|
||||
Msg("Error occured getting the movie")
|
||||
return
|
||||
}
|
||||
page.Movie(movie).Render(r.Context(), w)
|
||||
},
|
||||
)
|
||||
}
|
||||
@@ -60,4 +60,7 @@ func addRoutes(
|
||||
route("POST /change-username", loggedIn(fresh(handler.ChangeUsername(logger, conn))))
|
||||
route("POST /change-bio", loggedIn(handler.ChangeBio(logger, conn)))
|
||||
route("POST /change-password", loggedIn(fresh(handler.ChangePassword(logger, conn))))
|
||||
|
||||
// Movie page
|
||||
route("GET /movie/{movie_id}", handler.Movie(logger, config))
|
||||
}
|
||||
|
||||
30
view/page/movie.templ
Normal file
30
view/page/movie.templ
Normal file
@@ -0,0 +1,30 @@
|
||||
package page
|
||||
|
||||
import "projectreshoot/tmdb"
|
||||
import "projectreshoot/view/layout"
|
||||
import "fmt"
|
||||
|
||||
func formatRuntime(minutes int) string {
|
||||
hours := minutes / 60
|
||||
mins := minutes % 60
|
||||
return fmt.Sprintf("%dh %02dm", hours, mins)
|
||||
}
|
||||
|
||||
templ Movie(movie *tmdb.Movie) {
|
||||
@layout.Global() {
|
||||
<div class="bg-surface0">
|
||||
<div class="">
|
||||
<div class="bg-overlay2">{ movie.Poster }</div>
|
||||
<div class="">
|
||||
<span class="">
|
||||
{ movie.Title }
|
||||
</span>
|
||||
<span class="">
|
||||
{ formatRuntime(movie.Runtime) }
|
||||
- { movie.ReleaseDate[:4] }
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user