package handler import ( "me-fit/db" "me-fit/middleware" "me-fit/service" "me-fit/types" "database/sql" "net/http" ) func GetHandler(d *sql.DB, serverSettings *types.ServerSettings) http.Handler { var router = http.NewServeMux() router.HandleFunc("/", service.HandleIndexAnd404(d, serverSettings)) randomGenerator := service.NewRandomGeneratorImpl() clock := service.NewClockImpl() dbAuth := db.NewDbAuthSqlite(d) serviceAuth := service.NewServiceAuthImpl(dbAuth, randomGenerator, clock, serverSettings) handlerAuth := NewHandlerAuth(d, serviceAuth, serverSettings) // Serve static files (CSS, JS and images) router.Handle("/static/", http.StripPrefix("/static/", http.FileServer(http.Dir("./static/")))) handleWorkout(d, router, serverSettings) handlerAuth.handle(router) return middleware.Logging(middleware.EnableCors(serverSettings, router)) } func authMiddleware(db *sql.DB, h http.Handler) http.Handler { return middleware.EnsureValidSession(db, h) }