You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
46 lines
2.4 KiB
Go
46 lines
2.4 KiB
Go
package server
|
|
|
|
import (
|
|
"database/sql"
|
|
"log/slog"
|
|
"net/http"
|
|
|
|
"git.runcible.io/learning/ratchet/internal/model"
|
|
"github.com/alexedwards/scs/v2"
|
|
"github.com/go-playground/form/v4"
|
|
)
|
|
|
|
func addRoutes(mux *http.ServeMux,
|
|
logger *slog.Logger,
|
|
tc *TemplateCache,
|
|
db *sql.DB,
|
|
fd *form.Decoder,
|
|
sm *scs.SessionManager,
|
|
userService *model.UserService,
|
|
snippetService *model.SnippetService) http.Handler {
|
|
|
|
mux.Handle("GET /ping", PingHandler())
|
|
|
|
// /{$} is used to prevent subtree path patterns from acting like a wildcard
|
|
// resulting in this route requiring an exact match on "/" only
|
|
// You can only include one HTTP method in a route pattern if you choose
|
|
// GET will match GET & HEAD http request methods
|
|
mux.Handle("GET /{$}", sm.LoadAndSave(NoSurfMiddleware(AuthenticateMiddleware(handleHome(logger, tc, sm, snippetService), sm, userService)))) // might be time to swith to github.com/justinas/alice dynamic chain
|
|
mux.Handle("GET /snippet/view/{id}", sm.LoadAndSave(NoSurfMiddleware(AuthenticateMiddleware(handleSnippetView(logger, tc, sm, snippetService), sm, userService))))
|
|
mux.Handle("GET /snippet/create", sm.LoadAndSave(NoSurfMiddleware(AuthenticateMiddleware(RequireAuthenticationMiddleware(handleSnippetCreateGet(tc, sm), sm), sm, userService))))
|
|
mux.Handle("POST /snippet/create", sm.LoadAndSave(NoSurfMiddleware(AuthenticateMiddleware(RequireAuthenticationMiddleware(handleSnippetCreatePost(logger, tc, fd, sm, snippetService), sm), sm, userService))))
|
|
// mux.Handle("/something", handleSomething(logger, config))
|
|
// mux.Handle("/healthz", handleHealthzPlease(logger))
|
|
// mux.Handle("/", http.NotFoundHandler())
|
|
|
|
mux.Handle("GET /user/signup", sm.LoadAndSave(NoSurfMiddleware(AuthenticateMiddleware(handleUserSignupGet(tc, sm), sm, userService))))
|
|
mux.Handle("POST /user/signup", sm.LoadAndSave(NoSurfMiddleware(AuthenticateMiddleware(handleUserSignupPost(logger, tc, fd, sm, userService), sm, userService))))
|
|
mux.Handle("GET /user/login", sm.LoadAndSave(NoSurfMiddleware(AuthenticateMiddleware(handleUserLoginGet(tc, sm), sm, userService))))
|
|
mux.Handle("POST /user/login", sm.LoadAndSave(NoSurfMiddleware(AuthenticateMiddleware(handleUserLoginPost(logger, tc, sm, fd, userService), sm, userService))))
|
|
|
|
// Requires auth
|
|
mux.Handle("POST /user/logout", sm.LoadAndSave(NoSurfMiddleware(AuthenticateMiddleware(RequireAuthenticationMiddleware(handleUserLogoutPost(logger, sm), sm), sm, userService))))
|
|
|
|
return mux
|
|
}
|