From 3927a5dea40aa50213bda4895c34e296f122b9d3 Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Sat, 24 Feb 2024 22:39:06 +0100 Subject: Test new 1.22 http routes --- wiki.go | 52 ++++++++++++++++++++++++++-------------------------- 1 file changed, 26 insertions(+), 26 deletions(-) (limited to 'wiki.go') diff --git a/wiki.go b/wiki.go index 6a7bbf9..64e1e82 100644 --- a/wiki.go +++ b/wiki.go @@ -1,46 +1,46 @@ package main import ( - "html/template" - "io/ioutil" - "net/http" "os" "path" - - "github.com/russross/blackfriday" ) -type Page struct { - Title string - Body []byte - Pages []os.FileInfo +type Wiki struct { + Root string } -func (p *Page) fileName() string { - return path.Join(*data, p.Title) +func (w Wiki) fileName(title string) string { + return path.Join(w.Root, title) } -func (p *Page) save() error { - return ioutil.WriteFile(p.fileName(), p.Body, 0600) +func (w Wiki) Save(p Page) error { + return os.WriteFile(w.fileName(p.Title), p.Body, 0600) } -func loadPage(title string) (p *Page, err error) { - p = &Page{Title: title} - p.Body, err = ioutil.ReadFile(p.fileName()) - return +func (w Wiki) Load(title string) (Page, error) { + body, err := os.ReadFile(w.fileName(title)) + return Page{Title: title, Body: body}, err } -func (p *Page) del() error { - return os.Remove(p.fileName()) +func (w Wiki) Delete(title string) error { + return os.Remove(w.fileName(title)) } -func (p *Page) render(w http.ResponseWriter, tmpl *template.Template) { - err := tmpl.ExecuteTemplate(w, "root", p) +func (w Wiki) List() ([]os.FileInfo, error) { + files, err := os.ReadDir(w.Root) if err != nil { - http.Error(w, err.Error(), http.StatusInternalServerError) + return nil, err } -} - -func (p *Page) HTML() template.HTML { - return template.HTML(blackfriday.MarkdownCommon(p.Body)) + var pages []os.FileInfo + for _, entry := range files { + file := entry.Name() + if !entry.IsDir() && file[0] != '.' { + info, err := entry.Info() + if err != nil { + return nil, err + } + pages = append(pages, info) + } + } + return pages, nil } -- cgit v1.2.3