mirror of
https://github.com/syumai/workers.git
synced 2025-03-10 17:29:11 +00:00
split jshttp/header.go
This commit is contained in:
parent
de512c97e0
commit
ddaaeb53ac
38
internal/jshttp/header.go
Normal file
38
internal/jshttp/header.go
Normal file
@ -0,0 +1,38 @@
|
||||
package jshttp
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
"strings"
|
||||
"syscall/js"
|
||||
|
||||
"github.com/syumai/workers/internal/jsutil"
|
||||
)
|
||||
|
||||
// ToHeader converts JavaScript sides Headers to http.Header.
|
||||
// - Headers: https://developer.mozilla.org/ja/docs/Web/API/Headers
|
||||
func ToHeader(headers js.Value) http.Header {
|
||||
entries := jsutil.ArrayFrom(headers.Call("entries"))
|
||||
headerLen := entries.Length()
|
||||
h := http.Header{}
|
||||
for i := 0; i < headerLen; i++ {
|
||||
entry := entries.Index(i)
|
||||
key := entry.Index(0).String()
|
||||
values := entry.Index(1).String()
|
||||
for _, value := range strings.Split(values, ",") {
|
||||
h.Add(key, value)
|
||||
}
|
||||
}
|
||||
return h
|
||||
}
|
||||
|
||||
// ToJSHeader converts http.Header to JavaScript sides Headers.
|
||||
// - Headers: https://developer.mozilla.org/ja/docs/Web/API/Headers
|
||||
func ToJSHeader(header http.Header) js.Value {
|
||||
h := jsutil.HeadersClass.New()
|
||||
for key, values := range header {
|
||||
for _, value := range values {
|
||||
h.Call("append", key, value)
|
||||
}
|
||||
}
|
||||
return h
|
||||
}
|
@ -11,7 +11,7 @@ import (
|
||||
"github.com/syumai/workers/internal/jsutil"
|
||||
)
|
||||
|
||||
// ToBody converts JavaScripts sides ReadableStream (can be null) to io.ReadCloser.
|
||||
// ToBody converts JavaScript sides ReadableStream (can be null) to io.ReadCloser.
|
||||
// - ReadableStream: https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream
|
||||
func ToBody(streamOrNull js.Value) io.ReadCloser {
|
||||
if streamOrNull.IsNull() {
|
||||
@ -21,23 +21,6 @@ func ToBody(streamOrNull js.Value) io.ReadCloser {
|
||||
return io.NopCloser(jsutil.ConvertStreamReaderToReader(sr))
|
||||
}
|
||||
|
||||
// ToHeader converts JavaScript sides Headers to http.Header.
|
||||
// - Headers: https://developer.mozilla.org/ja/docs/Web/API/Headers
|
||||
func ToHeader(headers js.Value) http.Header {
|
||||
entries := jsutil.ArrayFrom(headers.Call("entries"))
|
||||
headerLen := entries.Length()
|
||||
h := http.Header{}
|
||||
for i := 0; i < headerLen; i++ {
|
||||
entry := entries.Index(i)
|
||||
key := entry.Index(0).String()
|
||||
values := entry.Index(1).String()
|
||||
for _, value := range strings.Split(values, ",") {
|
||||
h.Add(key, value)
|
||||
}
|
||||
}
|
||||
return h
|
||||
}
|
||||
|
||||
// ToRequest converts JavaScript sides Request to *http.Request.
|
||||
// - Request: https://developer.mozilla.org/ja/docs/Web/API/Request
|
||||
func ToRequest(req js.Value) (*http.Request, error) {
|
||||
|
@ -7,16 +7,6 @@ import (
|
||||
"github.com/syumai/workers/internal/jsutil"
|
||||
)
|
||||
|
||||
func ToJSHeader(header http.Header) js.Value {
|
||||
h := jsutil.HeadersClass.New()
|
||||
for key, values := range header {
|
||||
for _, value := range values {
|
||||
h.Call("append", key, value)
|
||||
}
|
||||
}
|
||||
return h
|
||||
}
|
||||
|
||||
func ToJSResponse(w *ResponseWriterBuffer) (js.Value, error) {
|
||||
<-w.ReadyCh // wait until ready
|
||||
status := w.StatusCode
|
||||
|
Loading…
x
Reference in New Issue
Block a user