mirror of
https://git.rwth-aachen.de/acs/public/villas/web-backend-go/
synced 2025-03-30 00:00:12 +01:00
implement DELETE endpoint for files, cleanup
This commit is contained in:
parent
fc91ebc64c
commit
304680603d
3 changed files with 33 additions and 95 deletions
|
@ -6,7 +6,6 @@ import (
|
|||
"fmt"
|
||||
"net/http"
|
||||
"net/http/httptest"
|
||||
"strconv"
|
||||
"testing"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
|
@ -35,21 +34,6 @@ func ProvideErrorResponse(c *gin.Context, err error) bool {
|
|||
return false // No error
|
||||
}
|
||||
|
||||
func GetFileID(c *gin.Context) (int, error) {
|
||||
|
||||
fileID, err := strconv.Atoi(c.Param("fileID"))
|
||||
|
||||
if err != nil {
|
||||
errormsg := fmt.Sprintf("Bad request. No or incorrect format of file ID")
|
||||
c.JSON(http.StatusBadRequest, gin.H{
|
||||
"error": errormsg,
|
||||
})
|
||||
return -1, err
|
||||
} else {
|
||||
return fileID, err
|
||||
}
|
||||
}
|
||||
|
||||
func TestEndpoint(t *testing.T, router *gin.Engine, token string, url string, method string, body []byte, expected_code int, expected_response string) {
|
||||
w := httptest.NewRecorder()
|
||||
|
||||
|
|
|
@ -104,12 +104,6 @@ func (f *File) register(fileHeader *multipart.FileHeader, objectType string, obj
|
|||
f.FileData, err = ioutil.ReadAll(fileContent)
|
||||
defer fileContent.Close()
|
||||
|
||||
// Save file to local disc (NOT DB!)
|
||||
//err = f.modifyFileOnDisc(fileHeader, true)
|
||||
//if err != nil {
|
||||
// return fmt.Errorf("File could not be saved/ modified on disk: ", err.Error())
|
||||
//}
|
||||
|
||||
// Add File object with parameters to DB
|
||||
err = f.save()
|
||||
if err != nil {
|
||||
|
@ -146,11 +140,6 @@ func (f *File) update(fileHeader *multipart.FileHeader) error {
|
|||
fmt.Println("File content: ", string(fileData))
|
||||
defer fileContent.Close()
|
||||
|
||||
//err := f.modifyFileOnDisc(fileHeader, false)
|
||||
//if err != nil {
|
||||
// return err
|
||||
//}
|
||||
|
||||
db := common.GetDB()
|
||||
err = db.Model(f).Updates(map[string]interface{}{"Size": fileHeader.Size,
|
||||
"FileData": fileData,
|
||||
|
@ -159,70 +148,35 @@ func (f *File) update(fileHeader *multipart.FileHeader) error {
|
|||
}
|
||||
|
||||
func (f *File) delete() error {
|
||||
return nil
|
||||
|
||||
db := common.GetDB()
|
||||
|
||||
if f.WidgetID > 0 {
|
||||
// remove association between file and widget
|
||||
var w widget.Widget
|
||||
err := w.ByID(f.WidgetID)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
err = db.Model(&w).Association("Files").Delete(f).Error
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
} else {
|
||||
// remove association between file and simulation model
|
||||
var m simulationmodel.SimulationModel
|
||||
err := m.ByID(f.SimulationModelID)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
err = db.Model(&m).Association("Files").Delete(f).Error
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
// delete file from DB
|
||||
err := db.Delete(f).Error
|
||||
|
||||
return err
|
||||
}
|
||||
|
||||
//func (f *File) modifyFileOnDisc(fileHeader *multipart.FileHeader, createFile bool) error {
|
||||
//
|
||||
// //filesavepath := filepath.Join(foldername, filename)
|
||||
// var err error
|
||||
//
|
||||
// if createFile {
|
||||
// // Ensure folder with name foldername exists
|
||||
// err = os.MkdirAll(f.Path, os.ModePerm)
|
||||
// } else {
|
||||
// // test if file exists
|
||||
// _, err = os.Stat(f.Path)
|
||||
// }
|
||||
// if err != nil {
|
||||
// return err
|
||||
// }
|
||||
//
|
||||
// var open_options int
|
||||
// if createFile {
|
||||
// // create file it not exists, file MUST not exist
|
||||
// open_options = os.O_RDWR | os.O_CREATE | os.O_EXCL
|
||||
// } else {
|
||||
// open_options = os.O_RDWR
|
||||
// }
|
||||
//
|
||||
// fileTarget, err := os.OpenFile(f.Path, open_options, 0666)
|
||||
// if err != nil {
|
||||
// return err
|
||||
// }
|
||||
// defer fileTarget.Close()
|
||||
//
|
||||
// // Save file to target path
|
||||
// uploadedFile, err := fileHeader.Open()
|
||||
// if err != nil {
|
||||
// return err
|
||||
// }
|
||||
// defer uploadedFile.Close()
|
||||
//
|
||||
// var uploadContent = make([]byte, f.Size)
|
||||
// for {
|
||||
//
|
||||
// n, err := uploadedFile.Read(uploadContent)
|
||||
// if err != nil && err != io.EOF {
|
||||
// return err
|
||||
// }
|
||||
//
|
||||
// if n == 0 {
|
||||
// break
|
||||
// }
|
||||
//
|
||||
// _, err = fileTarget.Write(uploadContent[:n])
|
||||
// if err != nil {
|
||||
// return err
|
||||
// }
|
||||
//
|
||||
// }
|
||||
// return err
|
||||
//}
|
||||
|
||||
//func getFolderName(objectType string, objectID uint) string {
|
||||
// base_foldername := "files/"
|
||||
//
|
||||
// foldername := base_foldername + objectType + "_" + strconv.Itoa(int(objectID)) + "/"
|
||||
// return foldername
|
||||
//}
|
||||
|
|
|
@ -198,8 +198,8 @@ func TestSignalEndpoints(t *testing.T) {
|
|||
common.TestEndpoint(t, router, token, "/api/files/5", "GET", nil, 200, filecontent_update)
|
||||
|
||||
// test DELETE files/:fileID
|
||||
//common.TestEndpoint(t, router, token, "/api/files/3", "DELETE", nil, 200, string(msgOKjson))
|
||||
//common.TestEndpoint(t, router, token, "/api/files?originID=1&originType=widget", "GET", nil, 200, string(msgFilesjson))
|
||||
common.TestEndpoint(t, router, token, "/api/files/5", "DELETE", nil, 200, string(msgOKjson))
|
||||
common.TestEndpoint(t, router, token, "/api/files?objectID=1&objectType=widget", "GET", nil, 200, string(msgFilesjson))
|
||||
|
||||
// TODO add testing for other return codes
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue