mirror of
https://github.com/syumai/workers.git
synced 2025-03-10 17:29:11 +00:00
39 lines
945 B
Go
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
|
|
}
|