package doc import ( "context" "html/template" "log" "net/http" "git.sr.ht/~evanj/cms/internal/c" "git.sr.ht/~evanj/cms/internal/m/tier" "git.sr.ht/~evanj/cms/internal/m/user" "git.sr.ht/~evanj/cms/internal/v" ) var pages = map[string]*template.Template{ "/page/doc": v.MustParse("html/doc.html"), "/page/faq": v.MustParse("html/faq.html"), "/page/terms": v.MustParse("html/terms.html"), "/page/privacy": v.MustParse("html/privacy.html"), "/page/contact": v.MustParse("html/contact.html"), "/page/billing": v.MustParse("html/billing.html"), "/page/stripe": v.MustParse("html/stripe.html"), "/page/tour": v.MustParse("html/tour.html"), } type Doc struct { *c.Controller log *log.Logger } type dber interface { UserGet(ctx context.Context, username, password string) (user.User, error) UserGetFromToken(ctx context.Context, token string) (user.User, error) } func New(c *c.Controller, log *log.Logger) *Doc { return &Doc{c, log} } func (d *Doc) ServeHTTP(w http.ResponseWriter, r *http.Request) { user, _ := d.GetCookieUser(w, r) // Don't need a user for documentation. page, ok := pages[r.URL.Path] if !ok { http.NotFound(w, r) return } q := r.URL.Query() d.HTML(w, r, page, map[string]interface{}{ "User": user, "Tiers": tier.Tiers, // Only used for signup billing. "StripeCheckoutSessionID": q.Get("StripeCheckoutSessionID"), "StripePK": q.Get("StripePK"), }) }