diff --git a/render/templates/forms/Article.tmpl b/render/templates/forms/Article.tmpl index 3b5e9ce..b86ffeb 100644 --- a/render/templates/forms/Article.tmpl +++ b/render/templates/forms/Article.tmpl @@ -2,4 +2,68 @@ - \ No newline at end of file + + + \ No newline at end of file diff --git a/web/app.go b/web/app.go index bdf4810..82e1da4 100644 --- a/web/app.go +++ b/web/app.go @@ -69,6 +69,9 @@ func NewWebApp( admin.Post("/binaries/delete", binaryManageHandler.HandleDelete) admin.Post("/interactions/:id/delete/", adminInteractionHandler.HandleDelete) + adminApi := admin.Group("/api") + adminApi.Post("/binaries", binaryManageHandler.HandleUploadApi) + // Editor editor := app.Group("/editor") editor.Use(middleware.NewAuthMiddleware(authorService).Handle) diff --git a/web/binary_manager_handler.go b/web/binary_manager_handler.go index b84484a..3230a87 100644 --- a/web/binary_manager_handler.go +++ b/web/binary_manager_handler.go @@ -3,6 +3,7 @@ package web import ( "owl-blogs/app" "owl-blogs/app/repository" + "owl-blogs/domain/model" "owl-blogs/render" "sort" "strings" @@ -46,31 +47,48 @@ func (h *BinaryManageHandler) Handle(c *fiber.Ctx) error { } -func (h *BinaryManageHandler) HandleUpload(c *fiber.Ctx) error { +func (h *BinaryManageHandler) saveFileUpload(c *fiber.Ctx) (*model.BinaryFile, error) { file, err := c.FormFile("file") if err != nil { - return err + return nil, err } reader, err := file.Open() if err != nil { - return err + return nil, err } defer reader.Close() content := make([]byte, file.Size) _, err = reader.Read(content) if err != nil { - return err + return nil, err } binary, err := h.service.Create(file.Filename, content) + if err != nil { + return nil, err + } + return binary, nil +} + +func (h *BinaryManageHandler) HandleUpload(c *fiber.Ctx) error { + binary, err := h.saveFileUpload(c) if err != nil { return err } - return c.Redirect("/media/" + binary.Id) } +func (h *BinaryManageHandler) HandleUploadApi(c *fiber.Ctx) error { + binary, err := h.saveFileUpload(c) + if err != nil { + return err + } + return c.JSON(map[string]string{ + "location": "/media/" + binary.Id, + }) +} + func (h *BinaryManageHandler) HandleDelete(c *fiber.Ctx) error { id := c.FormValue("file") binary, err := h.service.FindById(id)