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
}
