feat: pave V1DocumentPOST
This commit is contained in:
parent
02a65f2c47
commit
c65cf4a211
2 changed files with 74 additions and 7 deletions
58
apirequest/document.go
Normal file
58
apirequest/document.go
Normal file
|
@ -0,0 +1,58 @@
|
|||
package apirequest
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"mime/multipart"
|
||||
"net/http"
|
||||
|
||||
"codeberg.org/vlbeaudoin/voki"
|
||||
"codeberg.org/vlbeaudoin/voki/request"
|
||||
"git.agecem.com/agecem/agecem-org/apiresponse"
|
||||
)
|
||||
|
||||
var _ request.Requester[apiresponse.V1DocumentPOST] = V1DocumentPOST{}
|
||||
|
||||
type V1DocumentPOST struct {
|
||||
Data struct {
|
||||
Bucket string
|
||||
Document *multipart.FileHeader
|
||||
}
|
||||
}
|
||||
|
||||
func NewV1DocumentPOST(bucket string, document *multipart.FileHeader) (request V1DocumentPOST, err error) {
|
||||
if bucket == "" {
|
||||
err = fmt.Errorf("NewV1DocumentPOST requires non-nil bucket name")
|
||||
return
|
||||
}
|
||||
|
||||
request.Data.Bucket = bucket
|
||||
|
||||
if document == nil {
|
||||
err = fmt.Errorf("NewV1DocumentPOST requires non-nil document")
|
||||
return
|
||||
}
|
||||
|
||||
request.Data.Document = document
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
func (request V1DocumentPOST) Complete() bool {
|
||||
return request.Data.Bucket != "" && request.Data.Document != nil
|
||||
}
|
||||
|
||||
func (request V1DocumentPOST) Request(v *voki.Voki) (response apiresponse.V1DocumentPOST, err error) {
|
||||
if !request.Complete() {
|
||||
err = fmt.Errorf("Incomplete V1DocumentPOST 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", request.Data.Bucket), &buf, true, &response)
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue