// Simpliest server package main //go:generate folder2go assets binAssets import ( "fmt" "hexasoftware/cmd/httpServe/binAssets" _ "hexasoftware/lib/prettylog/global" "io" "io/ioutil" "log" "mime" "net" "net/http" "os" "path/filepath" "strings" ) func CreateHandleFunc(prefix string) func(http.ResponseWriter, *http.Request) { return func(w http.ResponseWriter, r *http.Request) { var solvedPath = r.URL.Path if solvedPath == prefix { solvedPath = prefix + "/index.html" } log.Printf("%s - (embed)%s", r.Method, r.URL.Path) if strings.HasPrefix(solvedPath, prefix) { solvedPath = solvedPath[len(prefix):] } data, ok := binAssets.Data[solvedPath] if !ok { w.WriteHeader(404) } w.Header().Set("Content-type", mime.TypeByExtension(filepath.Ext(solvedPath))) w.Write(data) } } func HandleMarkDown(w http.ResponseWriter, r *http.Request, path string) error { log.Println("Handling markdown") f, err := os.Open(path) if err != nil { return err } defer f.Close() /* // Server side markdown2html data, err := ioutil.ReadAll(f) if err != nil { return err } w.Write([]byte("
")) mdData := blackfriday.MarkdownCommon(data) w.Write(mdData) w.Write([]byte("")) return nil */ w.Write([]byte( ` `)) return nil } func HandleFolder(w http.ResponseWriter, r *http.Request, path string) error { res, err := ioutil.ReadDir(path) if err != nil { return err } w.Write([]byte( `