package main import ( "log" "net/http" "omctf.ru/block-game-backend/auth" "omctf.ru/block-game-backend/auth/session" "omctf.ru/block-game-backend/db" "omctf.ru/block-game-backend/route" "omctf.ru/block-game-backend/utils" "github.com/gorilla/mux" _ "github.com/lib/pq" ) func main() { // to log line numbers log.SetFlags(log.LstdFlags | log.Lshortfile) db.Initialize() defer db.Close() err := session.Initialize() if err != nil { log.Fatalf("failed to initialize session: %v", err) } go utils.OccasionallyCleanUp() // Setup HTTP routes r := mux.NewRouter() authRouter := r.PathPrefix("/auth").Subrouter() authRouter.HandleFunc("/login", route.Login).Methods("POST") authRouter.HandleFunc("/register", route.Register).Methods("POST") authRouter.HandleFunc("/logout", route.Logout).Methods("POST") userRouter := r.PathPrefix("/user").Subrouter() userRouter.Use(auth.Middleware) userRouter.HandleFunc("", route.Whoami).Methods("GET") userRouter.HandleFunc("", route.GetUser).Methods("POST") userRouter.HandleFunc("/level", route.FindLevel).Methods("GET") userRouter.HandleFunc("/level", route.CreateLevel).Methods("POST") userRouter.HandleFunc("/levels", route.ListLevels).Methods("GET") userRouter.HandleFunc("/level/{levelId:[0-9]+}", route.GetLevel).Methods("GET") userRouter.HandleFunc("/level/{levelId:[0-9]+}/play", route.PlayLevel).Methods("GET") userRouter.HandleFunc("/level/invite", route.InviteToLevel).Methods("POST") log.Println("Server starting on :8080") log.Fatal(http.ListenAndServe(":8080", r)) }