hibiscus/serve.go

50 lines
1.5 KiB
Go
Raw Normal View History

2024-03-15 18:34:24 +03:00
package main
import (
"github.com/go-chi/chi/v5"
"github.com/go-chi/chi/v5/middleware"
2024-03-18 19:33:57 +03:00
"log"
2024-03-20 16:18:23 +03:00
"log/slog"
2024-03-15 18:34:24 +03:00
"net/http"
"strconv"
)
2024-03-28 10:42:52 +03:00
// Serve starts the app's web server
2024-03-15 18:34:24 +03:00
func Serve() {
r := chi.NewRouter()
r.Use(middleware.Logger, middleware.CleanPath, middleware.StripSlashes)
2024-03-26 14:00:32 +03:00
r.Use(BasicAuth) // Is this good enough? Sure hope so
r.NotFound(NotFound)
2024-03-15 18:34:24 +03:00
// Routes ==========
r.Get("/", GetToday)
r.Post("/", PostToday)
r.Get("/day", GetDays)
r.Get("/day/{day}", GetDay)
2024-03-30 14:22:03 +03:00
r.Get("/notes", GetNotes)
r.Get("/notes/{note}", GetNote)
r.Post("/notes/{note}", PostNote)
2024-03-15 18:34:24 +03:00
// API =============
apiRouter := chi.NewRouter()
2024-03-18 20:04:14 +03:00
apiRouter.Get("/readme", func(w http.ResponseWriter, r *http.Request) { GetFile("readme", w) })
2024-03-15 18:34:24 +03:00
apiRouter.Post("/readme", func(w http.ResponseWriter, r *http.Request) { PostFile("readme", w, r) })
apiRouter.Get("/day", func(w http.ResponseWriter, r *http.Request) { GetFileList("day", w) })
apiRouter.Get("/day/{day}", GetDayApi)
apiRouter.Get("/notes", func(w http.ResponseWriter, r *http.Request) { GetFileList("notes", w) })
2024-03-30 14:22:03 +03:00
apiRouter.Get("/notes/{note}", GetNoteApi)
apiRouter.Post("/notes/{note}", PostNoteApi)
apiRouter.Get("/today", GetTodayApi)
apiRouter.Post("/today", PostTodayApi)
2024-03-23 15:36:01 +03:00
apiRouter.Get("/export", GetExport)
2024-03-15 18:34:24 +03:00
r.Mount("/api", apiRouter)
// Static files
fs := http.FileServer(http.Dir("public"))
2024-03-18 20:04:14 +03:00
r.Handle("/public/*", http.StripPrefix("/public/", fs))
2024-03-15 18:34:24 +03:00
2024-03-20 16:18:23 +03:00
slog.Info("🌺 Website working", "port", Cfg.Port)
2024-05-04 14:29:49 +03:00
slog.Debug("Debug mode enabled")
2024-03-18 19:33:57 +03:00
log.Fatal(http.ListenAndServe(":"+strconv.Itoa(Cfg.Port), r))
2024-03-15 18:34:24 +03:00
}