From d3ad8f4a91db616dfa92aa360da83fe56b3b4074 Mon Sep 17 00:00:00 2001 From: Victor Lacasse-Beaudoin Date: Mon, 18 Dec 2023 17:44:57 -0500 Subject: [PATCH] wip: ajouter handler `V1DocumentsPOST` MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Contient déjà la plupart de la logique autour de `mediaclient.(*MediaClient).UploadFormFiles` --- apihandler/document.go | 46 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/apihandler/document.go b/apihandler/document.go index 844a114..08b2e52 100644 --- a/apihandler/document.go +++ b/apihandler/document.go @@ -2,6 +2,7 @@ package apihandler import ( "context" + "fmt" "net/http" "git.agecem.com/agecem/agecem-org/apirequest" @@ -10,6 +11,51 @@ import ( "github.com/minio/minio-go/v7" ) +/* +V1DocumentPOST permet d'ajouter un object dans un bucket, par multipart/form-data + +WIP +*/ +func (h *V1Handler) V1DocumentsPOST(c echo.Context) (err error) { + var request apirequest.V1DocumentsPOST + var response apiresponse.V1DocumentsPOST + + request.Params.Bucket = c.Param("bucket") + + form, err := c.MultipartForm() + if err != nil { + response.StatusCode = http.StatusBadRequest + response.Message = fmt.Sprintf("Téléversement invalide: %s", err) + + return c.JSON(response.StatusCode, response) + } + if form == nil { + return c.JSON(http.StatusBadRequest, "MultipartForm pointer vers une addresse mémoire nil") + } + + if len(form.File) == 0 { + return c.JSON(http.StatusBadRequest, "Veuillez sélectionner au moins 1 document à téléverser") + } + + for inputName, inputFileHeaders := range form.File { + if inputName == "documents" { + request.Data.Documents = inputFileHeaders + } + } + + if request.Data.Documents == nil { + return c.JSON(http.StatusBadRequest, "Impossible d'obtenir les documents depuis le formulaire") + } + + if !request.Complete() { + return c.JSON(http.StatusBadRequest, "Requête V1DocumentsPOST incomplète reçue") + } + + response.StatusCode, response.Message = h.MediaClient.UploadFormFiles(request.Data.Documents) + + return c.JSON(response.StatusCode, response.Message) +} + // V1DocumentPOST permet d'ajouter un object dans un bucket, par multipart/form-data func (h *V1Handler) V1DocumentPOST(c echo.Context) (err error) { var request apirequest.V1DocumentPOST