From 343a8c5f45a50c2d1cf7bed5d766e555bdb12702 Mon Sep 17 00:00:00 2001 From: Yonah Date: Thu, 18 Sep 2025 04:53:05 +0900 Subject: [PATCH] generic: provide configured encoder This encoder emits data identical to upstream API response body. Signed-off-by: Yonah --- generic.go | 7 +++++++ generic_test.go | 5 +---- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/generic.go b/generic.go index 12cd880..2df3c4c 100644 --- a/generic.go +++ b/generic.go @@ -75,3 +75,10 @@ func (i *StringInt) UnmarshalJSON(data []byte) (err error) { } return } + +// NewEncoder returns a new encoder that writes to w, configured to match upstream API behaviour. +func NewEncoder(w io.Writer) *json.Encoder { + e := json.NewEncoder(w) + e.SetEscapeHTML(false) + return e +} diff --git a/generic_test.go b/generic_test.go index 385cb76..4b3ccc8 100644 --- a/generic_test.go +++ b/generic_test.go @@ -84,10 +84,7 @@ func checkJSONRoundTrip[T any](t *testing.T, v T, data []byte) { t.Run("marshal", func(t *testing.T) { buf := new(bytes.Buffer) buf.Grow(len(data)) - e := json.NewEncoder(buf) - // to match upstream behaviour - e.SetEscapeHTML(false) - err := e.Encode(&v) + err := NewEncoder(buf).Encode(&v) if err != nil { t.Fatalf("Marshal: error = %v", err) }