From 4b95d7f98c8c4e6ef92ad5a04ad8b218d4e5b8c4 Mon Sep 17 00:00:00 2001 From: syumai Date: Sun, 11 Feb 2024 21:55:49 +0900 Subject: [PATCH] fix bugs of hono middleware support --- exp/hono/context.go | 18 ++++++++---------- exp/hono/middleware.go | 2 +- 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/exp/hono/context.go b/exp/hono/context.go index 94c5096..0b9aff3 100644 --- a/exp/hono/context.go +++ b/exp/hono/context.go @@ -37,10 +37,8 @@ func (c *Context) Request() *http.Request { return c.reqFunc() } -func (c *Context) Header() Header { - return &header{ - headerObj: c.ctxObj.Get("req").Get("headers"), - } +func (c *Context) SetHeader(key, value string) { + c.ctxObj.Call("header", key, value) } func (c *Context) SetStatus(statusCode int) { @@ -51,13 +49,13 @@ func (c *Context) ResponseBody() io.ReadCloser { return jsutil.ConvertReadableStreamToReadCloser(c.ctxObj.Get("res").Get("body")) } -func (c *Context) SetResponseBody(body io.ReadCloser) { - var res js.Value +func (c *Context) SetBody(body io.ReadCloser) { + var bodyObj js.Value if sr, ok := body.(jsutil.RawJSBodyGetter); ok { - res = jsutil.ResponseClass.New(sr, c.ctxObj.Get("res")) + bodyObj = sr.GetRawJSBody() } else { - bodyObj := jsutil.ConvertReaderToReadableStream(body) - res = jsutil.ResponseClass.New(bodyObj, c.ctxObj.Get("res")) + bodyObj = jsutil.ConvertReaderToReadableStream(body) } - c.ctxObj.Set("res", res) + respObj := c.ctxObj.Call("body", bodyObj) + c.ctxObj.Set("res", respObj) } diff --git a/exp/hono/middleware.go b/exp/hono/middleware.go index d63ad36..76fc462 100644 --- a/exp/hono/middleware.go +++ b/exp/hono/middleware.go @@ -58,7 +58,7 @@ func runHonoMiddleware(nextFnObj js.Value) error { if middleware == nil { return fmt.Errorf("ServeMiddleware must be called before runHonoMiddleware.") } - c := newContext(jsutil.RuntimeContext) + c := newContext(jsutil.RuntimeContext.Get("ctx")) next := func() { jsutil.AwaitPromise(nextFnObj.Invoke()) }