From c79b18d5a7d3b47ea5db495b4d6a6faf0b7dbb11 Mon Sep 17 00:00:00 2001 From: Mitch Riedstra Date: Sun, 22 Dec 2019 09:46:17 -0500 Subject: Add support for a 404 page --- page/http.go | 20 +++++++++++++++++--- page/page.go | 6 ++++-- 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/page/http.go b/page/http.go index acf9147..98546f6 100644 --- a/page/http.go +++ b/page/http.go @@ -4,6 +4,7 @@ import ( "log" "net/http" "path/filepath" + "strings" ) func SetupHandlers() { @@ -22,9 +23,22 @@ func PageHandler(w http.ResponseWriter, r *http.Request) { p := &Page{Name: u} err := p.Render(w) if err != nil { - log.Println(err) - http.Error(w, "Internal server error", 500) - return + if strings.HasSuffix(err.Error(), "no such file or directory") { + log.Printf("Page '%s' not found, trying 404", p.Name) + p.Name = "404" + w.WriteHeader(404) + err := p.Render(w) + if err != nil { + log.Println(err) + http.Error(w, "Internal server error", 500) + return + } + return + } else { + log.Println(err) + http.Error(w, "Internal server error", 500) + return + } } } diff --git a/page/page.go b/page/page.go index 83e3c9e..f5a296c 100644 --- a/page/page.go +++ b/page/page.go @@ -60,9 +60,11 @@ func (p *Page) readYaml() error { } func (p *Page) readMarkdown() error { - b, err := ioutil.ReadFile(p.Name + ".md") + pth := p.Name + ".md" + b, err := ioutil.ReadFile(pth) if err != nil { - return err + return fmt.Errorf("Error while reading markdown for path %s: %v", + pth, err) } p.Body = string(blackfriday.Run(b)) return nil -- cgit v1.2.3