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"
|
"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 {
|
||||||
|
|
|
@ -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 {
|
||||||
|
|
Loading…
Reference in a new issue