Use slog.Logged in assethandler_external.go. Refactor runtime handler.

This commit is contained in:
Lea Anthony
2023-08-14 08:28:31 +10:00
parent cc5c7d1d29
commit ec0731d5d8
6 changed files with 20 additions and 31 deletions
+1 -2
View File
@@ -59,7 +59,7 @@ func New(appOptions Options) *App {
Middleware: assetserver.Middleware(appOptions.Assets.Middleware),
}
srv, err := assetserver.NewAssetServer(opts, false, result.Logger, wailsruntime.RuntimeAssetsBundle, result.isDebugMode)
srv, err := assetserver.NewAssetServer(opts, false, result.Logger, wailsruntime.RuntimeAssetsBundle, result.isDebugMode, NewMessageProcessor())
if err != nil {
result.fatal(err.Error())
}
@@ -78,7 +78,6 @@ func New(appOptions Options) *App {
return flags
}
srv.UseRuntimeHandler(NewMessageProcessor())
result.assets = srv
result.bindings, err = NewBindings(appOptions.Bind)
+5 -5
View File
@@ -1314,7 +1314,7 @@ func (w *windowsWebviewWindow) processRequest(req *edge.ICoreWebView2WebResource
uri, _ := req.GetUri()
reqUri, err := url.ParseRequestURI(uri)
if err != nil {
globalApplication.error("Unable to parse request uri %s: %s", uri, err)
globalApplication.error("Unable to parse request uri", "uri", uri, "error", err)
return
}
@@ -1337,7 +1337,7 @@ func (w *windowsWebviewWindow) processRequest(req *edge.ICoreWebView2WebResource
env := w.chromium.Environment()
response, err := env.CreateWebResourceResponse(rw.Body.Bytes(), rw.Code, http.StatusText(rw.Code), strings.Join(headers, "\n"))
if err != nil {
globalApplication.error("CreateWebResourceResponse Error: %s", err)
globalApplication.error("CreateWebResourceResponse Error: " + err.Error())
return
}
defer response.Release()
@@ -1345,7 +1345,7 @@ func (w *windowsWebviewWindow) processRequest(req *edge.ICoreWebView2WebResource
// Send response back
err = args.PutResponse(response)
if err != nil {
globalApplication.error("PutResponse Error: %s", err)
globalApplication.error("PutResponse Error: " + err.Error())
return
}
}
@@ -1358,7 +1358,7 @@ func (w *windowsWebviewWindow) setupChromium() {
webview2version, err := webviewloader.GetAvailableCoreWebView2BrowserVersionString(opts.WebviewBrowserPath)
if err != nil {
globalApplication.error("Error getting WebView2 version: %s", err)
globalApplication.error("Error getting WebView2 version: " + err.Error())
return
}
globalApplication.capabilities = capabilities.NewCapabilities(webview2version)
@@ -1451,7 +1451,7 @@ func (w *windowsWebviewWindow) setupChromium() {
// parse the url
parsedURL, err := url.Parse(w.parent.options.URL)
if err != nil {
globalApplication.fatal("Error parsing URL: %s", err)
globalApplication.fatal("Error parsing URL: " + err.Error())
}
if parsedURL.Scheme == "" {
startURL = path.Join(startURL, w.parent.options.URL)
+3 -7
View File
@@ -7,17 +7,13 @@ import (
"fmt"
"io"
iofs "io/fs"
"log/slog"
"net/http"
"os"
"path"
"strings"
)
type Logger interface {
Debug(message string, args ...interface{})
Error(message string, args ...interface{})
}
//go:embed defaultindex.html
var defaultHTML []byte
@@ -29,12 +25,12 @@ type assetHandler struct {
fs iofs.FS
handler http.Handler
logger Logger
logger *slog.Logger
retryMissingFiles bool
}
func NewAssetHandler(options *Options, log Logger) (http.Handler, error) {
func NewAssetHandler(options *Options, log *slog.Logger) (http.Handler, error) {
vfs := options.Assets
if vfs != nil {
+2 -1
View File
@@ -6,12 +6,13 @@ package assetserver
import (
"errors"
"fmt"
"log/slog"
"net/http"
"net/http/httputil"
"net/url"
)
func NewExternalAssetsHandler(logger Logger, options Options, url *url.URL) http.Handler {
func NewExternalAssetsHandler(logger *slog.Logger, options Options, url *url.URL) http.Handler {
baseHandler := options.Handler
errSkipProxy := fmt.Errorf("skip proxying")
+7 -14
View File
@@ -56,22 +56,23 @@ type AssetServer struct {
assetServerWebView
}
func NewAssetServer(options *Options, servingFromDisk bool, logger *slog.Logger, runtime RuntimeAssets, debug bool) (*AssetServer, error) {
func NewAssetServer(options *Options, servingFromDisk bool, logger *slog.Logger, runtime RuntimeAssets, debug bool, runtimeHandler RuntimeHandler) (*AssetServer, error) {
handler, err := NewAssetHandler(options, logger)
if err != nil {
return nil, err
}
return NewAssetServerWithHandler(handler, servingFromDisk, logger, runtime, debug)
return NewAssetServerWithHandler(handler, servingFromDisk, logger, runtime, debug, runtimeHandler)
}
func NewAssetServerWithHandler(handler http.Handler, servingFromDisk bool, logger *slog.Logger, runtime RuntimeAssets, debug bool) (*AssetServer, error) {
func NewAssetServerWithHandler(handler http.Handler, servingFromDisk bool, logger *slog.Logger, runtime RuntimeAssets, debug bool, runtimeHandler RuntimeHandler) (*AssetServer, error) {
var buffer bytes.Buffer
buffer.Write(runtime.RuntimeDesktopJS())
result := &AssetServer{
handler: handler,
runtimeJS: buffer.Bytes(),
handler: handler,
runtimeJS: buffer.Bytes(),
runtimeHandler: runtimeHandler,
// Check if we have been given a directory to serve assets from.
// If so, this means we are in dev mode and are serving assets off disk.
@@ -86,10 +87,6 @@ func NewAssetServerWithHandler(handler http.Handler, servingFromDisk bool, logge
return result, nil
}
func (d *AssetServer) UseRuntimeHandler(handler RuntimeHandler) {
d.runtimeHandler = handler
}
func (d *AssetServer) AddPluginScript(pluginName string, script string) {
if d.pluginScripts == nil {
d.pluginScripts = make(map[string]string)
@@ -156,11 +153,7 @@ func (d *AssetServer) ServeHTTP(rw http.ResponseWriter, req *http.Request) {
d.writeBlob(rw, path, data)
case runtimePath:
if d.runtimeHandler != nil {
d.runtimeHandler.HandleRuntimeCall(rw, req)
} else {
d.handler.ServeHTTP(rw, req)
}
d.runtimeHandler.HandleRuntimeCall(rw, req)
case ipcJSPath:
content := d.runtime.DesktopIPC()
+2 -2
View File
@@ -13,8 +13,8 @@ The assetserver for the dev mode.
Depending on the UserAgent it injects a websocket based IPC script into `index.html` or the default desktop IPC. The
default desktop IPC is injected when the webview accesses the devserver.
*/
func NewDevAssetServer(handler http.Handler, servingFromDisk bool, logger *slog.Logger, runtime RuntimeAssets) (*AssetServer, error) {
result, err := NewAssetServerWithHandler(handler, servingFromDisk, logger, runtime, true)
func NewDevAssetServer(handler http.Handler, servingFromDisk bool, logger *slog.Logger, runtime RuntimeAssets, runtimeHandler RuntimeHandler) (*AssetServer, error) {
result, err := NewAssetServerWithHandler(handler, servingFromDisk, logger, runtime, true, runtimeHandler)
if err != nil {
return nil, err
}