mirror of
https://github.com/wailsapp/wails.git
synced 2025-05-02 23:02:19 +08:00
79 lines
1.6 KiB
Go
79 lines
1.6 KiB
Go
package assetserver
|
|
|
|
import (
|
|
"io"
|
|
"net/http"
|
|
|
|
"github.com/wailsapp/wails/v2/pkg/assetserver/webview"
|
|
)
|
|
|
|
// ProcessHTTPRequest processes the HTTP Request by faking a golang HTTP Server.
|
|
// The request will be finished with a StatusNotImplemented code if no handler has written to the response.
|
|
func (d *AssetServer) ProcessHTTPRequestLegacy(rw http.ResponseWriter, reqGetter func() (*http.Request, error)) {
|
|
d.processWebViewRequest(&legacyRequest{reqGetter: reqGetter, rw: rw})
|
|
}
|
|
|
|
type legacyRequest struct {
|
|
req *http.Request
|
|
rw http.ResponseWriter
|
|
|
|
reqGetter func() (*http.Request, error)
|
|
}
|
|
|
|
func (r *legacyRequest) URL() (string, error) {
|
|
req, err := r.request()
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
return req.URL.String(), nil
|
|
}
|
|
|
|
func (r *legacyRequest) Method() (string, error) {
|
|
req, err := r.request()
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
return req.Method, nil
|
|
}
|
|
|
|
func (r *legacyRequest) Header() (http.Header, error) {
|
|
req, err := r.request()
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return req.Header, nil
|
|
}
|
|
|
|
func (r *legacyRequest) Body() (io.ReadCloser, error) {
|
|
req, err := r.request()
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return req.Body, nil
|
|
}
|
|
|
|
func (r legacyRequest) Response() webview.ResponseWriter {
|
|
return &legacyRequestNoOpCloserResponseWriter{r.rw}
|
|
}
|
|
|
|
func (r legacyRequest) Close() error { return nil }
|
|
|
|
func (r *legacyRequest) request() (*http.Request, error) {
|
|
if r.req != nil {
|
|
return r.req, nil
|
|
}
|
|
|
|
req, err := r.reqGetter()
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
r.req = req
|
|
return req, nil
|
|
}
|
|
|
|
type legacyRequestNoOpCloserResponseWriter struct {
|
|
http.ResponseWriter
|
|
}
|
|
|
|
func (*legacyRequestNoOpCloserResponseWriter) Finish() {}
|