git-bug/webui/handler.go
Michael Muré 2ab6381a94
Reorganize the webUI and API code
Included in the changes:
- create a new /api root package to hold all API code, migrate /graphql in there
- git API handlers all use the cache instead of the repo directly
- git API handlers are now tested
- git API handlers now require a "repo" mux parameter
- lots of untangling of API/handlers/middleware
- less code in commands/webui.go
2020-06-27 23:03:05 +02:00

32 lines
747 B
Go

package webui
import (
"net/http"
"os"
)
// implement a http.FileSystem that will serve a default file when the looked up
// file doesn't exist. Useful for Single-Page App that implement routing client
// side, where the server has to return the root index.html file for every route.
type fileSystemWithDefault struct {
http.FileSystem
defaultFile string
}
func (fswd *fileSystemWithDefault) Open(name string) (http.File, error) {
f, err := fswd.FileSystem.Open(name)
if os.IsNotExist(err) {
return fswd.FileSystem.Open(fswd.defaultFile)
}
return f, err
}
func NewHandler() http.Handler {
assetsHandler := &fileSystemWithDefault{
FileSystem: WebUIAssets,
defaultFile: "index.html",
}
return http.FileServer(assetsHandler)
}