package main import ( "log" "log/slog" "net/http" "os" "gitea.leeworks.dev/0xwheatyz/gitea-mobile/internal/config" giteaclient "gitea.leeworks.dev/0xwheatyz/gitea-mobile/internal/gitea" "gitea.leeworks.dev/0xwheatyz/gitea-mobile/internal/handlers" "gitea.leeworks.dev/0xwheatyz/gitea-mobile/internal/middleware" ) func main() { // Set up structured logging. slog.SetDefault(slog.New(slog.NewJSONHandler(os.Stdout, &slog.HandlerOptions{ Level: slog.LevelInfo, }))) cfg, err := config.Load() if err != nil { log.Fatalf("configuration error: %v", err) } // Create Gitea API client. client := giteaclient.NewClient(cfg.GiteaURL) // Create handler with all routes. mux := http.NewServeMux() h := handlers.NewHandler(cfg, client) h.RegisterRoutes(mux) // Apply middleware chain: logging -> auth. var handler http.Handler = mux handler = middleware.Auth(cfg.SessionSecret, cfg.GiteaToken)(handler) handler = middleware.Logging()(handler) slog.Info("server starting", "addr", cfg.ListenAddr, "gitea_url", cfg.GiteaURL) if err := http.ListenAndServe(cfg.ListenAddr, handler); err != nil { log.Fatalf("server error: %v", err) } }