diff --git a/internal/htmlrewrite/rawbody.go b/internal/htmlrewrite/rawbody.go index 60f76212..80958297 100644 --- a/internal/htmlrewrite/rawbody.go +++ b/internal/htmlrewrite/rawbody.go @@ -6,7 +6,6 @@ import ( "compress/gzip" "fmt" "io" - "mime" "net/http" "strings" @@ -31,13 +30,7 @@ func readRawBody(res *http.Response) ([]byte, error) { return nil, fmt.Errorf("create decompressed reader: %w", err) } - contentType := res.Header.Get("Content-Type") - _, params, err := mime.ParseMediaType(contentType) - if err != nil { - res.Body = io.NopCloser(bytes.NewReader(resBytes)) - return nil, fmt.Errorf("parse media type: %w", err) - } - decodedReader, err := decodeReader(decompressedReader, params["charset"]) + decodedReader, err := charset.NewReader(decompressedReader, res.Header.Get("Content-Type")) if err != nil { decompressedReader.Close() res.Body = io.NopCloser(bytes.NewReader(resBytes)) @@ -80,18 +73,3 @@ func decompressReader(reader io.Reader, compressionAlg string) (io.ReadCloser, e return nil, fmt.Errorf("unsupported encoding %q", compressionAlg) } } - -// decodeReader decodes the reader based on the provided character encoding. -func decodeReader(reader io.Reader, encoding string) (io.Reader, error) { - // Reference: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Type#media-type - switch strings.ToLower(encoding) { - case "utf-8", "us-ascii", "": - return reader, nil - default: - encoding, _ := charset.Lookup(encoding) - if encoding == nil { - return nil, fmt.Errorf("unsupported charset %q", encoding) - } - return encoding.NewDecoder().Reader(reader), nil - } -}