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 BaseData
14 ReadmeHTML template.HTML
15}
16
17func about(w http.ResponseWriter, r *http.Request) {
18 ctx := r.Context()
19 logger := log.FromContext(ctx)
20 cfg := config.FromContext(ctx)
21 be := backend.FromContext(ctx)
22
23 if be == nil {
24 logger.Debug("backend not found in context")
25 renderInternalServerError(w, r)
26 return
27 }
28
29 readmeHTML, err := getServerReadme(ctx, be)
30 if err != nil {
31 logger.Debug("failed to get server README", "err", err)
32 renderInternalServerError(w, r)
33 return
34 }
35
36 data := AboutData{
37 BaseData: BaseData{
38 ServerName: cfg.Name,
39 ActiveTab: "about",
40 Title: "About | " + cfg.Name,
41 },
42 ReadmeHTML: readmeHTML,
43 }
44
45 renderHTML(w, "about.html", data)
46}