4 Commits

Author SHA1 Message Date
Nicolas Lepage
770d49a106 chore: v2.0.2 2024-10-14 23:30:16 +02:00
Nicolas Lepage
e8555180f7 fix: improves error management 2024-10-14 23:28:35 +02:00
Nicolas Lepage
8abad8cb77 fix: crash when request has no body 2024-10-14 23:28:21 +02:00
Nicolas Lepage
74cbaf89b5 fix: wrongful import path in v2.0.0 example 2024-10-14 22:56:59 +02:00
13 changed files with 34 additions and 26 deletions

View File

@@ -97,7 +97,7 @@ Create a ServiceWorker file with the following code:
📄 `sw.js`
```js
importScripts('https://cdn.jsdelivr.net/gh/golang/go@go1.18.4/misc/wasm/wasm_exec.js')
importScripts('https://cdn.jsdelivr.net/gh/nlepage/go-wasm-http-server@v2.0.0/sw.js')
importScripts('https://cdn.jsdelivr.net/gh/nlepage/go-wasm-http-server@v2.0.2/sw.js')
registerWasmHTTPListener('path/to/server.wasm')
```

Binary file not shown.

View File

@@ -1,5 +1,5 @@
importScripts('https://cdn.jsdelivr.net/gh/golang/go@go1.23.1/misc/wasm/wasm_exec.js')
importScripts('https://cdn.jsdelivr.net/gh/nlepage/go-wasm-http-server@v2.0.0/sw.js')
importScripts('https://cdn.jsdelivr.net/gh/nlepage/go-wasm-http-server@v2.0.2/sw.js')
addEventListener('install', (event) => {
event.waitUntil(skipWaiting())

View File

@@ -1,5 +1,5 @@
importScripts('https://cdn.jsdelivr.net/gh/golang/go@go1.23.1/misc/wasm/wasm_exec.js')
importScripts('https://cdn.jsdelivr.net/gh/nlepage/go-wasm-http-server@v2.0.0/sw.js')
importScripts('https://cdn.jsdelivr.net/gh/nlepage/go-wasm-http-server@v2.0.2/sw.js')
addEventListener('install', event => {
event.waitUntil(skipWaiting())

Binary file not shown.

View File

@@ -1,5 +1,5 @@
importScripts('https://cdn.jsdelivr.net/gh/golang/go@go1.23.1/misc/wasm/wasm_exec.js')
importScripts('https://cdn.jsdelivr.net/gh/nlepage/go-wasm-http-server@v2.0.0/sw.js')
importScripts('https://cdn.jsdelivr.net/gh/nlepage/go-wasm-http-server@v2.0.2/sw.js')
addEventListener('install', (event) => {
event.waitUntil(skipWaiting())

Binary file not shown.

View File

@@ -1,5 +1,5 @@
importScripts('https://cdn.jsdelivr.net/gh/golang/go@go1.23.1/misc/wasm/wasm_exec.js')
importScripts('https://cdn.jsdelivr.net/gh/nlepage/go-wasm-http-server@v2.0.0/sw.js')
importScripts('https://cdn.jsdelivr.net/gh/nlepage/go-wasm-http-server@v2.0.2/sw.js')
addEventListener('install', (event) => {
event.waitUntil(skipWaiting())

View File

@@ -5,7 +5,7 @@ import (
"fmt"
"net/http"
wasmhttp "github.com/nlepage/go-wasm-http-server/v2/v2"
wasmhttp "github.com/nlepage/go-wasm-http-server/v2"
)
// Demonstrates a simple hello JSON service.

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")

View File

@@ -88,7 +88,7 @@ func (r *response) WriteHeader(code int) {
checkWriteHeaderCode(code)
init, err := safejs.ValueOf(map[string]any{
"code": code,
"status": code,
"headers": r.headerValue(),
})
if err != nil {

View File

@@ -57,19 +57,13 @@ func Serve(handler http.Handler) (func(), error) {
defer func() {
if r := recover(); r != nil {
var errStr string
if err, ok := r.(error); ok {
errStr = err.Error()
} else {
errStr = fmt.Sprintf("%s", r)
}
res.WriteError(errStr)
res.WriteError(fmt.Sprintf("%+v", r))
}
}()
req, err := Request(safejs.Unsafe(args[0]))
if err != nil {
res.WriteError(err.Error())
res.WriteError(fmt.Sprintf("%+v", err))
return
}