notes-server/server/raw.go

34 lines
695 B
Go
Executable File

package server
import (
"io"
"gogs.inhome.blapointe.com/local/notes-server/filetree"
"gogs.inhome.blapointe.com/local/simpleserve/simpleserve"
"net/http"
"os"
)
func (s *Server) raw(w http.ResponseWriter, r *http.Request) {
if err := s._raw(w, r); err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
}
}
func (s *Server) _raw(w http.ResponseWriter, r *http.Request) error {
simpleserve.SetContentTypeIfMedia(w, r)
p := filetree.NewPathFromURL(r.URL.Path)
if !p.IsFile() {
http.NotFound(w, r)
return nil
}
f, err := os.Open(p.Local)
if err != nil {
return err
}
defer f.Close()
if _, err := io.Copy(w, f); err != nil {
return err
}
return nil
}