Remove LazyReadSeeker

This commit is contained in:
Dominik Schmidt
2023-10-30 11:15:20 +01:00
parent 0b88ef8c95
commit a9141146fb
2 changed files with 6 additions and 64 deletions

View File

@@ -1,60 +0,0 @@
package preprocessor
import (
"io"
"github.com/pkg/errors"
)
type LazyReadSeeker struct {
reader io.Reader
buffer []byte
position int64
}
func NewLazyReadSeeker(r io.Reader) *LazyReadSeeker {
return &LazyReadSeeker{
reader: r,
buffer: make([]byte, 0),
}
}
func (l *LazyReadSeeker) Read(p []byte) (int, error) {
// Fill buffer if necessary
if l.position >= int64(len(l.buffer)) {
temp := make([]byte, len(p))
n, err := l.reader.Read(temp)
if err != nil && err != io.EOF {
return 0, err
}
if n == 0 {
return 0, io.EOF
}
l.buffer = append(l.buffer, temp[:n]...)
}
// Read from buffer
n := copy(p, l.buffer[l.position:])
l.position += int64(n)
return n, nil
}
func (l *LazyReadSeeker) Seek(offset int64, whence int) (int64, error) {
var newPos int64
switch whence {
case io.SeekStart:
newPos = offset
case io.SeekCurrent:
newPos = l.position + offset
default:
return 0, errors.New("seekEnd is not supported")
}
if newPos < 0 {
return 0, errors.New("negative position is invalid")
}
l.position = newPos
return l.position, nil
}

View File

@@ -7,7 +7,6 @@ import (
"image/draw"
"image/gif"
"io"
"log"
"math"
"mime"
"strings"
@@ -48,10 +47,13 @@ func (i GifDecoder) Convert(r io.Reader) (interface{}, error) {
type AudioDecoder struct{}
func (i AudioDecoder) Convert(r io.Reader) (interface{}, error) {
readSeeker := NewLazyReadSeeker(r)
m, err := tag.ReadFrom(readSeeker)
b, err := io.ReadAll(r)
if err != nil {
log.Fatal(err)
return nil, err
}
m, err := tag.ReadFrom(bytes.NewReader(b))
if err != nil {
return nil, err
}
picture := m.Picture()