diff --git a/spike/review/reinvent/ezmded/server/server.go b/spike/review/reinvent/ezmded/server/server.go index 0676b82..fa031bf 100644 --- a/spike/review/reinvent/ezmded/server/server.go +++ b/spike/review/reinvent/ezmded/server/server.go @@ -71,6 +71,13 @@ func (server *Server) apiV0TreeHandler(w http.ResponseWriter, r *http.Request) e return json.NewEncoder(w).Encode(branches) } +func ensureAndWrite(p string, b []byte) error { + if err := os.MkdirAll(path.Dir(p), os.ModePerm); err != nil { + return err + } + return ioutil.WriteFile(p, b, os.ModePerm) +} + func (server *Server) apiV0MediaHandler(w http.ResponseWriter, r *http.Request) error { if r.Method != http.MethodPost { http.NotFound(w, r) @@ -81,8 +88,7 @@ func (server *Server) apiV0MediaHandler(w http.ResponseWriter, r *http.Request) return err } id := uuid.New().String() - os.MkdirAll(path.Dir(server.diskMediaPath(id)), os.ModePerm) - if err := ioutil.WriteFile(server.diskMediaPath(id), b, os.ModePerm); err != nil { + if err := ensureAndWrite(server.diskMediaPath(id), b); err != nil { return err } return json.NewEncoder(w).Encode(map[string]map[string]string{ diff --git a/spike/review/reinvent/ezmded/server/server_test.go b/spike/review/reinvent/ezmded/server/server_test.go index ee982ec..e5bdd6c 100644 --- a/spike/review/reinvent/ezmded/server/server_test.go +++ b/spike/review/reinvent/ezmded/server/server_test.go @@ -2,11 +2,8 @@ package main import ( "bytes" - "io/ioutil" "net/http" "net/http/httptest" - "os" - "path" "testing" ) @@ -16,8 +13,7 @@ func TestServerRoutes(t *testing.T) { t.Fatal(err) } - os.MkdirAll(path.Dir(server.diskMediaPath("id")), os.ModePerm) - ioutil.WriteFile(server.diskMediaPath("id"), []byte("hi"), os.ModePerm) + ensureAndWrite(server.diskMediaPath("id"), []byte("hi")) cases := map[string]struct { path string