diff --git a/api/router_static.go b/api/router_static.go index 21d2198..e7dc151 100644 --- a/api/router_static.go +++ b/api/router_static.go @@ -14,20 +14,45 @@ func redirectLogin(w http.ResponseWriter, r *http.Request) { http.Redirect(w, r, "/login", 301) } +type staticAssetPlugs struct { + Origin string +} + type staticHtmlPlugs struct { CdnPrefix string } func initStaticRouter(router *mux.Router) error { - for _, path := range []string{"js", "css", "images"} { - router.PathPrefix("/" + path + "/").HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - f, err := os.Stat("." + r.URL.Path) - if err != nil || f.IsDir() { - http.NotFound(w, r) + asset := make(map[string]string) + + for _, dir := range []string{"js", "css", "images"} { + files, err := ioutil.ReadDir("./" + dir) + if err != nil { + logger.Errorf("cannot read directory ./%s: %v", dir, err) + return err + } + + for _, file := range files { + sl := string(os.PathSeparator) + path := sl + dir + sl + file.Name() + + contents, err := ioutil.ReadFile("." + path) + if err != nil { + logger.Errorf("cannot read file %s: %v", path, err) + return err } - http.ServeFile(w, r, "."+r.URL.Path) - }) + if dir == "js" { + asset[path] = "window.API='" + os.Getenv("ORIGIN") + "/api';" + string(contents) + } else { + asset[path] = string(contents) + } + + logger.Debugf("routing %s", path) + router.HandleFunc(path, func(w http.ResponseWriter, r *http.Request) { + fmt.Fprint(w, asset[r.URL.Path]) + }) + } } pages := []string{