mirror of
https://github.com/simon987/ws_bucket.git
synced 2025-12-14 15:19:02 +00:00
Upload slot info endpoint
This commit is contained in:
@@ -79,6 +79,7 @@ func New(db *gorm.DB) *WebApi {
|
||||
|
||||
router.POST("/slot", LogRequestMiddleware(api.AllocateUploadSlot))
|
||||
router.GET("/slot", LogRequestMiddleware(api.ReadUploadSlot))
|
||||
router.GET("/slot_info", LogRequestMiddleware(api.UploadSlotInfo))
|
||||
router.GET("/upload", LogRequestMiddleware(api.Upload))
|
||||
|
||||
api.server = fasthttp.Server{
|
||||
|
||||
@@ -11,6 +11,10 @@ type GenericResponse struct {
|
||||
Message string `json:"message,omitempty"`
|
||||
}
|
||||
|
||||
type GetUploadSlotResponse struct {
|
||||
UploadSlot `json:"upload_slot"`
|
||||
}
|
||||
|
||||
type AllocateUploadSlotRequest struct {
|
||||
Token string `json:"token"`
|
||||
MaxSize int64 `json:"max_size"`
|
||||
|
||||
22
api/slot.go
22
api/slot.go
@@ -166,6 +166,28 @@ func executeUploadHook(slot UploadSlot) {
|
||||
}).Info("Execute upload hook")
|
||||
}
|
||||
|
||||
func (api *WebApi) UploadSlotInfo(ctx *fasthttp.RequestCtx) {
|
||||
tokenStr := string(ctx.Request.Header.Peek("X-Upload-Token"))
|
||||
if tokenStr == "" {
|
||||
tokenStr = string(ctx.Request.URI().QueryArgs().Peek("token"))
|
||||
}
|
||||
|
||||
slot := UploadSlot{}
|
||||
err := api.db.Where("token=?", tokenStr).First(&slot).Error
|
||||
|
||||
if err != nil {
|
||||
ctx.Response.Header.SetStatusCode(404)
|
||||
logrus.WithError(err).WithFields(logrus.Fields{
|
||||
"token": tokenStr,
|
||||
}).Warning("Upload slot not found")
|
||||
return
|
||||
}
|
||||
|
||||
Json(GetUploadSlotResponse{
|
||||
UploadSlot: slot,
|
||||
}, ctx)
|
||||
return
|
||||
}
|
||||
func (api *WebApi) ReadUploadSlot(ctx *fasthttp.RequestCtx) {
|
||||
|
||||
tokenStr := string(ctx.Request.Header.Peek("X-Upload-Token"))
|
||||
|
||||
Reference in New Issue
Block a user