Skip to content

Commit

Permalink
Add length deferrer support to FileStore
Browse files Browse the repository at this point in the history
  • Loading branch information
acj committed Jun 3, 2018
1 parent d40c50f commit 5bf2133
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 0 deletions.
11 changes: 11 additions & 0 deletions filestore/filestore.go
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand Down Expand Up @@ -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 {
Expand Down
26 changes: 26 additions & 0 deletions filestore/filestore_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down Expand Up @@ -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)
}

0 comments on commit 5bf2133

Please sign in to comment.