mirror of
https://github.com/MichaelMure/git-bug.git
synced 2024-12-14 17:51:44 +03:00
32 lines
747 B
Go
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)
|
||
|
}
|