Add length deferrer support to FileStore
This commit is contained in:
parent
d40c50f80a
commit
5bf2133b3c
|
@ -55,6 +55,7 @@ func (store FileStore) UseIn(composer *tusd.StoreComposer) {
|
|||
composer.UseTerminater(store)
|
||||
composer.UseLocker(store)
|
||||
composer.UseConcater(store)
|
||||
composer.UseLengthDeferrer(store)
|
||||
}
|
||||
|
||||
func (store FileStore) NewUpload(info tusd.FileInfo) (id string, err error) {
|
||||
|
@ -142,6 +143,16 @@ func (store FileStore) ConcatUploads(dest string, uploads []string) (err error)
|
|||
return
|
||||
}
|
||||
|
||||
func (store FileStore) DeclareLength(id string, length int64) error {
|
||||
info, err := store.GetInfo(id)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
info.Size = length
|
||||
info.SizeIsDeferred = false
|
||||
return store.writeInfo(id, info)
|
||||
}
|
||||
|
||||
func (store FileStore) LockUpload(id string) error {
|
||||
lock, err := store.newLock(id)
|
||||
if err != nil {
|
||||
|
|
|
@ -18,6 +18,7 @@ var _ tusd.GetReaderDataStore = FileStore{}
|
|||
var _ tusd.TerminaterDataStore = FileStore{}
|
||||
var _ tusd.LockerDataStore = FileStore{}
|
||||
var _ tusd.ConcaterDataStore = FileStore{}
|
||||
var _ tusd.LengthDeferrerDataStore = FileStore{}
|
||||
|
||||
func TestFilestore(t *testing.T) {
|
||||
a := assert.New(t)
|
||||
|
@ -146,3 +147,28 @@ func TestConcatUploads(t *testing.T) {
|
|||
a.Equal("abcdefghi", string(content))
|
||||
reader.(io.Closer).Close()
|
||||
}
|
||||
|
||||
func TestDeclareLength(t *testing.T) {
|
||||
a := assert.New(t)
|
||||
|
||||
tmp, err := ioutil.TempDir("", "tusd-filestore-declare-length-")
|
||||
a.NoError(err)
|
||||
|
||||
store := FileStore{tmp}
|
||||
|
||||
originalInfo := tusd.FileInfo{Size: 0, SizeIsDeferred: true}
|
||||
id, err := store.NewUpload(originalInfo)
|
||||
a.NoError(err)
|
||||
|
||||
info, err := store.GetInfo(id)
|
||||
a.Equal(info.Size, originalInfo.Size)
|
||||
a.Equal(info.SizeIsDeferred, originalInfo.SizeIsDeferred)
|
||||
|
||||
size := int64(100)
|
||||
err = store.DeclareLength(id, size)
|
||||
a.NoError(err)
|
||||
|
||||
updatedInfo, err := store.GetInfo(id)
|
||||
a.Equal(updatedInfo.Size, size)
|
||||
a.False(updatedInfo.SizeIsDeferred)
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue