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, } feeds := rssContext{ err: app.Err, db: db, } constructor := rssExportContext{ err: app.Err, db: db, serv: app.Env.Serv, } 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("/feeds", auth.CheckAndInvalidate(feeds.index)) blogRouter.HandleFunc("/feeds/new", auth.Resolve(feeds.new)) blogRouter.HandleFunc("/feed", feeds.feed) blogRouter.HandleFunc("/feed.rss", constructor.feed) blogRouter.HandleFunc("/audio", audio.readdir) blogRouter.HandleFunc("/audio/get", audio.get) blogRouter.HandleFunc("/static/get", static.get) return blogRouter }