mirror of
https://github.com/MichaelMure/git-bug.git
synced 2025-01-05 17:33:12 +03:00
webui: serve the index.html file by default to deal with the SPA router requirements
fix #50
This commit is contained in:
parent
8a03853869
commit
7c63417e8f
@ -44,12 +44,17 @@ func runWebUI(cmd *cobra.Command, args []string) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
assetsHandler := &fileSystemWithDefault{
|
||||||
|
FileSystem: webui.WebUIAssets,
|
||||||
|
defaultFile: "index.html",
|
||||||
|
}
|
||||||
|
|
||||||
// Routes
|
// Routes
|
||||||
router.Path("/playground").Handler(handler.Playground("git-bug", "/graphql"))
|
router.Path("/playground").Handler(handler.Playground("git-bug", "/graphql"))
|
||||||
router.Path("/graphql").Handler(graphqlHandler)
|
router.Path("/graphql").Handler(graphqlHandler)
|
||||||
router.Path("/gitfile/{hash}").Handler(newGitFileHandler(repo))
|
router.Path("/gitfile/{hash}").Handler(newGitFileHandler(repo))
|
||||||
router.Path("/upload").Methods("POST").Handler(newGitUploadFileHandler(repo))
|
router.Path("/upload").Methods("POST").Handler(newGitUploadFileHandler(repo))
|
||||||
router.PathPrefix("/").Handler(http.FileServer(webui.WebUIAssets))
|
router.PathPrefix("/").Handler(http.FileServer(assetsHandler))
|
||||||
|
|
||||||
srv := &http.Server{
|
srv := &http.Server{
|
||||||
Addr: addr,
|
Addr: addr,
|
||||||
@ -104,6 +109,23 @@ func runWebUI(cmd *cobra.Command, args []string) error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 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
|
||||||
|
}
|
||||||
|
|
||||||
|
// implement a http.Handler that will read and server git blob.
|
||||||
type gitFileHandler struct {
|
type gitFileHandler struct {
|
||||||
repo repository.Repo
|
repo repository.Repo
|
||||||
}
|
}
|
||||||
@ -135,6 +157,7 @@ func (gfh *gitFileHandler) ServeHTTP(rw http.ResponseWriter, r *http.Request) {
|
|||||||
http.ServeContent(rw, r, "", time.Now(), bytes.NewReader(data))
|
http.ServeContent(rw, r, "", time.Now(), bytes.NewReader(data))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// implement a http.Handler that will accept and store content into git blob.
|
||||||
type gitUploadFileHandler struct {
|
type gitUploadFileHandler struct {
|
||||||
repo repository.Repo
|
repo repository.Repo
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user