Switch to s3 multipart uploads for backups

This commit is contained in:
Matthew Penner
2020-10-31 17:47:41 -06:00
parent b8598e90d4
commit 1239b1c0ca
4 changed files with 150 additions and 43 deletions

View File

@@ -185,7 +185,7 @@ func (r *Response) Error() error {
var bag RequestErrorBag
_ = r.Bind(&bag)
e := new(RequestError)
e := &RequestError{}
if len(bag.Errors) > 0 {
e = &bag.Errors[0]
}

View File

@@ -3,8 +3,35 @@ package api
import (
"fmt"
"github.com/pkg/errors"
"strconv"
)
type BackupRemoteUploadResponse struct {
CompleteMultipartUpload string
AbortMultipartUpload string
Parts []string
PartSize int64
}
func (r *Request) GetBackupRemoteUploadURLs(backup string, size int64) (*BackupRemoteUploadResponse, error) {
resp, err := r.Get(fmt.Sprintf("/backups/%s", backup), Q{"size": strconv.FormatInt(size, 10)})
if err != nil {
return nil, errors.WithStack(err)
}
defer resp.Body.Close()
if resp.HasError() {
return nil, resp.Error()
}
var res BackupRemoteUploadResponse
if err := resp.Bind(&res); err != nil {
return nil, errors.WithStack(err)
}
return &res, nil
}
type BackupRequest struct {
Checksum string `json:"checksum"`
ChecksumType string `json:"checksum_type"`