mirror of
https://github.com/get-drexa/drive.git
synced 2025-12-01 14:01:40 +00:00
feat: impl upload service
This commit is contained in:
23
apps/backend/internal/ioext/counting_reader.go
Normal file
23
apps/backend/internal/ioext/counting_reader.go
Normal file
@@ -0,0 +1,23 @@
|
||||
package ioext
|
||||
|
||||
import "io"
|
||||
|
||||
type CountingReader struct {
|
||||
reader io.Reader
|
||||
count int64
|
||||
}
|
||||
|
||||
func NewCountingReader(reader io.Reader) *CountingReader {
|
||||
return &CountingReader{reader: reader}
|
||||
}
|
||||
|
||||
func (r *CountingReader) Read(p []byte) (n int, err error) {
|
||||
n, err = r.reader.Read(p)
|
||||
r.count += int64(n)
|
||||
return n, err
|
||||
}
|
||||
|
||||
func (r *CountingReader) Count() int64 {
|
||||
return r.count
|
||||
}
|
||||
|
||||
24
apps/backend/internal/ioext/limit_read_closer.go
Normal file
24
apps/backend/internal/ioext/limit_read_closer.go
Normal file
@@ -0,0 +1,24 @@
|
||||
package ioext
|
||||
|
||||
import "io"
|
||||
|
||||
type LimitReadCloser struct {
|
||||
reader io.ReadCloser
|
||||
limitReader io.Reader
|
||||
}
|
||||
|
||||
func NewLimitReadCloser(reader io.ReadCloser, length int64) *LimitReadCloser {
|
||||
return &LimitReadCloser{
|
||||
reader: reader,
|
||||
limitReader: io.LimitReader(reader, length),
|
||||
}
|
||||
}
|
||||
|
||||
func (r *LimitReadCloser) Read(p []byte) (n int, err error) {
|
||||
return r.limitReader.Read(p)
|
||||
}
|
||||
|
||||
func (r *LimitReadCloser) Close() error {
|
||||
return r.reader.Close()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user