fix: crash when request has no body

This commit is contained in:
Nicolas Lepage 2024-10-14 23:28:21 +02:00
parent 74cbaf89b5
commit 8abad8cb77
No known key found for this signature in database
GPG Key ID: B0879E35E66D8F6F
2 changed files with 25 additions and 11 deletions

View File

@ -73,6 +73,14 @@ func (v Value) IndexString(i int) (string, error) {
return safejs.Value(sv).String()
}
func (v Value) IsNull() bool {
return safejs.Value(v).IsNull()
}
func (v Value) IsUndefined() bool {
return safejs.Value(v).IsUndefined()
}
func (v Value) New(args ...any) (Value, error) {
args = toJSValue(args).([]any)
r, err := safejs.Value(v).New(args...)

View File

@ -1,6 +1,7 @@
package wasmhttp
import (
"io"
"net/http"
"net/http/httptest"
"syscall/js"
@ -13,16 +14,6 @@ import (
func Request(uvalue js.Value) (*http.Request, error) {
value := safejs.Safe(uvalue)
body, err := value.Get("body")
if err != nil {
return nil, err
}
r, err := body.Call("getReader")
if err != nil {
return nil, err
}
method, err := value.GetString("method")
if err != nil {
return nil, err
@ -33,10 +24,25 @@ func Request(uvalue js.Value) (*http.Request, error) {
return nil, err
}
body, err := value.Get("body")
if err != nil {
return nil, err
}
var bodyReader io.Reader
if !body.IsUndefined() && !body.IsNull() {
r, err := body.Call("getReader")
if err != nil {
return nil, err
}
bodyReader = readablestream.NewReader(r)
}
req := httptest.NewRequest(
method,
url,
readablestream.NewReader(r),
bodyReader,
)
headers, err := value.Get("headers")