1package web
2
3import (
4 "html/template"
5 "net/http"
6
7 "github.com/charmbracelet/log/v2"
8 "github.com/charmbracelet/soft-serve/pkg/backend"
9 "github.com/charmbracelet/soft-serve/pkg/config"
10)
11
12type AboutData struct {
13 ReadmeHTML template.HTML
14 ActiveTab string
15 ServerName string
16}
17
18func about(w http.ResponseWriter, r *http.Request) {
19 ctx := r.Context()
20 logger := log.FromContext(ctx)
21 cfg := config.FromContext(ctx)
22 be := backend.FromContext(ctx)
23
24 if be == nil {
25 logger.Debug("backend not found in context")
26 renderInternalServerError(w, r)
27 return
28 }
29
30 readmeHTML, err := getServerReadme(ctx, be)
31 if err != nil {
32 logger.Debug("failed to get server README", "err", err)
33 renderInternalServerError(w, r)
34 return
35 }
36
37 data := AboutData{
38 ReadmeHTML: readmeHTML,
39 ActiveTab: "about",
40 ServerName: cfg.Name,
41 }
42
43 renderHTML(w, "about.html", data)
44}