34 lines
831 B
Go
34 lines
831 B
Go
package web
|
|
|
|
import (
|
|
"embed"
|
|
"net/http"
|
|
"path"
|
|
"runtime"
|
|
)
|
|
|
|
//go:embed "static"
|
|
var embedded_files embed.FS
|
|
|
|
var use_embedded = ""
|
|
|
|
var this_dir string
|
|
|
|
func init() {
|
|
_, this_file, _, _ := runtime.Caller(0) // `this_file` is absolute path to this source file
|
|
this_dir = path.Dir(this_file)
|
|
}
|
|
|
|
// Serve static assets, either from the disk (if running in development mode), or from go:embedded files
|
|
func (app *Application) ServeStatic(w http.ResponseWriter, r *http.Request) {
|
|
// Static files can be stored in browser cache
|
|
w.Header().Set("Cache-Control", "public, max-age=3600")
|
|
if use_embedded == "true" {
|
|
// Serve directly from the embedded files
|
|
http.FileServer(http.FS(embedded_files)).ServeHTTP(w, r)
|
|
} else {
|
|
// Serve from disk
|
|
http.FileServer(http.Dir(path.Join(this_dir, "static"))).ServeHTTP(w, r)
|
|
}
|
|
}
|