package handlers import ( "github.com/gofiber/fiber/v3" "lmika.dev/lmika/weiro/services/uploads" ) type UploadsHandler struct { UploadsService *uploads.Service } func (uh UploadsHandler) Index(c fiber.Ctx) error { return c.Render("uploads/index", nil) } func (uh UploadsHandler) New(c fiber.Ctx) error { var req uploads.NewPendingRequest if err := c.Bind().Body(&req); err != nil { return err } res, err := uh.UploadsService.NewPending(c.Context(), req) if err != nil { return err } return c.JSON(res) } func (uh UploadsHandler) UploadPart(c fiber.Ctx) error { guid := c.Params("guid") if guid == "" { return fiber.ErrBadRequest } if err := uh.UploadsService.WriteToPending(c.Context(), guid, c.Body()); err != nil { return err } return c.Status(fiber.StatusAccepted).JSON(fiber.Map{}) } func (uh UploadsHandler) UploadComplete(c fiber.Ctx) error { guid := c.Params("guid") if guid == "" { return fiber.ErrBadRequest } var res struct { Hash string `json:"hash"` } if err := c.Bind().Body(&res); err != nil { return err } if err := uh.UploadsService.FinalizePending(c.Context(), guid, res.Hash); err != nil { return err } return c.Status(fiber.StatusAccepted).JSON(fiber.Map{}) }