File overwriting support. Fixes #8
This commit is contained in:
parent
8ad079ed0a
commit
e9132a1193
|
@ -645,6 +645,49 @@ func TestPutAndDelete(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestPutAndOverwrite(t *testing.T) {
|
||||||
|
var myjson RespOkJSON
|
||||||
|
|
||||||
|
w := httptest.NewRecorder()
|
||||||
|
|
||||||
|
req, err := http.NewRequest("PUT", "/upload", strings.NewReader("File content"))
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
req.Header.Set("Accept", "application/json")
|
||||||
|
|
||||||
|
goji.DefaultMux.ServeHTTP(w, req)
|
||||||
|
|
||||||
|
err = json.Unmarshal([]byte(w.Body.String()), &myjson)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Overwrite it
|
||||||
|
w = httptest.NewRecorder()
|
||||||
|
req, err = http.NewRequest("PUT", "/upload/"+myjson.Filename, strings.NewReader("New file content"))
|
||||||
|
req.Header.Set("Linx-Delete-Key", myjson.Delete_Key)
|
||||||
|
goji.DefaultMux.ServeHTTP(w, req)
|
||||||
|
|
||||||
|
if w.Code != 200 {
|
||||||
|
t.Fatal("Status code was not 200, but " + strconv.Itoa(w.Code))
|
||||||
|
}
|
||||||
|
|
||||||
|
// Make sure it's the new file
|
||||||
|
w = httptest.NewRecorder()
|
||||||
|
req, err = http.NewRequest("GET", "/selif/"+myjson.Filename, nil)
|
||||||
|
goji.DefaultMux.ServeHTTP(w, req)
|
||||||
|
|
||||||
|
if w.Code == 404 {
|
||||||
|
t.Fatal("Status code was 404")
|
||||||
|
}
|
||||||
|
|
||||||
|
if w.Body.String() != "New file content" {
|
||||||
|
t.Fatal("File did not contain 'New file content")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func TestPutAndSpecificDelete(t *testing.T) {
|
func TestPutAndSpecificDelete(t *testing.T) {
|
||||||
var myjson RespOkJSON
|
var myjson RespOkJSON
|
||||||
|
|
||||||
|
|
10
upload.go
10
upload.go
|
@ -220,6 +220,16 @@ func processUpload(upReq UploadRequest) (upload Upload, err error) {
|
||||||
_, err = os.Stat(path.Join(Config.filesDir, upload.Filename))
|
_, err = os.Stat(path.Join(Config.filesDir, upload.Filename))
|
||||||
|
|
||||||
fileexists := err == nil
|
fileexists := err == nil
|
||||||
|
// Check if the delete key matches, in which case overwrite
|
||||||
|
if fileexists {
|
||||||
|
metad, merr := metadataRead(upload.Filename)
|
||||||
|
if merr == nil {
|
||||||
|
if upReq.deletionKey == metad.DeleteKey {
|
||||||
|
fileexists = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
for fileexists {
|
for fileexists {
|
||||||
counter, err := strconv.Atoi(string(barename[len(barename)-1]))
|
counter, err := strconv.Atoi(string(barename[len(barename)-1]))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
Loading…
Reference in New Issue