// +build !embed

package web

import (
	"io"
	"net/http"
	"os"
	"path/filepath"
)

func (s *Server) FrontendHandler(frontendDir string) http.HandlerFunc {
	fs := http.FileServer(http.Dir(frontendDir))
	return fs.ServeHTTP
}

func (s *Server) IndexHandler(frontendDir string) http.HandlerFunc {
	fs := http.FileServer(http.Dir(frontendDir))

	fn := func(w http.ResponseWriter, r *http.Request) {
		fname := filepath.Join(frontendDir, r.URL.Path)
		_, err := os.Stat(fname)
		if os.IsNotExist(err) {
			serveIndex(frontendDir).ServeHTTP(w, r)
			return
		}
		fs.ServeHTTP(w, r)
	}
	return http.HandlerFunc(fn)
}

func serveIndex(frontendDir string) http.HandlerFunc {
	fn := func(w http.ResponseWriter, r *http.Request) {
		fname := filepath.Join(frontendDir, "index.html")
		f, err := os.Open(fname)
		if err != nil {
			panic(err)
		}
		defer f.Close()

		io.Copy(w, f)
	}
	return fn
}