Permettre de téléverser plusieurs fichiers à la fois dans admin-upload #182

Merged
vlbeaudoin merged 12 commits from feature/upload-plusieurs-documents into main 2023-12-19 19:50:50 -05:00
2 changed files with 74 additions and 0 deletions
Showing only changes of commit 3b65138337 - Show all commits

View file

@ -12,6 +12,69 @@ import (
"git.agecem.com/agecem/agecem-org/apiresponse" "git.agecem.com/agecem/agecem-org/apiresponse"
) )
var _ request.Requester[apiresponse.V1DocumentsPOST] = V1DocumentsPOST{}
type V1DocumentsPOST struct {
Data struct {
Documents []*multipart.FileHeader `json:"documents"`
}
Params struct {
Bucket string `json:"bucket"`
}
}
func NewV1DocumentsPOST(bucket string, documents ...*multipart.FileHeader) (request V1DocumentsPOST, err error) {
if bucket == "" {
err = fmt.Errorf("NewV1DocumentsPOST requires non-nil bucket name")
return
}
request.Params.Bucket = bucket
if documents == nil {
err = fmt.Errorf("NewV1DocumentsPOST requires non-nil documents")
return
}
for _, document := range documents {
if document == nil {
err = fmt.Errorf("NewV1DocumentsPOST requires non-nil documents")
return
}
}
request.Data.Documents = documents
return
}
func (request V1DocumentsPOST) Complete() bool {
if request.Data.Documents == nil {
return false
}
for _, document := range request.Data.Documents {
if document == nil {
return false
}
}
return request.Params.Bucket != ""
}
func (request V1DocumentsPOST) Request(v *voki.Voki) (response apiresponse.V1DocumentsPOST, err error) {
if !request.Complete() {
err = fmt.Errorf("Incomplete V1DocumentsPOST request")
return
}
var buf bytes.Buffer
if err = json.NewEncoder(&buf).Encode(request.Data); err != nil {
return
}
return response, v.UnmarshalIfComplete(http.MethodPost, fmt.Sprintf("/v1/bucket/%s/many", request.Params.Bucket), &buf, true, &response)
}
var _ request.Requester[apiresponse.V1DocumentPOST] = V1DocumentPOST{} var _ request.Requester[apiresponse.V1DocumentPOST] = V1DocumentPOST{}
type V1DocumentPOST struct { type V1DocumentPOST struct {

View file

@ -1,5 +1,16 @@
package apiresponse package apiresponse
type V1DocumentsPOST struct {
Response
Data struct {
Bucket string
Documents struct {
Key string
Size int64
}
}
}
type V1DocumentPOST struct { type V1DocumentPOST struct {
Response Response
Data struct { Data struct {