Have got session creation working
This commit is contained in:
parent
18f9f49c0a
commit
036b683eab
10 changed files with 438 additions and 3 deletions
67
handlers/imageedit.go
Normal file
67
handlers/imageedit.go
Normal file
|
|
@ -0,0 +1,67 @@
|
|||
package handlers
|
||||
|
||||
import (
|
||||
"bufio"
|
||||
"io"
|
||||
"log"
|
||||
"net/http"
|
||||
|
||||
"github.com/gofiber/fiber/v3"
|
||||
"lmika.dev/lmika/weiro/models"
|
||||
"lmika.dev/lmika/weiro/services/imgedit"
|
||||
)
|
||||
|
||||
type ImageEditHandlers struct {
|
||||
ImageEditService *imgedit.Service
|
||||
}
|
||||
|
||||
func (ieh ImageEditHandlers) Create(c fiber.Ctx) error {
|
||||
var req struct {
|
||||
BaseUploadID int64 `json:"base_upload"`
|
||||
}
|
||||
|
||||
if err := c.Bind().JSON(&req); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
res, err := ieh.ImageEditService.NewSession(c.Context(), req.BaseUploadID)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
var resp = struct {
|
||||
Session models.ImageEditSession `json:"session"`
|
||||
PreviewURL string `json:"preview_url"`
|
||||
}{
|
||||
Session: res,
|
||||
PreviewURL: res.PreviewURL(),
|
||||
}
|
||||
|
||||
return c.Status(http.StatusCreated).JSON(resp)
|
||||
}
|
||||
|
||||
func (ieh ImageEditHandlers) Preview(c fiber.Ctx) error {
|
||||
log.Printf("Previewing image edit session %v/%v", c.Params("sessionID"), c.Params("versionID"))
|
||||
sessionID := c.Params("sessionID")
|
||||
versionID := c.Params("versionID")
|
||||
|
||||
mimeTime, rw, err := ieh.ImageEditService.LoadImageVersion(c.Context(), sessionID, versionID)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
c.Set("Content-Type", mimeTime)
|
||||
c.Status(http.StatusOK)
|
||||
return c.SendStreamWriter(func(w *bufio.Writer) {
|
||||
rw, err := rw()
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
defer rw.Close()
|
||||
|
||||
_, err = io.Copy(w, rw)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
})
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue