From ddaaeb53ace92e8f30e8d7380403bf57c79b28ae Mon Sep 17 00:00:00 2001 From: syumai Date: Thu, 23 Feb 2023 23:25:43 +0900 Subject: [PATCH] split jshttp/header.go --- internal/jshttp/header.go | 38 +++++++++++++++++++++++++++++++++++++ internal/jshttp/request.go | 19 +------------------ internal/jshttp/response.go | 10 ---------- 3 files changed, 39 insertions(+), 28 deletions(-) create mode 100644 internal/jshttp/header.go diff --git a/internal/jshttp/header.go b/internal/jshttp/header.go new file mode 100644 index 0000000..8c76f43 --- /dev/null +++ b/internal/jshttp/header.go @@ -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 +} diff --git a/internal/jshttp/request.go b/internal/jshttp/request.go index 655a0d3..a268f69 100644 --- a/internal/jshttp/request.go +++ b/internal/jshttp/request.go @@ -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) { diff --git a/internal/jshttp/response.go b/internal/jshttp/response.go index 5205c57..e9c98cf 100644 --- a/internal/jshttp/response.go +++ b/internal/jshttp/response.go @@ -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