Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Social: add page to show HTTP header |
---|---|
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA3-256: |
6caac07ba326295b29622a2dbc0f5869 |
User & Date: | stern 2024-03-27 16:52:00 |
Context
2024-03-27
| ||
17:22 | Social: rename PAGE-ROOT to DATA-ROOT ... (check-in: 04f55cea87 user: stern tags: trunk) | |
16:52 | Social: add page to show HTTP header ... (check-in: 6caac07ba3 user: stern tags: trunk) | |
15:26 | Social: refactor handler registration ... (check-in: f2d098304c user: stern tags: trunk) | |
Changes
Changes to social/social.go.
︙ | ︙ | |||
83 84 85 86 87 88 89 90 91 92 93 94 95 96 | webui, err := wui.NewWebUI(cfg.MakeLogger("WebUI"), cfg.TemplateRoot, cfg.Site) if err != nil { return err } userAgentsHandler := webui.MakeGetAllUAHandler(usecase.NewGetAllUserAgents(uaColl)) var handlerMap = map[string]http.HandlerFunc{ "html": webui.MakeGetPageHandler(cfg.PageRoot), "test": webui.MakeTestHandler(), "user-agents": userAgentsHandler, } h.HandleFunc("GET /", webui.MakeDocumentHandler(cfg.DocumentRoot)) if site := cfg.Site; site != nil { | > | 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 | webui, err := wui.NewWebUI(cfg.MakeLogger("WebUI"), cfg.TemplateRoot, cfg.Site) if err != nil { return err } userAgentsHandler := webui.MakeGetAllUAHandler(usecase.NewGetAllUserAgents(uaColl)) var handlerMap = map[string]http.HandlerFunc{ "header": webui.MakeHeaderHandler(), "html": webui.MakeGetPageHandler(cfg.PageRoot), "test": webui.MakeTestHandler(), "user-agents": userAgentsHandler, } h.HandleFunc("GET /", webui.MakeDocumentHandler(cfg.DocumentRoot)) if site := cfg.Site; site != nil { |
︙ | ︙ |
Changes to social/web/wui/bindings.go.
︙ | ︙ | |||
52 53 54 55 56 57 58 59 60 61 62 63 64 65 | &sxbuiltins.BeginS, // begin } builtins = []*sxeval.Builtin{ &sxbuiltins.Equal, // = &sxbuiltins.NullP, // null? &sxbuiltins.Car, &sxbuiltins.Cdr, // car, cdr &sxbuiltins.Caar, &sxbuiltins.Cadr, // caar, cadr &sxbuiltins.Cadar, // cadar &sxbuiltins.LengthGreater, // length> &sxbuiltins.List, // list &sxbuiltins.Map, // map &sxbuiltins.BoundP, // bound? } ) | > | 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 | &sxbuiltins.BeginS, // begin } builtins = []*sxeval.Builtin{ &sxbuiltins.Equal, // = &sxbuiltins.NullP, // null? &sxbuiltins.Car, &sxbuiltins.Cdr, // car, cdr &sxbuiltins.Caar, &sxbuiltins.Cadr, // caar, cadr &sxbuiltins.Cdar, // cdar &sxbuiltins.Cadar, // cadar &sxbuiltins.LengthGreater, // length> &sxbuiltins.List, // list &sxbuiltins.Map, // map &sxbuiltins.BoundP, // bound? } ) |
︙ | ︙ | |||
206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 | lb.Add(makeSimpleLink(sx.String(st.Path(node)), sx.String(node.Title()))) return lb.List() } var ( symA = sx.MakeSymbol("a") symClass = sx.MakeSymbol("class") symHref = sx.MakeSymbol("href") symLI = sx.MakeSymbol("li") symP = sx.MakeSymbol("p") symUL = sx.MakeSymbol("ul") ) func makeSimpleLink(href, text sx.String) *sx.Pair { return sx.MakeList( symA, sx.MakeList(sxhtml.SymAttr, sx.Cons(symHref, href)), text) } | > > > | 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 | lb.Add(makeSimpleLink(sx.String(st.Path(node)), sx.String(node.Title()))) return lb.List() } var ( symA = sx.MakeSymbol("a") symClass = sx.MakeSymbol("class") symDD = sx.MakeSymbol("dd") symDL = sx.MakeSymbol("dl") symDT = sx.MakeSymbol("dt") symHref = sx.MakeSymbol("href") symLI = sx.MakeSymbol("li") symP = sx.MakeSymbol("p") symUL = sx.MakeSymbol("ul") ) func makeSimpleLink(href, text sx.String) *sx.Pair { return sx.MakeList( symA, sx.MakeList(sxhtml.SymAttr, sx.Cons(symHref, href)), text) } |
Added social/web/wui/header.go.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | //----------------------------------------------------------------------------- // Copyright (c) 2024-present Detlef Stern // // This file is part of Zettel Social // // Zettel Social is licensed under the latest version of the EUPL (European // Union Public License). Please see file LICENSE.txt for your rights and // obligations under this license. // // SPDX-License-Identifier: EUPL-1.2 // SPDX-FileCopyrightText: 2024-present Detlef Stern //----------------------------------------------------------------------------- package wui import ( "net/http" "slices" "zettelstore.de/sx.fossil" ) // MakeHeaderHandler returns a HTTP handler that shows all HTTP header. func (wui *WebUI) MakeHeaderHandler() http.HandlerFunc { symHTTPHeader := sx.MakeSymbol("http-header") return func(w http.ResponseWriter, r *http.Request) { keys := make([]string, 0, len(r.Header)) for key := range r.Header { keys = append(keys, key) } slices.Sort(keys) var headerList sx.ListBuilder headerList.Add(symDL) for _, key := range keys { headerList.Add(sx.MakeList(symDT, sx.String(key))) for _, val := range r.Header[key] { headerList.Add(sx.MakeList(symDD, sx.String(val))) } } rb := wui.makeRenderBinding("user-agent", r) rb.bindObject("HEADER-DL", headerList.List()) wui.renderTemplate(w, symHTTPHeader, rb) } } |
Name change from social/web/wui/useragent.sxc to social/web/wui/social.sxc.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | ;;;---------------------------------------------------------------------------- ;;; Copyright (c) 2024-present Detlef Stern ;;; ;;; This file is part of Zettel Social. ;;; ;;; Zettel Social is licensed under the latest version of the EUPL (European ;;; Union Public License). Please see file LICENSE.txt for your rights and ;;; obligations under this license. ;;; ;;; SPDX-License-Identifier: EUPL-1.2 ;;; SPDX-FileCopyrightText: 2024-present Detlef Stern ;;;---------------------------------------------------------------------------- ;;; Node "User Agents" | > > | | | | > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | ;;;---------------------------------------------------------------------------- ;;; Copyright (c) 2024-present Detlef Stern ;;; ;;; This file is part of Zettel Social. ;;; ;;; Zettel Social is licensed under the latest version of the EUPL (European ;;; Union Public License). Please see file LICENSE.txt for your rights and ;;; obligations under this license. ;;; ;;; SPDX-License-Identifier: EUPL-1.2 ;;; SPDX-FileCopyrightText: 2024-present Detlef Stern ;;;---------------------------------------------------------------------------- ;;; SXC code for social nodes. ;;; Node "User Agents" (defun string->item (s) `(li ,s)) (define-template user-agents `( (h1 ,TITLE) (ul ,@(map string->item ALLOWED-AGENTS)) ,@(if (length> BLOCKED-AGENTS 0) `((h2 "Blockiert") (ul ,@(map string->item BLOCKED-AGENTS)))) (a (@ (href "?plain")) "plain") ) ) ;;; Node "HTTP Header" (define-template http-header `((h1 ,TITLE) ,HEADER-DL) ) |
Changes to social/web/wui/wui.go.
︙ | ︙ | |||
126 127 128 129 130 131 132 | //go:embed layout.sxc var contentLayoutSxc []byte //go:embed page.sxc var contentPageSec []byte | | | | | 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 | //go:embed layout.sxc var contentLayoutSxc []byte //go:embed page.sxc var contentPageSec []byte //go:embed social.sxc var contentSocialSxc []byte var staticSxc = [][]byte{ contentPreludeSxc, contentTemplateSxc, contentLayoutSxc, contentPageSec, contentSocialSxc, } func (wui *WebUI) evalReader(env *sxeval.Environment, rdr *sxreader.Reader) error { for { obj, err := rdr.Read() if err != nil { if err == io.EOF { |
︙ | ︙ |