mirror of
https://github.com/MichaelMure/git-bug.git
synced 2024-12-15 10:12:06 +03:00
2ab6381a94
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
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)
|
|
}
|