package handlers import ( "database/sql" "net/http" "paterissa.net/mblog/cmd/web/middleware" "paterissa.net/mblog/cmd/web/types" ) func RegisterEndpoints(app types.Application, db *sql.DB) *http.ServeMux { auth := middleware.AuthMiddleware{ Err: app.Err, Db: db, } blog := blogContext{ err: app.Err, db: db, Name: app.Env.Webmaster, } login := loginContext{ err: app.Err, db: db, } audio := fsContext{ err: app.Err, path: app.AudioDir, contentType: "audio/mpeg", } static := fsContext{ err: app.Err, path: "static", } blogRouter := http.NewServeMux() blogRouter.HandleFunc("/", auth.CheckAndInvalidate(blog.index)) blogRouter.HandleFunc("/post/new", auth.Resolve(blog.post)) blogRouter.HandleFunc("/post", blog.viewPost) blogRouter.HandleFunc("/login", login.handle) blogRouter.HandleFunc("/logout", auth.Resolve(login.logout)) blogRouter.HandleFunc("/audio", audio.readdir) blogRouter.HandleFunc("/audio/get", audio.get) blogRouter.HandleFunc("/static/get", static.get) blogRouter.HandleFunc("/favicon.ico", func(w http.ResponseWriter, r *http.Request) { http.ServeFile(w, r, "./static/favicon.ico") }) return blogRouter }