From 0c16aedc29ac403f62e5313ecccfbb8eb7d1ea4b Mon Sep 17 00:00:00 2001 From: Acconut Date: Mon, 16 Feb 2015 17:53:50 +0100 Subject: [PATCH] use tusd.FileInfo in DataStore.NewUpload --- .gitignore | 1 + datastore.go | 4 ++-- filestore/filestore.go | 9 ++------- filestore/filestore_test.go | 9 +++++++-- handler.go | 7 ++++++- handler_test.go | 2 +- post_test.go | 7 ++++--- 7 files changed, 23 insertions(+), 16 deletions(-) diff --git a/.gitignore b/.gitignore index 4270048..63d6663 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ tusd/data cover.out +data/ diff --git a/datastore.go b/datastore.go index ed3788f..1da9aa6 100644 --- a/datastore.go +++ b/datastore.go @@ -19,8 +19,8 @@ type DataStore interface { // Create a new upload using the size as the file's length. The method must // return an unique id which is used to identify the upload. If no backend // (e.g. Riak) specifes the id you may want to use the uid package to - // generate one. - NewUpload(size int64, metaData MetaData) (id string, err error) + // generate one. The properties Size and MetaData will be filled. + NewUpload(info FileInfo) (id string, err error) // Write the chunk read from src into the file specified by the id at the // given offset. The handler will take care of validating the offset and // limiting the size of the src to not overflow the file's size. It may diff --git a/filestore/filestore.go b/filestore/filestore.go index 4fba952..49960fc 100644 --- a/filestore/filestore.go +++ b/filestore/filestore.go @@ -26,14 +26,9 @@ type FileStore struct { Path string } -func (store FileStore) NewUpload(size int64, metaData tusd.MetaData) (id string, err error) { +func (store FileStore) NewUpload(info tusd.FileInfo) (id string, err error) { id = uid.Uid() - info := tusd.FileInfo{ - Id: id, - Size: size, - Offset: 0, - MetaData: metaData, - } + info.Id = id // Create .bin file with no content file, err := os.OpenFile(store.binPath(id), os.O_CREATE|os.O_WRONLY, defaultFilePerm) diff --git a/filestore/filestore_test.go b/filestore/filestore_test.go index a13d807..d77c843 100644 --- a/filestore/filestore_test.go +++ b/filestore/filestore_test.go @@ -4,6 +4,8 @@ import ( "io/ioutil" "strings" "testing" + + "github.com/tus/tusd" ) func TestFilestore(t *testing.T) { @@ -15,8 +17,11 @@ func TestFilestore(t *testing.T) { store := FileStore{tmp} // Create new upload - id, err := store.NewUpload(42, map[string]string{ - "hello": "world", + id, err := store.NewUpload(tusd.FileInfo{ + Size: 42, + MetaData: map[string]string{ + "hello": "world", + }, }) if err != nil { t.Fatal(err) diff --git a/handler.go b/handler.go index a67f047..a2ae5da 100644 --- a/handler.go +++ b/handler.go @@ -168,7 +168,12 @@ func (handler *Handler) postFile(w http.ResponseWriter, r *http.Request) { // Parse metadata meta := parseMeta(r.Header.Get("Metadata")) - id, err := handler.dataStore.NewUpload(size, meta) + info := FileInfo{ + Size: size, + MetaData: meta, + } + + id, err := handler.dataStore.NewUpload(info) if err != nil { handler.sendError(w, err) return diff --git a/handler_test.go b/handler_test.go index 05426f7..85d679e 100644 --- a/handler_test.go +++ b/handler_test.go @@ -6,7 +6,7 @@ import ( type zeroStore struct{} -func (store zeroStore) NewUpload(size int64, metaData MetaData) (string, error) { +func (store zeroStore) NewUpload(info FileInfo) (string, error) { return "", nil } func (store zeroStore) WriteChunk(id string, offset int64, src io.Reader) error { diff --git a/post_test.go b/post_test.go index 2ef0b29..a4dac3f 100644 --- a/post_test.go +++ b/post_test.go @@ -11,11 +11,12 @@ type postStore struct { zeroStore } -func (s postStore) NewUpload(size int64, metaData MetaData) (string, error) { - if size != 300 { - s.t.Errorf("Expected size to be 300 (got %v)", size) +func (s postStore) NewUpload(info FileInfo) (string, error) { + if info.Size != 300 { + s.t.Errorf("Expected size to be 300 (got %v)", info.Size) } + metaData := info.MetaData if len(metaData) != 2 { s.t.Errorf("Expected two elements in metadata") }