Permettre de téléverser plusieurs fichiers à la fois dans admin-upload
#182
2 changed files with 74 additions and 0 deletions
|
@ -12,6 +12,69 @@ import (
|
|||
"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{}
|
||||
|
||||
type V1DocumentPOST struct {
|
||||
|
|
|
@ -1,5 +1,16 @@
|
|||
package apiresponse
|
||||
|
||||
type V1DocumentsPOST struct {
|
||||
Response
|
||||
Data struct {
|
||||
Bucket string
|
||||
Documents struct {
|
||||
Key string
|
||||
Size int64
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
type V1DocumentPOST struct {
|
||||
Response
|
||||
Data struct {
|
||||
|
|
Loading…
Reference in a new issue