From 4657319d529c7e30f307d78815163d8d76b23c88 Mon Sep 17 00:00:00 2001 From: "Alexander \"Arav\" Andreev" Date: Sun, 13 Aug 2023 02:23:47 +0400 Subject: [PATCH] Added an error page. --- internal/http/handlers.go | 6 ++++++ web/assets/css/error.css | 7 +++++++ web/templates/errorXXX.jade | 24 ++++++++++++++++++++++++ web/web.go | 1 + 4 files changed, 38 insertions(+) create mode 100644 web/assets/css/error.css create mode 100644 web/templates/errorXXX.jade diff --git a/internal/http/handlers.go b/internal/http/handlers.go index 36d0c54..c33bfb6 100644 --- a/internal/http/handlers.go +++ b/internal/http/handlers.go @@ -37,6 +37,7 @@ func (h *FilesHandlers) Index(w http.ResponseWriter, r *http.Request) { entries, stats, err := files.ScanDirectory(h.directoryPath+path, path) if err != nil { log.Println(err) + Error(w, http.StatusNotFound, "", "", r.Referer()) return } @@ -56,3 +57,8 @@ func RobotsTxt(w http.ResponseWriter, r *http.Request) { fc, _ := web.AssetsGetFile("robots.txt") w.Write(fc) } + +func Error(w http.ResponseWriter, code int, reason, message, referer string) { + w.WriteHeader(code) + web.ErrorXXX("/ "+http.StatusText(code), reason, message, referer, code, w) +} diff --git a/web/assets/css/error.css b/web/assets/css/error.css new file mode 100644 index 0000000..55028f2 --- /dev/null +++ b/web/assets/css/error.css @@ -0,0 +1,7 @@ +#error { + font-size: 3.5rem; + line-height: 5rem; + text-align: center; + margin: 6rem 0; } + +#error h1 { font-size: 8rem; } \ No newline at end of file diff --git a/web/templates/errorXXX.jade b/web/templates/errorXXX.jade new file mode 100644 index 0000000..67131f3 --- /dev/null +++ b/web/templates/errorXXX.jade @@ -0,0 +1,24 @@ +extends base.jade + +block meta_description + meta(name='description' content=http.StatusText(code)) + +block append head + link(href='/assets/css/error.css' rel='stylesheet') + +block nav + a(href='/') Back to index page + h1 #{http.StatusText(code)} + +block content + :go:func ErrorXXX(title, reason, message, referer string, code int) + section#error + h1 #{code} + | #{http.StatusText(code)} + if reason != "" + p #{reason} + if message != "" + p #{message} + if referer != "" + section + h2 #[a(href=referer) Go back] diff --git a/web/web.go b/web/web.go index c068d64..33f48d2 100644 --- a/web/web.go +++ b/web/web.go @@ -7,6 +7,7 @@ import ( ) //go:generate $GOPATH/bin/jade -pkg=web -stdbuf -writer templates/index.jade +//go:generate $GOPATH/bin/jade -pkg=web -stdbuf -writer templates/errorXXX.jade //go:embed assets var assetsDir embed.FS