package main import ( "net/http" "github.com/julienschmidt/httprouter" "github.com/justinas/alice" ) // routes ... func (app *application) routes() http.Handler { router := httprouter.New() router.NotFound = http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { app.notFound(w) }) router.MethodNotAllowed = http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { app.clientError(w, http.StatusMethodNotAllowed) }) // setup server for static files fileServer := http.FileServer(http.Dir("./ui/static")) router.Handler(http.MethodGet, "/static/*filepath", http.StripPrefix("/static", fileServer)) dynamic := alice.New(app.sessionManager.LoadAndSave) router.Handler(http.MethodGet, "/", dynamic.ThenFunc(app.home)) router.Handler(http.MethodGet, "/snippet/view/:id", dynamic.ThenFunc(app.snippetView)) router.Handler(http.MethodGet, "/snippet/create", dynamic.ThenFunc(app.snippetCreate)) router.Handler(http.MethodPost, "/snippet/create", dynamic.ThenFunc(app.snippetCreatePost)) router.Handler(http.MethodGet, "/user/signup", dynamic.ThenFunc(app.userSignup)) router.Handler(http.MethodPost, "/user/signup", dynamic.ThenFunc(app.userSignupPost)) // router.Handler(http.MethodGet, "/user/login", dynamic.ThenFunc(app.userLogin)) // router.Handler(http.MethodPost, "/user/login", dynamic.ThenFunc(app.userLoginPost)) standard := alice.New(app.recoverPanic, app.logRequest, secureHeaders) return standard.Then(router) }