mirror of
https://github.com/opencloud-eu/opencloud.git
synced 2026-01-06 04:09:40 -06:00
Remove LazyReadSeeker
This commit is contained in:
@@ -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
|
||||
}
|
||||
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user