Skip to content

Commit

Permalink
Add an options type for PutObjectPart options
Browse files Browse the repository at this point in the history
  • Loading branch information
donatello committed Feb 6, 2023
1 parent a4305c7 commit 84c2457
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 57 deletions.
40 changes: 19 additions & 21 deletions core.go
Original file line number Diff line number Diff line change
Expand Up @@ -86,32 +86,30 @@ func (c Core) ListMultipartUploads(ctx context.Context, bucket, prefix, keyMarke
return c.listMultipartUploadsQuery(ctx, bucket, keyMarker, uploadIDMarker, prefix, delimiter, maxUploads)
}

// PartUploadReq contains inputs for PutObjectPart
type PartUploadReq struct {
Bucket, Object, UploadID string
PartID int
Data io.Reader
Size int64
Md5Base64, Sha256Hex string
SSE encrypt.ServerSide
CustomHeader, Trailer http.Header
// PutObjectPartOptions contains options for PutObjectPart API
type PutObjectPartOptions struct {
Md5Base64, Sha256Hex string
SSE encrypt.ServerSide
CustomHeader, Trailer http.Header
}

// PutObjectPart - Upload an object part.
func (c Core) PutObjectPart(ctx context.Context, r PartUploadReq) (ObjectPart, error) {
func (c Core) PutObjectPart(ctx context.Context, bucket, object, uploadID string, partID int,
data io.Reader, size int64, opts PutObjectPartOptions,
) (ObjectPart, error) {
p := uploadPartParams{
bucketName: r.Bucket,
objectName: r.Object,
uploadID: r.UploadID,
reader: r.Data,
partNumber: r.PartID,
md5Base64: r.Md5Base64,
sha256Hex: r.Sha256Hex,
size: r.Size,
sse: r.SSE,
bucketName: bucket,
objectName: object,
uploadID: uploadID,
reader: data,
partNumber: partID,
md5Base64: opts.Md5Base64,
sha256Hex: opts.Sha256Hex,
size: size,
sse: opts.SSE,
streamSha256: true,
customHeader: r.CustomHeader,
trailer: r.Trailer,
customHeader: opts.CustomHeader,
trailer: opts.Trailer,
}
return c.uploadPart(ctx, p)
}
Expand Down
11 changes: 3 additions & 8 deletions core_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -875,14 +875,9 @@ func TestCoreMultipartUpload(t *testing.T) {
partID++
data := bytes.NewReader(partBuf[:n])
dataLen := int64(len(partBuf[:n]))
objectPart, err := core.PutObjectPart(context.Background(),
PartUploadReq{
Bucket: bucketName,
Object: objectName,
UploadID: uploadID,
PartID: partID,
Data: data,
Size: dataLen,
objectPart, err := core.PutObjectPart(context.Background(), bucketName, objectName, uploadID, partID,
data, dataLen,
PutObjectPartOptions{
Md5Base64: "",
Sha256Hex: "",
SSE: encrypt.NewSSE(),
Expand Down
34 changes: 6 additions & 28 deletions functional_tests.go
Original file line number Diff line number Diff line change
Expand Up @@ -8414,41 +8414,19 @@ func testSSECMultipartEncryptedToSSECCopyObjectPart() {

var completeParts []minio.CompletePart

part, err := c.PutObjectPart(context.Background(),
PartUploadReq{
Bucket: bucketName,
Object: objectName,
UploadID: uploadID,
PartID: 1,
Data: bytes.NewReader(buf[:5*1024*1024]),
Size: 5 * 1024 * 1024,
Md5Base64: "",
Sha256Hex: "",
SSE: srcencryption,
CustomHeader: nil,
Trailer: nil,
},
part, err := c.PutObjectPart(context.Background(), bucketName, objectName, uploadID, 1,
bytes.NewReader(buf[:5*1024*1024]), 5*1024*1024,
minio.PutObjectPartOptions{SSE: srcencryption},
)
if err != nil {
logError(testName, function, args, startTime, "", "PutObjectPart call failed", err)
return
}
completeParts = append(completeParts, minio.CompletePart{PartNumber: part.PartNumber, ETag: part.ETag})

part, err = c.PutObjectPart(context.Background(),
PartUploadReq{
Bucket: bucketName,
Object: objectName,
UploadID: uploadID,
PartID: 2,
Data: bytes.NewReader(buf[5*1024*1024:]),
Size: 1024 * 1024,
Md5Base64: "",
Sha256Hex: "",
SSE: srcencryption,
CustomHeader: nil,
Trailer: nil,
},
part, err = c.PutObjectPart(context.Background(), bucketName, objectName, uploadID, 2,
bytes.NewReader(buf[5*1024*1024:]), 1024*1024,
minio.PutObjectPartOptions{SSE: srcencryption},
)
if err != nil {
logError(testName, function, args, startTime, "", "PutObjectPart call failed", err)
Expand Down

0 comments on commit 84c2457

Please sign in to comment.