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() authDb := db.NewAuthDbSqlite(d) workoutDb := db.NewWorkoutDbSqlite(d) randomService := service.NewRandomServiceImpl() clockService := service.NewClockServiceImpl() mailService := service.NewMailServiceImpl(serverSettings) authService := service.NewAuthServiceImpl(authDb, randomService, clockService, mailService, serverSettings) workoutService := service.NewWorkoutServiceImpl(workoutDb, randomService, clockService, mailService, serverSettings) indexHandler := NewIndexHandler(d, authService, serverSettings) authHandler := NewHandlerAuth(d, authService, serverSettings) workoutHandler := NewWorkoutHandler(d, workoutService, authService, serverSettings) indexHandler.handle(router) // Serve static files (CSS, JS and images) router.Handle("/static/", http.StripPrefix("/static/", http.FileServer(http.Dir("./static/")))) workoutHandler.handle(router) authHandler.handle(router) return middleware.Logging(middleware.ContentSecurityPolicy(middleware.EnableCors(serverSettings, router))) }