2023-02-23 23:30:01 +09:00

39 lines
945 B
Go

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/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/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
}