diff --git a/examples/r2-image-server/Makefile b/examples/r2-image-server/Makefile index c9d7430..320ddc3 100644 --- a/examples/r2-image-server/Makefile +++ b/examples/r2-image-server/Makefile @@ -5,7 +5,7 @@ dev: .PHONY: build build: mkdir -p dist - tinygo build -o ./dist/app.wasm -target wasm ./main.go + tinygo build -o ./dist/app.wasm -target wasm ./... .PHONY: publish publish: diff --git a/examples/r2-image-server/jsutil.go b/examples/r2-image-server/jsutil.go index 5edeb77..fe871c1 100644 --- a/examples/r2-image-server/jsutil.go +++ b/examples/r2-image-server/jsutil.go @@ -29,6 +29,8 @@ func newPromise(fn js.Func) js.Value { } func awaitPromise(promiseVal js.Value) (js.Value, error) { + fmt.Println("await promise") + fmt.Println(promiseVal.Call("toString").String()) resultCh := make(chan js.Value) errCh := make(chan error) var then, catch js.Func @@ -47,8 +49,10 @@ func awaitPromise(promiseVal js.Value) (js.Value, error) { promiseVal.Call("then", then).Call("catch", catch) select { case result := <-resultCh: + fmt.Println("got result of promise") return result, nil case err := <-errCh: + fmt.Println("got error of promise") return js.Value{}, err } } diff --git a/examples/r2-image-server/main.go b/examples/r2-image-server/main.go index f03f942..d4d70bc 100644 --- a/examples/r2-image-server/main.go +++ b/examples/r2-image-server/main.go @@ -3,6 +3,7 @@ package main import ( "fmt" "io" + "log" "net/http" "github.com/syumai/workers" @@ -11,7 +12,8 @@ import ( // bucketName is R2 bucket name defined in wrangler.toml. const bucketName = "BUCKET" -func handleErr(w http.ResponseWriter, msg string) { +func handleErr(w http.ResponseWriter, msg string, err error) { + log.Println(err) w.WriteHeader(http.StatusInternalServerError) w.Write([]byte(msg)) } @@ -19,15 +21,17 @@ func handleErr(w http.ResponseWriter, msg string) { // This example is based on implementation in syumai/workers-playground // * https://github.com/syumai/workers-playground/blob/e32881648ccc055e3690a0d9c750a834261c333e/r2-image-viewer/src/index.ts#L30 func handler(w http.ResponseWriter, req *http.Request) { + fmt.Println("new R2Bucket") bucket, err := NewR2Bucket(bucketName) if err != nil { - handleErr(w, "failed to get R2Bucket\n") + handleErr(w, "failed to get R2Bucket\n", err) return } imgPath := req.URL.Path + fmt.Println("bucket.get") imgObj, err := bucket.Get(imgPath) if err != nil { - handleErr(w, "failed to get R2Object\n") + handleErr(w, "failed to get R2Object\n", err) return } w.Header().Set("Cache-Control", "public, max-age=14400") @@ -37,6 +41,7 @@ func handler(w http.ResponseWriter, req *http.Request) { contentType = *imgObj.HTTPMetadata.ContentType } w.Header().Set("Content-Type", contentType) + fmt.Println("return result") io.Copy(w, imgObj.Body) } diff --git a/examples/r2-image-server/r2bucket.go b/examples/r2-image-server/r2bucket.go index 171f522..96511b0 100644 --- a/examples/r2-image-server/r2bucket.go +++ b/examples/r2-image-server/r2bucket.go @@ -41,6 +41,7 @@ func (r *r2Bucket) Get(key string) (*R2Object, error) { if err != nil { return nil, err } + fmt.Println(v) if v.IsNull() { return nil, nil } diff --git a/examples/r2-image-server/r2object.go b/examples/r2-image-server/r2object.go index 26e97b1..9403f6d 100644 --- a/examples/r2-image-server/r2object.go +++ b/examples/r2-image-server/r2object.go @@ -41,6 +41,7 @@ func (o *R2Object) BodyUsed() (bool, error) { // toR2Object converts JavaScript side's R2Object to *R2Object. // * https://github.com/cloudflare/workers-types/blob/3012f263fb1239825e5f0061b267c8650d01b717/index.d.ts#L1094 func toR2Object(v js.Value) (*R2Object, error) { + fmt.Println("toR2Object") uploaded, err := dateToTime(v.Get("uploaded")) if err != nil { return nil, fmt.Errorf("error converting uploaded: %w", err) diff --git a/examples/r2-image-server/worker.mjs b/examples/r2-image-server/worker.mjs index a0bb726..06ce572 100644 --- a/examples/r2-image-server/worker.mjs +++ b/examples/r2-image-server/worker.mjs @@ -9,9 +9,11 @@ const load = WebAssembly.instantiate(mod, go.importObject).then((instance) => { return instance; }); -export default { - async fetch(req) { - await load; - return handleRequest(req); - }, -}; +async function processRequest(event) { + const req = event.request; + await load; + console.log("finished loading"); + return handleRequest(req); +} + +addEventListener("fetch", (event) => event.respondWith(processRequest(event)))