|
|
|
@ -5,6 +5,7 @@ import (
|
|
|
|
|
"log"
|
|
|
|
|
"net/http"
|
|
|
|
|
"os"
|
|
|
|
|
"path/filepath"
|
|
|
|
|
"regexp"
|
|
|
|
|
"text/template"
|
|
|
|
|
)
|
|
|
|
@ -21,16 +22,6 @@ var templates = template.Must(template.ParseGlob(template_dir + "/*.html"))
|
|
|
|
|
// Validation to prevent abitrary paths
|
|
|
|
|
var validPath = regexp.MustCompile("^/(edit|save|view)/([a-zA-Z0-9]+)$")
|
|
|
|
|
|
|
|
|
|
// // Retreives and environment variable or supplies the specified default
|
|
|
|
|
// func GetDefaultEnv(key, default_value string) string {
|
|
|
|
|
// // TODO figure out how to write unit test for this How would you wring
|
|
|
|
|
// value := os.Getenv(key)
|
|
|
|
|
// if value == "" {
|
|
|
|
|
// value = default_value
|
|
|
|
|
// }
|
|
|
|
|
// return value
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
// A wiki consists of a series of interconnected pages, each of which has a title and a body
|
|
|
|
|
type Page struct {
|
|
|
|
|
Title string
|
|
|
|
@ -40,8 +31,10 @@ type Page struct {
|
|
|
|
|
|
|
|
|
|
// save Saves a page to disk.
|
|
|
|
|
func (p *Page) save() error {
|
|
|
|
|
filename := data_dir + "/" + p.Title + ".txt"
|
|
|
|
|
return os.WriteFile(filename, p.Body, 0600)
|
|
|
|
|
// filename := data_dir + "/" + p.Title + ".txt"
|
|
|
|
|
filename := p.Title + ".txt"
|
|
|
|
|
fullPath := filepath.Join(data_dir, filename)
|
|
|
|
|
return os.WriteFile(fullPath, p.Body, 0600)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Not neccessary after makeHandler implemented this.
|
|
|
|
@ -60,8 +53,9 @@ func (p *Page) save() error {
|
|
|
|
|
// file, and returns a pointer to a Page struct containing the title and body.
|
|
|
|
|
// If an error occurs during reading, it returns the error.
|
|
|
|
|
func loadPage(title string) (*Page, error) {
|
|
|
|
|
filename := data_dir + "/" + title + ".txt"
|
|
|
|
|
body, err := os.ReadFile(filename)
|
|
|
|
|
// filename := data_dir + "/" + title + ".txt"
|
|
|
|
|
fullPath := filepath.Join(data_dir, title+".txt")
|
|
|
|
|
body, err := os.ReadFile(fullPath)
|
|
|
|
|
|
|
|
|
|
if err != nil {
|
|
|
|
|
return nil, err
|
|
|
|
|