Indicate duplicate upload slots to the client

This commit is contained in:
simon987 2019-03-10 10:48:46 -04:00
parent b611c4d1cf
commit b05c9f2b1a
3 changed files with 34 additions and 6 deletions

View File

@ -53,11 +53,18 @@ func (api *WebApi) AllocateUploadSlot(ctx *fasthttp.RequestCtx) {
return
}
api.allocateUploadSlot(req)
err = api.allocateUploadSlot(req)
Json(GenericResponse{
Ok: true,
}, ctx)
if err == nil {
Json(GenericResponse{
Ok: true,
}, ctx)
} else {
Json(GenericResponse{
Ok: false,
Message: err.Error(),
}, ctx)
}
}
func (api *WebApi) Upload(ctx *fasthttp.RequestCtx) {
@ -178,7 +185,7 @@ func (api *WebApi) ReadUploadSlot(ctx *fasthttp.RequestCtx) {
mu.(*sync.RWMutex).RUnlock()
}
func (api *WebApi) allocateUploadSlot(req *AllocateUploadSlotRequest) {
func (api *WebApi) allocateUploadSlot(req *AllocateUploadSlotRequest) error {
slot := &UploadSlot{
MaxSize: req.MaxSize,
@ -190,5 +197,5 @@ func (api *WebApi) allocateUploadSlot(req *AllocateUploadSlotRequest) {
"slot": slot,
}).Info("Allocated new upload slot")
api.db.Create(slot)
return api.db.Create(slot).Error
}

View File

@ -4,6 +4,7 @@ import (
"github.com/jinzhu/gorm"
_ "github.com/jinzhu/gorm/dialects/sqlite"
"github.com/simon987/ws_bucket/api"
"os"
"testing"
"time"
)
@ -22,4 +23,5 @@ func TestMain(m *testing.M) {
time.Sleep(time.Millisecond * 100)
m.Run()
_ = os.Remove("test.db")
}

View File

@ -46,6 +46,25 @@ func TestAllocateUploadSlotUnsafePath(t *testing.T) {
}
}
func TestDuplicateUploadSlot(t *testing.T) {
if allocateUploadSlot(api.AllocateUploadSlotRequest{
FileName: "test.png",
Token: "testdupe",
MaxSize: 100,
}).Ok != true {
t.Error()
}
if allocateUploadSlot(api.AllocateUploadSlotRequest{
FileName: "test.png",
Token: "testdupe",
MaxSize: 100,
}).Ok != false {
t.Error()
}
}
func allocateUploadSlot(request api.AllocateUploadSlotRequest) (ar *api.GenericResponse) {
resp := Post("/slot", request)
UnmarshalResponse(resp, &ar)