From 3919f17a998b7340db80d64fc774d5d8b7d10f9d Mon Sep 17 00:00:00 2001 From: Nicolas Lepage <19571875+nlepage@users.noreply.github.com> Date: Wed, 27 Nov 2019 00:04:00 +0100 Subject: [PATCH] :construction: --- request.go | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 request.go diff --git a/request.go b/request.go new file mode 100644 index 0000000..3d80500 --- /dev/null +++ b/request.go @@ -0,0 +1,30 @@ +package wasmhttp + +import ( + "bytes" + "net/http" + "syscall/js" +) + +// Request is a JS Request +type Request js.Value + +// HTTPRequest builds and returns this equivalent http.Request +func (r *Request) HTTPRequest() (*http.Request, error) { + rValue := js.Value(*r) + + jsBody := js.Global().Get("Uint8Array").New(Promise(rValue.Call("arrayBuffer")).Await()) + body := make([]byte, jsBody.Get("length").Int()) + js.CopyBytesToGo(body, jsBody) + + req, err := http.NewRequest( + rValue.Get("method").String(), + rValue.Get("url").String(), + bytes.NewBuffer(body), + ) + if err != nil { + return nil, err + } + + return req, nil +}