mirror of
https://github.com/wailsapp/wails.git
synced 2025-05-06 18:21:45 +08:00
49 lines
1.1 KiB
Go
49 lines
1.1 KiB
Go
//go:build !production
|
|
|
|
package assetserver
|
|
|
|
import (
|
|
_ "embed"
|
|
"io/fs"
|
|
"net/http"
|
|
"net/http/httputil"
|
|
"net/url"
|
|
"os"
|
|
)
|
|
|
|
//go:embed defaultindex.html
|
|
var defaultHTML []byte
|
|
|
|
func defaultIndexHTML() []byte {
|
|
return defaultHTML
|
|
}
|
|
|
|
func NewAssetFileServer(vfs fs.FS) http.Handler {
|
|
devServerURL := GetDevServerURL()
|
|
if devServerURL == "" {
|
|
return newAssetFileServerFS(vfs)
|
|
}
|
|
|
|
parsedURL, err := url.Parse(devServerURL)
|
|
if err != nil {
|
|
return http.HandlerFunc(
|
|
func(rw http.ResponseWriter, req *http.Request) {
|
|
logError(req.Context(), "[ExternalAssetHandler] Invalid FRONTEND_DEVSERVER_URL. Should be valid URL", "error", err.Error())
|
|
http.Error(rw, err.Error(), http.StatusInternalServerError)
|
|
})
|
|
|
|
}
|
|
|
|
proxy := httputil.NewSingleHostReverseProxy(parsedURL)
|
|
proxy.ErrorHandler = func(rw http.ResponseWriter, r *http.Request, err error) {
|
|
logError(r.Context(), "[ExternalAssetHandler] Proxy error", "error", err.Error())
|
|
rw.WriteHeader(http.StatusBadGateway)
|
|
}
|
|
|
|
return proxy
|
|
}
|
|
|
|
func GetDevServerURL() string {
|
|
return os.Getenv("FRONTEND_DEVSERVER_URL")
|
|
}
|