about summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--config.toml4
-rw-r--r--internal/builder/template.go30
-rw-r--r--templates/feed-styles.xsl4
3 files changed, 16 insertions, 22 deletions
diff --git a/config.toml b/config.toml
index 6fc48a8..db9bab6 100644
--- a/config.toml
+++ b/config.toml
@@ -46,9 +46,9 @@ oidc_host = "https://id.alanpearce.eu/"
   ]
   style-src = [
     ## index.html style
-    "'sha256-bGzdRsb1Yu6TLWwCqsdslYaNhLBikKOD6pFYeGsJ4lc='",
-    ## atom.xml style
     "'sha256-dCSzNS1o8vygl80V2G2nPTiSOUNvyDnW+06hHS4ZdHQ='",
+    ## atom.xml style
+    "'sha256-CFhPA4p8skr5MyhReF+Tk2GzmYzXdECg8zm+o7EOVPI=",
   ]
   frame-ancestors = [
     "https://kagi.com",
diff --git a/internal/builder/template.go b/internal/builder/template.go
index 9d81582..da45fb7 100644
--- a/internal/builder/template.go
+++ b/internal/builder/template.go
@@ -154,34 +154,26 @@ func renderFeed(
 }
 
 func renderFeedStyles() (*strings.Reader, error) {
-	reader, err := loadTemplate("templates/feed-styles.xsl")
+	tpl, err := template.ParseFiles("templates/feed-styles.xsl")
 	if err != nil {
 		return nil, err
 	}
-	defer func() {
-		_, err := reader.Seek(0, io.SeekStart)
-		if err != nil {
-			panic("could not reset reader: " + err.Error())
-		}
-	}()
-	doc, err := xmlquery.Parse(reader)
-	if err != nil {
-		return nil, errors.Wrap(err, "could not parse XML")
-	}
-	expr, err := xpath.CompileWithNS("//xhtml:style", nsMap)
+
+	esc := &strings.Builder{}
+	err = xml.EscapeText(esc, []byte(css))
 	if err != nil {
-		return nil, errors.Wrap(err, "could not parse XML")
+		return nil, err
 	}
-	style := xmlquery.QuerySelector(doc, expr)
-	xmlquery.AddChild(style, &xmlquery.Node{
-		Type: xmlquery.TextNode,
-		Data: css,
+
+	w := &strings.Builder{}
+	err = tpl.Execute(w, map[string]interface{}{
+		"css": esc.String(),
 	})
 
-	return strings.NewReader(doc.OutputXML(true)), nil
+	return strings.NewReader(w.String()), nil
 }
 
-func getFeedStylesHash(r *strings.Reader) (string, error) {
+func getFeedStylesHash(r io.Reader) (string, error) {
 	doc, err := xmlquery.Parse(r)
 	if err != nil {
 		return "", err
diff --git a/templates/feed-styles.xsl b/templates/feed-styles.xsl
index fcca39d..679d064 100644
--- a/templates/feed-styles.xsl
+++ b/templates/feed-styles.xsl
@@ -12,7 +12,9 @@
         <meta charset="utf-8" />
         <meta http-equiv="content-type" content="text/html; charset=utf-8" />
         <meta name="viewport" content="width=device-width, initial-scale=1" />
-        <style></style>
+        <style>
+          {{ .css }}
+        </style>
       </head>
       <body>
         <main>