From 99b15cf7afa254d45e7e53b3933a7dea8c2f5567 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Felix=20Geisendo=CC=88rfer?= Date: Tue, 19 Mar 2013 10:36:08 +0100 Subject: [PATCH] Finish DataStore --- src/cmd/tusd/data.go | 46 -------------------------------------- src/cmd/tusd/data_store.go | 16 ++++++++++++- src/cmd/tusd/http.go | 4 ++-- 3 files changed, 17 insertions(+), 49 deletions(-) delete mode 100644 src/cmd/tusd/data.go diff --git a/src/cmd/tusd/data.go b/src/cmd/tusd/data.go deleted file mode 100644 index a751a06..0000000 --- a/src/cmd/tusd/data.go +++ /dev/null @@ -1,46 +0,0 @@ -package main - -// This is very simple for now and will be enhanced as needed. - -import ( - "io" - "os" - "path" -) - -var dataDir string - -func init() { - wd, err := os.Getwd() - if err != nil { - panic(err) - } - - dataDir = path.Join(wd, "tus_data") - if err := os.MkdirAll(dataDir, 0777); err != nil { - panic(err) - } -} - -func dataPath(fileId string) string { - return path.Join(dataDir, fileId) -} - -func logPath(fileId string) string { - return dataPath(fileId) + ".log" -} - -func getFileData(fileId string) (io.ReadCloser, int64, error) { - d := dataPath(fileId) - file, err := os.Open(d) - if err != nil { - return nil, 0, err - } - - stat, err := file.Stat() - if err != nil { - return nil, 0, err - } - - return file, stat.Size(), nil -} diff --git a/src/cmd/tusd/data_store.go b/src/cmd/tusd/data_store.go index b746e75..9135cac 100644 --- a/src/cmd/tusd/data_store.go +++ b/src/cmd/tusd/data_store.go @@ -34,7 +34,7 @@ func (s *DataStore) CreateFile(id string, size int64) error { } func (s *DataStore) WriteFileChunk(id string, start int64, end int64, src io.Reader) error { - file, err := os.OpenFile(dataPath(id), os.O_WRONLY, 0666) + file, err := os.OpenFile(s.filePath(id), os.O_WRONLY, 0666) if err != nil { return err } @@ -92,6 +92,20 @@ func (s *DataStore) GetFileChunks(id string) (chunkSet, error) { return chunks, nil } +func (s *DataStore) ReadFile(id string) (io.ReadCloser, int64, error) { + file, err := os.Open(s.filePath(id)) + if err != nil { + return nil, 0, err + } + + stat, err := file.Stat() + if err != nil { + return nil, 0, err + } + + return file, stat.Size(), nil +} + func (s *DataStore) appendFileLog(id string, entry string) error { logPath := s.logPath(id) logFile, err := os.OpenFile(logPath, os.O_APPEND|os.O_WRONLY|os.O_CREATE, 0666) diff --git a/src/cmd/tusd/http.go b/src/cmd/tusd/http.go index 10cab04..92c8ad4 100644 --- a/src/cmd/tusd/http.go +++ b/src/cmd/tusd/http.go @@ -20,7 +20,7 @@ func init() { panic(err) } - dataDir = path.Join(wd, "tus_data") + dataDir := path.Join(wd, "tus_data") if err := os.MkdirAll(dataDir, 0777); err != nil { panic(err) } @@ -106,7 +106,7 @@ func headFile(w http.ResponseWriter, r *http.Request, fileId string) { } func getFile(w http.ResponseWriter, r *http.Request, fileId string) { - data, size, err := getFileData(fileId) + data, size, err := dataStore.ReadFile(fileId) if err != nil { // @TODO: Could be a 404 as well reply(w, http.StatusInternalServerError, err.Error())