From 60de12dfce2ff7e2e9c8dec2ae232ec9ac847c4d Mon Sep 17 00:00:00 2001 From: Soam Vasani Date: Fri, 2 Sep 2016 11:44:53 -0700 Subject: [PATCH] Add delete command to fileStore --- src/controller/fileStore.go | 23 +++++++++++++++++++---- src/controller/fileStore_test.go | 5 +++++ 2 files changed, 24 insertions(+), 4 deletions(-) diff --git a/src/controller/fileStore.go b/src/controller/fileStore.go index 5cade415..79f8b26a 100644 --- a/src/controller/fileStore.go +++ b/src/controller/fileStore.go @@ -19,6 +19,7 @@ package controller import ( "io/ioutil" "log" + "os" "path" ) @@ -27,6 +28,7 @@ type requestType int const ( READ requestType = iota WRITE + DELETE ) type ( @@ -67,6 +69,8 @@ func (fs *fileStore) fileStoreService() { response.fileContents, response.error = ioutil.ReadFile(path.Join(fs.root, req.fileName)) case WRITE: response.error = ioutil.WriteFile(path.Join(fs.root, req.fileName), req.fileContents, 0600) + case DELETE: + response.error = os.Remove(path.Join(fs.root, req.fileName)) default: log.Panic("bad request") } @@ -75,24 +79,35 @@ func (fs *fileStore) fileStoreService() { } func (fs *fileStore) read(fileName string) ([]byte, error) { - req := &fileStoreRequest{ + req := fileStoreRequest{ requestType: READ, fileName: fileName, responseChannel: make(chan fileStoreResponse), } - fs.requestChannel <- *req + fs.requestChannel <- req response := <-req.responseChannel return response.fileContents, response.error } func (fs *fileStore) write(fileName string, contents []byte) error { - req := &fileStoreRequest{ + req := fileStoreRequest{ requestType: WRITE, fileName: fileName, fileContents: contents, responseChannel: make(chan fileStoreResponse), } - fs.requestChannel <- *req + fs.requestChannel <- req + response := <-req.responseChannel + return response.error +} + +func (fs *fileStore) delete(fileName string) error { + req := fileStoreRequest{ + requestType: DELETE, + fileName: fileName, + responseChannel: make(chan fileStoreResponse), + } + fs.requestChannel <- req response := <-req.responseChannel return response.error } diff --git a/src/controller/fileStore_test.go b/src/controller/fileStore_test.go index d93393c2..79fac437 100644 --- a/src/controller/fileStore_test.go +++ b/src/controller/fileStore_test.go @@ -55,4 +55,9 @@ func TestFileStore(t *testing.T) { if string(observedContents) != string(contents) { t.Fatalf("contents don't match") } + + err = fs.delete(path) + if err != nil { + t.Fatalf("error: %v", err) + } }