From 34bfed8ee79aaa1b838aceec95b1694c729c3ab2 Mon Sep 17 00:00:00 2001 From: jolheiser Date: Thu, 7 Jul 2022 20:16:17 +0000 Subject: [PATCH] Add image/asset inclusion (#2) Co-authored-by: jolheiser Reviewed-on: https://git.jojodev.com/jolheiser/blog/pulls/2 --- _example/test3/gophercool.png | Bin 0 -> 13525 bytes _example/test3/index.md | 9 +++++++ router/router.go | 45 +++++++++++++++++++++++++++++++++- static/index.tmpl | 2 +- static/post.tmpl | 4 +-- 5 files changed, 56 insertions(+), 4 deletions(-) create mode 100644 _example/test3/gophercool.png create mode 100644 _example/test3/index.md diff --git a/_example/test3/gophercool.png b/_example/test3/gophercool.png new file mode 100644 index 0000000000000000000000000000000000000000..5705e95dc8b2053dc195cb7a80453c723e8ce218 GIT binary patch literal 13525 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 literal 0 HcmV?d00001 diff --git a/_example/test3/index.md b/_example/test3/index.md new file mode 100644 index 0000000..703628f --- /dev/null +++ b/_example/test3/index.md @@ -0,0 +1,9 @@ +--- +title = "Cool" +date = 2022-07-07 +tags = ["gopher", "cool"] +--- + +# Cool + +![gophercool](./gophercool.png) \ No newline at end of file diff --git a/router/router.go b/router/router.go index 4a3ac14..9c2901f 100644 --- a/router/router.go +++ b/router/router.go @@ -1,7 +1,9 @@ package router import ( + "fmt" "net/http" + "path/filepath" "go.jolheiser.com/blog/post" "go.jolheiser.com/blog/static" @@ -18,7 +20,10 @@ func New(blog *post.Blog) *chi.Mux { m.Use(middleware.Recoverer) m.Get("/", indexHandler(blog)) - m.Get("/{post}", fileHandler(blog)) + m.Route("/{post}", func(r chi.Router) { + r.With(slashesMiddleware).Get("/", fileHandler(blog)) + r.Get("/{asset}", assetHandler(blog)) + }) m.Route("/_", func(r chi.Router) { r.Get("/sakura.css", static.SakuraCSS) }) @@ -48,3 +53,41 @@ func fileHandler(blog *post.Blog) http.HandlerFunc { } } } + +func assetHandler(blog *post.Blog) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + postName := chi.URLParam(r, "post") + p, ok := blog.Post(postName) + if !ok { + w.WriteHeader(http.StatusNotFound) + return + } + + assetName := chi.URLParam(r, "asset") + apn := filepath.Join(filepath.Dir(p.Path), assetName) + http.ServeFile(w, r, apn) + } +} + +func slashesMiddleware(next http.Handler) http.Handler { + fn := func(w http.ResponseWriter, r *http.Request) { + var path string + rctx := chi.RouteContext(r.Context()) + if rctx != nil && rctx.RoutePath != "" { + path = rctx.RoutePath + } else { + path = r.URL.Path + } + if len(path) > 1 && path[len(path)-1] != '/' { + path += "/" + if r.URL.RawQuery != "" { + path = fmt.Sprintf("%s?%s", path, r.URL.RawQuery) + } + redirectURL := fmt.Sprintf("//%s%s", r.Host, path) + http.Redirect(w, r, redirectURL, 301) + return + } + next.ServeHTTP(w, r) + } + return http.HandlerFunc(fn) +} diff --git a/static/index.tmpl b/static/index.tmpl index f2d61f5..7e59186 100644 --- a/static/index.tmpl +++ b/static/index.tmpl @@ -22,7 +22,7 @@

Blog Posts

{{range .SortedPosts}}
- {{.Title}}
+ {{.Title}}
{{if .Author}}@{{.Author}}{{end}}{{.Date.Format "Jan 2, 2006"}}
{{range .Tags}}{{.}} {{end}}
diff --git a/static/post.tmpl b/static/post.tmpl index 66b1ce1..4f1ebef 100644 --- a/static/post.tmpl +++ b/static/post.tmpl @@ -4,10 +4,10 @@ {{.Title}} - + - Index + Index {{.Content}}