From e9fb3aed26df97fc8485c1b47c396e1a127dace5 Mon Sep 17 00:00:00 2001 From: Travis Ralston <travpc@gmail.com> Date: Sat, 26 Aug 2023 12:45:40 -0600 Subject: [PATCH] Use built-in MultiReader --- thumbnailing/i/01-factories.go | 2 +- thumbnailing/thumbnail.go | 2 +- util/readers/buffer_reads_reader.go | 8 +++---- util/readers/prefixed_reader.go | 36 ----------------------------- 4 files changed, 6 insertions(+), 42 deletions(-) delete mode 100644 util/readers/prefixed_reader.go diff --git a/thumbnailing/i/01-factories.go b/thumbnailing/i/01-factories.go index 4e2fc6e0..4ad58e3f 100644 --- a/thumbnailing/i/01-factories.go +++ b/thumbnailing/i/01-factories.go @@ -23,7 +23,7 @@ type AudioGenerator interface { var generators = make([]Generator, 0) -func GetGenerator(img io.Reader, contentType string, needsAnimation bool) (Generator, *readers.PrefixedReader) { +func GetGenerator(img io.Reader, contentType string, needsAnimation bool) (Generator, io.Reader) { br := readers.NewBufferReadsReader(img) for _, g := range generators { if needsAnimation && !g.supportsAnimation() { diff --git a/thumbnailing/thumbnail.go b/thumbnailing/thumbnail.go index 6759ce27..e1fc5df8 100644 --- a/thumbnailing/thumbnail.go +++ b/thumbnailing/thumbnail.go @@ -54,7 +54,7 @@ func GenerateThumbnail(imgStream io.ReadCloser, contentType string, width int, h return generator.GenerateThumbnail(buffered.GetRewoundReader(), contentType, width, height, method, animated, ctx) } -func GetGenerator(imgStream io.Reader, contentType string, animated bool) (i.Generator, *readers.PrefixedReader, error) { +func GetGenerator(imgStream io.Reader, contentType string, animated bool) (i.Generator, io.Reader, error) { generator, reconstructed := i.GetGenerator(imgStream, contentType, animated) if generator == nil { return nil, reconstructed, ErrUnsupported diff --git a/util/readers/buffer_reads_reader.go b/util/readers/buffer_reads_reader.go index 84918f39..8382029c 100644 --- a/util/readers/buffer_reads_reader.go +++ b/util/readers/buffer_reads_reader.go @@ -11,7 +11,7 @@ type BufferReadsReader struct { r io.Reader original io.Reader b *bytes.Buffer - pr *PrefixedReader + pr io.Reader } func NewBufferReadsReader(r io.Reader) *BufferReadsReader { @@ -32,15 +32,15 @@ func (r *BufferReadsReader) Read(p []byte) (int, error) { return r.r.Read(p) } -func (r *BufferReadsReader) MakeRewoundReader() (*PrefixedReader, error) { +func (r *BufferReadsReader) MakeRewoundReader() (io.Reader, error) { if r.pr != nil { return r.pr, errors.New("prefixed reader already created from this reader") } - r.pr = NewPrefixedReader(r.b, r.original) + r.pr = io.MultiReader(r.b, r.original) return r.pr, nil } -func (r *BufferReadsReader) GetRewoundReader() *PrefixedReader { +func (r *BufferReadsReader) GetRewoundReader() io.Reader { pr, _ := r.MakeRewoundReader() return pr } diff --git a/util/readers/prefixed_reader.go b/util/readers/prefixed_reader.go deleted file mode 100644 index 6079da31..00000000 --- a/util/readers/prefixed_reader.go +++ /dev/null @@ -1,36 +0,0 @@ -package readers - -import ( - "bytes" - "io" -) - -type PrefixedReader struct { - io.Reader - b *bytes.Buffer - r io.Reader - inBuffer bool -} - -func NewPrefixedReader(prefix *bytes.Buffer, r io.Reader) *PrefixedReader { - return &PrefixedReader{ - b: prefix, - r: r, - inBuffer: prefix.Len() > 0, - } -} - -func (r *PrefixedReader) Read(p []byte) (int, error) { - if r.inBuffer { - read, err := r.b.Read(p) - if err == io.EOF { - r.inBuffer = false - return read, nil - } - if r.b.Len() <= 0 { - r.inBuffer = false - } - return read, err - } - return r.r.Read(p) -} -- GitLab