first commit

This commit is contained in:
cdle
2023-06-01 08:41:54 +08:00
parent 61b0e99833
commit d253ed8d5b
80 changed files with 14245 additions and 0 deletions
+66
View File
@@ -0,0 +1,66 @@
package core
import (
"net/http"
"github.com/dop251/goja"
)
func MakeHeadersObject(vm *goja.Runtime, header http.Header) *goja.Object {
obj := vm.NewObject()
obj.Set("get", func(name string) string {
return header.Get(name)
})
obj.Set("has", func(name string) bool {
return header.Get(name) != ""
})
obj.Set("set", func(name, value string) {
header.Set(name, value)
})
obj.Set("append", func(name, value string) {
header.Add(name, value)
})
obj.Set("delete", func(name string) {
header.Del(name)
})
obj.Set("keys", func() []string {
keys := make([]string, 0, len(header))
for k := range header {
keys = append(keys, k)
}
return keys
})
obj.Set("values", func() []string {
values := make([]string, 0, len(header))
for _, v := range header {
values = append(values, v...)
}
return values
})
obj.Set("entries", func() [][2]string {
entries := make([][2]string, 0, len(header))
for k, v := range header {
for _, value := range v {
entries = append(entries, [2]string{k, value})
}
}
return entries
})
obj.Set("forEach", func(callback func(value, name string)) {
for k, v := range header {
for _, value := range v {
callback(value, k)
}
}
})
return obj
}