42 lines
862 B
Go
42 lines
862 B
Go
|
package web
|
||
|
|
||
|
import (
|
||
|
"net/http"
|
||
|
"path"
|
||
|
|
||
|
"github.com/rs/zerolog/log"
|
||
|
)
|
||
|
|
||
|
func (web *Web) indexHandler(entryPoint string) func(w http.ResponseWriter, r *http.Request) {
|
||
|
fn := func(w http.ResponseWriter, r *http.Request) {
|
||
|
p := path.Clean(r.URL.Path)
|
||
|
|
||
|
if web.box.Has(p) && !web.box.HasDir(p) {
|
||
|
f, err := web.box.Find(p)
|
||
|
if err != nil {
|
||
|
log.Error().Err(err).Msg("Error finding file")
|
||
|
w.WriteHeader(http.StatusNotFound)
|
||
|
}
|
||
|
w.Write(f)
|
||
|
return
|
||
|
}
|
||
|
if web.box.HasDir(p) && web.box.Has(path.Join(p, "index.html")) {
|
||
|
f, err := web.box.Find(path.Join(p, "index.html"))
|
||
|
if err != nil {
|
||
|
log.Error().Err(err).Msg("Error finding file")
|
||
|
w.WriteHeader(http.StatusNotFound)
|
||
|
}
|
||
|
w.Write(f)
|
||
|
return
|
||
|
}
|
||
|
|
||
|
if f, err := web.box.Find(p); err != nil {
|
||
|
w.Write(f)
|
||
|
return
|
||
|
}
|
||
|
|
||
|
w.WriteHeader(http.StatusNotFound)
|
||
|
}
|
||
|
return fn
|
||
|
}
|