godash/handlers/app.handlers.go

73 lines
1.8 KiB
Go
Raw Normal View History

2024-03-12 15:49:08 +01:00
package handlers
import (
2024-04-04 09:25:59 +02:00
"log/slog"
"net/http"
2024-04-04 09:25:59 +02:00
"github.com/logto-io/go/client"
"github.com/logto-io/go/core"
2024-03-12 15:49:08 +01:00
"gitlab.unjx.de/flohoss/godash/internal/env"
"gitlab.unjx.de/flohoss/godash/services"
"gitlab.unjx.de/flohoss/godash/views/home"
)
type BookmarkService interface {
GetAllBookmarks() *services.Bookmarks
}
type SystemService interface {
GetLiveInformation() *services.LiveInformation
GetStaticInformation() *services.StaticInformation
}
2024-03-15 18:56:32 +01:00
type WeatherService interface {
GetCurrentWeather() *services.OpenWeather
}
2024-03-25 20:31:51 +01:00
func NewAppHandler(env *env.Config, authHandler *AuthHandler, s SystemService, w WeatherService, b BookmarkService) *AppHandler {
2024-03-12 15:49:08 +01:00
return &AppHandler{
env: env,
2024-03-25 20:31:51 +01:00
authHandler: authHandler,
systemService: s,
weatherService: w,
bookmarkService: b,
2024-03-12 15:49:08 +01:00
}
}
type AppHandler struct {
env *env.Config
2024-03-25 20:31:51 +01:00
authHandler *AuthHandler
systemService SystemService
weatherService WeatherService
bookmarkService BookmarkService
2024-03-12 15:49:08 +01:00
}
func (bh *AppHandler) appHandler(w http.ResponseWriter, r *http.Request) {
2024-03-25 20:31:51 +01:00
bookmarks := bh.bookmarkService.GetAllBookmarks()
staticSystem := bh.systemService.GetStaticInformation()
liveSystem := bh.systemService.GetLiveInformation()
weather := bh.weatherService.GetCurrentWeather()
2024-03-26 10:25:19 +01:00
2024-04-04 09:25:59 +02:00
var claims *core.IdTokenClaims
if bh.authHandler.sessionManager != nil {
logtoClient := client.NewLogtoClient(
bh.authHandler.logtoConfig,
&SessionStorage{
sessionManager: bh.authHandler.sessionManager,
write: w,
request: r,
},
)
c, err := logtoClient.GetIdTokenClaims()
if err != nil {
slog.Warn("cannot get id token claims", "err", err)
}
claims = &c
}
2024-03-12 15:49:08 +01:00
titlePage := bh.env.Title
2024-04-04 09:25:59 +02:00
home.HomeIndex(titlePage, bh.env.Version, home.Home(titlePage, claims, bookmarks, staticSystem, liveSystem, weather)).Render(r.Context(), w)
2024-03-12 15:49:08 +01:00
}