summaryrefslogtreecommitdiffstats
path: root/roseh.moe.go
diff options
context:
space:
mode:
authorRose Hogenson <rosehogenson@posteo.net>2024-10-25 22:44:33 -0700
committerRose Hogenson <rosehogenson@posteo.net>2024-10-25 22:44:33 -0700
commitc18135d1274d5012196073c0bc021d9868108291 (patch)
tree5d59ee31b4aa9e72fd48fdefdcec426479b94c50 /roseh.moe.go
parentUse tabs. (diff)
downloadroseh.moe-c18135d1274d5012196073c0bc021d9868108291.tar.zst
Get rid of the blog and use webp.
Diffstat (limited to 'roseh.moe.go')
-rw-r--r--roseh.moe.go95
1 files changed, 13 insertions, 82 deletions
diff --git a/roseh.moe.go b/roseh.moe.go
index 98febd1..df86f2d 100644
--- a/roseh.moe.go
+++ b/roseh.moe.go
@@ -10,7 +10,6 @@ import (
"net/http"
"net/http/httputil"
"net/url"
- "slices"
"strings"
"time"
)
@@ -47,89 +46,14 @@ var (
)
var (
- //go:embed templates/blog/post.html.template
- postString string
-
- //go:embed templates/blog/posts
- blogPostFiles embed.FS
-)
-
-func mustParseBlogPostTemplates() map[string]*template.Template {
- base, err := outlineTemplate.Clone()
- if err != nil {
- log.Fatalf("outlineTemplate.Clone: %s", err)
- }
- if _, err := base.New("body").Parse(postString); err != nil {
- log.Fatalf("post.html.template: %s", err)
- }
- postFiles, err := blogPostFiles.ReadDir("templates/blog/posts")
- if err != nil {
- log.Fatalf("read blog post templates: %s", err)
- }
- posts := make(map[string]*template.Template, len(postFiles))
- for _, file := range postFiles {
- fileContent, err := blogPostFiles.ReadFile("templates/blog/posts/" + file.Name())
- if err != nil {
- log.Fatalf("read blog post template %q: %s", file.Name(), err)
- }
- tmpl, err := base.Clone()
- if err != nil {
- log.Fatalf("base.Clone: %s", err)
- }
- if _, err := tmpl.New("post").Parse(string(fileContent)); err != nil {
- log.Fatalf("%q: %s", file.Name(), err)
- }
- posts[strings.TrimSuffix(file.Name(), ".html.template")] = tmpl
- }
- return posts
-}
-
-var blogPostTemplates = mustParseBlogPostTemplates()
-
-func blog(w http.ResponseWriter, r *http.Request) {
- tmpl, ok := blogPostTemplates[strings.TrimPrefix(r.URL.Path, "/blog/")]
- if !ok {
- notFound(w, r)
- return
- }
- if err := tmpl.ExecuteTemplate(w, "outline", nil); err != nil {
- log.Printf("Warning: blog: %s", err)
- }
-}
-
-type blogPost struct {
- Name string
- Slug string
-}
-
-func mustLoadBlogPosts() []blogPost {
- buf := new(strings.Builder)
- posts := make([]blogPost, 0, len(blogPostTemplates))
- for slug, tmpl := range blogPostTemplates {
- buf.Reset()
- if err := tmpl.ExecuteTemplate(buf, "title", nil); err != nil {
- log.Fatalf("blog post %q: title: %s", slug, err)
- }
- posts = append(posts, blogPost{
- Name: buf.String(),
- Slug: slug,
- })
- }
- slices.SortFunc(posts, func(x, y blogPost) int { return strings.Compare(y.Slug, x.Slug) })
- return posts
-}
-
-var (
//go:embed templates/index.html.template
indexString string
indexTemplate = template.Must(template.Must(outlineTemplate.Clone()).New("body").Parse(indexString))
-
- blogPostsList = mustLoadBlogPosts()
)
func index(w http.ResponseWriter, _ *http.Request) {
- if err := indexTemplate.ExecuteTemplate(w, "outline", blogPostsList); err != nil {
+ if err := indexTemplate.ExecuteTemplate(w, "outline", nil); err != nil {
log.Printf("Warning: index: %s", err)
}
}
@@ -150,22 +74,28 @@ func pong(w http.ResponseWriter, _ *http.Request) {
//go:embed static
var staticFiles embed.FS
-func static(w http.ResponseWriter, r *http.Request) {
- fileName := strings.TrimPrefix(r.URL.Path, "/")
- f, err := staticFiles.Open(fileName)
+func serveStaticFile(w http.ResponseWriter, r *http.Request, path string) {
+ f, err := staticFiles.Open(path)
if err != nil {
notFound(w, r)
return
}
defer f.Close()
- http.ServeContent(w, r, fileName, serverStartTime, f.(io.ReadSeeker))
+ http.ServeContent(w, r, path, serverStartTime, f.(io.ReadSeeker))
+}
+
+func static(w http.ResponseWriter, r *http.Request) {
+ serveStaticFile(w, r, strings.TrimPrefix(r.URL.Path, "/"))
+}
+
+func favicon(w http.ResponseWriter, r *http.Request) {
+ serveStaticFile(w, r, "static/favicon.ico")
}
func main() {
flag.Parse()
mux := http.NewServeMux()
- mux.HandleFunc("/blog/", blog)
mux.HandleFunc("/pong", pong)
jellyfinURL, err := url.Parse("http://localhost:8096")
if err != nil {
@@ -173,6 +103,7 @@ func main() {
}
mux.Handle("/cinema/", httputil.NewSingleHostReverseProxy(jellyfinURL))
mux.HandleFunc("/static/", static)
+ mux.HandleFunc("/favicon.ico", favicon)
mux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
if r.URL.Path == "/" {
index(w, r)