47 lines
1.3 KiB
Go
47 lines
1.3 KiB
Go
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.Wrapper(
|
|
router,
|
|
middleware.Log,
|
|
middleware.ContentSecurityPolicy,
|
|
middleware.Cors(serverSettings),
|
|
middleware.Corp,
|
|
middleware.Coop,
|
|
)
|
|
}
|