mirror of
https://github.com/syumai/workers.git
synced 2025-03-10 17:29:11 +00:00
fix build error
This commit is contained in:
parent
d7d667f106
commit
88f0dc1798
12
handler.go
12
handler.go
@ -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)
|
||||||
}()
|
}()
|
||||||
|
@ -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
|
||||||
}
|
}
|
||||||
|
@ -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
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user