fix build error

This commit is contained in:
syumai 2023-02-22 19:23:56 +09:00
parent d7d667f106
commit 88f0dc1798
3 changed files with 23 additions and 23 deletions

View File

@ -55,14 +55,14 @@ func handleRequest(reqObj js.Value, runtimeCtxObj js.Value) (js.Value, error) {
req = req.WithContext(ctx) req = req.WithContext(ctx)
reader, writer := io.Pipe() reader, writer := io.Pipe()
w := &jsutil.ResponseWriterBuffer{ w := &jsutil.ResponseWriterBuffer{
header: http.Header{}, HeaderValue: http.Header{},
statusCode: http.StatusOK, StatusCode: http.StatusOK,
reader: reader, Reader: reader,
writer: writer, Writer: writer,
readyCh: make(chan struct{}), ReadyCh: make(chan struct{}),
} }
go func() { go func() {
defer w.ready() defer w.Ready()
defer writer.Close() defer writer.Close()
httpHandler.ServeHTTP(w, req) httpHandler.ServeHTTP(w, req)
}() }()

View File

@ -16,8 +16,8 @@ func ToJSHeader(header http.Header) js.Value {
} }
func ToJSResponse(w *ResponseWriterBuffer) (js.Value, error) { func ToJSResponse(w *ResponseWriterBuffer) (js.Value, error) {
<-w.readyCh // wait until ready <-w.ReadyCh // wait until ready
status := w.statusCode status := w.StatusCode
if status == 0 { if status == 0 {
status = http.StatusOK status = http.StatusOK
} }
@ -25,6 +25,6 @@ func ToJSResponse(w *ResponseWriterBuffer) (js.Value, error) {
respInit.Set("status", status) respInit.Set("status", status)
respInit.Set("statusText", http.StatusText(status)) respInit.Set("statusText", http.StatusText(status))
respInit.Set("headers", ToJSHeader(w.Header())) respInit.Set("headers", ToJSHeader(w.Header()))
readableStream := ConvertReaderToReadableStream(w.reader) readableStream := ConvertReaderToReadableStream(w.Reader)
return ResponseClass.New(readableStream, respInit), nil return ResponseClass.New(readableStream, respInit), nil
} }

View File

@ -7,32 +7,32 @@ import (
) )
type ResponseWriterBuffer struct { type ResponseWriterBuffer struct {
header http.Header HeaderValue http.Header
statusCode int StatusCode int
reader *io.PipeReader Reader *io.PipeReader
writer *io.PipeWriter Writer *io.PipeWriter
readyCh chan struct{} ReadyCh chan struct{}
once sync.Once Once sync.Once
} }
var _ http.ResponseWriter = &ResponseWriterBuffer{} var _ http.ResponseWriter = &ResponseWriterBuffer{}
// ready indicates that ResponseWriterBuffer is ready to be converted to Response. // Ready indicates that ResponseWriterBuffer is ready to be converted to Response.
func (w *ResponseWriterBuffer) ready() { func (w *ResponseWriterBuffer) Ready() {
w.once.Do(func() { w.Once.Do(func() {
close(w.readyCh) close(w.ReadyCh)
}) })
} }
func (w *ResponseWriterBuffer) Write(data []byte) (n int, err error) { func (w *ResponseWriterBuffer) Write(data []byte) (n int, err error) {
w.ready() w.Ready()
return w.writer.Write(data) return w.Writer.Write(data)
} }
func (w *ResponseWriterBuffer) Header() http.Header { func (w *ResponseWriterBuffer) Header() http.Header {
return w.header return w.HeaderValue
} }
func (w *ResponseWriterBuffer) WriteHeader(statusCode int) { func (w *ResponseWriterBuffer) WriteHeader(statusCode int) {
w.statusCode = statusCode w.StatusCode = statusCode
} }