mirror of
https://github.com/nlepage/go-wasm-http-server.git
synced 2026-01-12 01:59:14 +00:00
🚧
This commit is contained in:
39
request.go
39
request.go
@@ -1,39 +0,0 @@
|
||||
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
|
||||
}
|
||||
|
||||
headersIt := rValue.Get("headers").Call("entries")
|
||||
for {
|
||||
v := headersIt.Call("next")
|
||||
if v.Get("done").Bool() {
|
||||
break
|
||||
}
|
||||
req.Header.Set(v.Index(0).String(), v.Index(1).String())
|
||||
}
|
||||
|
||||
return req, nil
|
||||
}
|
||||
Reference in New Issue
Block a user