package server import ( "fmt" "local/notes-server/filetree" "net/http" "path" ) func (s *Server) notes(w http.ResponseWriter, r *http.Request) { p := filetree.NewPathFromURL(r.URL.Path) head(w, r) notesHead(w, p) defer foot(w, r) if p.IsDir() { s.dir(w, r) } else if p.IsFile() { s.file(w, r) } else { http.NotFound(w, r) } } func notesHead(w http.ResponseWriter, p filetree.Path) { fmt.Fprintln(w, h2(p.MultiLink())) } func (s *Server) dir(w http.ResponseWriter, r *http.Request) { dirs, files, err := s.Notes.Dir(r.URL.Path) if err != nil { http.Error(w, err.Error(), http.StatusBadRequest) return } dirHead(w, filetree.NewPathFromURL(r.URL.Path).BaseHREF) block(w, dirs) block(w, files) } func dirHead(w http.ResponseWriter, baseHREF string) { fmt.Fprintf(w, `
`, path.Join("/create/", baseHREF)) } func (s *Server) file(w http.ResponseWriter, r *http.Request) { file, err := s.Notes.File(r.URL.Path) if err != nil { http.Error(w, err.Error(), http.StatusBadRequest) return } fileHead(w, filetree.NewPathFromURL(r.URL.Path).BaseHREF) fmt.Fprintln(w, file) } func fileHead(w http.ResponseWriter, baseHREF string) { fmt.Fprintf(w, ` `, path.Join("/edit/", baseHREF)) }