Started working on the view upload page
This commit is contained in:
parent
0a9af9cde8
commit
48f39133d7
18 changed files with 327 additions and 45 deletions
|
|
@ -1,8 +1,15 @@
|
|||
package handlers
|
||||
|
||||
import (
|
||||
"bufio"
|
||||
"io"
|
||||
"log"
|
||||
"net/http"
|
||||
"strconv"
|
||||
|
||||
"github.com/gofiber/fiber/v3"
|
||||
"lmika.dev/lmika/weiro/services/uploads"
|
||||
"lmika.dev/pkg/modash/moslice"
|
||||
)
|
||||
|
||||
type UploadsHandler struct {
|
||||
|
|
@ -10,7 +17,65 @@ type UploadsHandler struct {
|
|||
}
|
||||
|
||||
func (uh UploadsHandler) Index(c fiber.Ctx) error {
|
||||
return c.Render("uploads/index", nil)
|
||||
uploads, err := uh.UploadsService.ListUploads(c.Context())
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
rows := moslice.Batch(uploads, 5)
|
||||
|
||||
return c.Render("uploads/index", fiber.Map{"uploads": rows})
|
||||
}
|
||||
|
||||
func (uh UploadsHandler) Show(c fiber.Ctx) error {
|
||||
uploadIDStr := c.Params("uploadID")
|
||||
if uploadIDStr == "" {
|
||||
return fiber.ErrBadRequest
|
||||
}
|
||||
uploadID, err := strconv.ParseInt(uploadIDStr, 10, 64)
|
||||
if err != nil {
|
||||
return fiber.ErrBadRequest
|
||||
}
|
||||
|
||||
upload, err := uh.UploadsService.FetchUpload(c.Context(), uploadID)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return c.Render("uploads/show", fiber.Map{"upload": upload})
|
||||
}
|
||||
|
||||
func (uh UploadsHandler) ShowRaw(c fiber.Ctx) error {
|
||||
uploadIDStr := c.Params("uploadID")
|
||||
if uploadIDStr == "" {
|
||||
return fiber.ErrBadRequest
|
||||
}
|
||||
uploadID, err := strconv.ParseInt(uploadIDStr, 10, 64)
|
||||
if err != nil {
|
||||
return fiber.ErrBadRequest
|
||||
}
|
||||
|
||||
upload, rwFn, err := uh.UploadsService.OpenUpload(c.Context(), uploadID)
|
||||
if err != nil {
|
||||
log.Print(err)
|
||||
return err
|
||||
}
|
||||
|
||||
c.Set("Content-Type", upload.MIMEType)
|
||||
c.Status(http.StatusOK)
|
||||
return c.SendStreamWriter(func(w *bufio.Writer) {
|
||||
rw, err := rwFn()
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
defer rw.Close()
|
||||
|
||||
_, err = io.Copy(w, rw)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
})
|
||||
|
||||
}
|
||||
|
||||
func (uh UploadsHandler) New(c fiber.Ctx) error {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue